I can't speak authoritatively but I will say that this kind of a change is 
unlikely to take place. The behavior of that function is pretty intrenched 
both in Elm and far before in Haskell. However as @maxime mentioned it's 
really easy to define your own operator of use the `|>` operator to 
accomplish what you want. 

On Thursday, June 2, 2016 at 6:39:09 PM UTC-6, Ian Mackenzie wrote:
>
> I realize that the window for large breaking changes to the Elm language 
> and libraries is rapidly closing (if it's not closed already), and perhaps 
> the whole backtick-vs-pipeline discussion has been beaten to death already, 
> but I've been thinking for a while that we might just be able to have our 
> cake and eat it too if we changed the way backticks work so that 
> a `foo` b
> was equivalent to
> foo b a
> instead of the current
> foo a b
>
> If at the same time Task.andThen etc. had their argument orders flipped 
> (as previously discussed at length),
> andThen : (a -> Task x b) -> Task x a -> Task x b
> then you could continue using andThen as an infix operator just the same 
> as always (since in this case the two changes would cancel out), but you 
> could now *also* use pipelining with |> in the natural way; to take the 
> example from the Task documentation,
> succeed 2 `andThen` (\n -> succeed (n + 2))
> would be equivalent to
> succeed 2 |> andThen (\n -> succeed (n + 2))
> or the 'plain' version
> andThen (\n -> succeed (n + 2)) (succeed 2)
> (except for perhaps associativity issues - I confess I haven't worked that 
> through).
>
> It seems to me this could resolve the conflict between providing 
> "pipeline-friendly" and "backtick-friendly" functions since the same rule 
> (put the data structure last!) would work in both cases. In fact, I suspect 
> *all* infix operators could benefit from the flipped-argument treatment, 
> so for instance
> x / y
> would map to
> (/) y x
> Then you could do things like
> List.map ((/) 2) [2, 4, 6] == [1, 2, 3]
> which is currently valid syntax but returns [1, 0.5, 0.333] instead; if 
> you happened to love backticks you could even do
> [2, 4, 6] `List.map` ((/) 2) == [1, 2, 3]
> which, if nothing else, should look pretty familiar to those coming from 
> traditional object-oriented languages.
>
> Thoughts? Are there some nasty unintended consequences I've missed, or 
> some Elm associativity or other syntax rules that make this impractical? Or 
> is it just too late to make this disruptive a change? I apologize if this 
> has been proposed before - I looked through the old conversations about 
> backticks vs pipelines and couldn't find any mention of this particular 
> solution.
>
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to