Currently they are working out the flavor of the syntax. Looks like it's between Hack and F# syntax.
Provides explicit placeholders. The operation pipes the previous result to the parameter holding the
value |> one(%) |> two(%) |> three(%) value |> one('foo', %) |> two('bar', %) |> three('baz', %)
Provides implicit syntax but could easily be paired with lambdas for more complex pipelines.
value |> one |> two |> three value |> x => one('foo', x) |> x => two('bar', x) |> x => three('baz', x)
My Hot Take
Personally I don't like the Hack Flavor. I mainly crave the implicit syntax from F#. Adding an explicit special character to act as a placeholder seems rather annoying.
However, it sounds like the F# flavor comes with some performance pitfalls and could be more difficult to use with async code.
What do you think?
Top comments (4)
I think Kotlin did it the right way with
.let. The default lambda parameter is
it, but you can change it for clarity.
I tend to be pretty conservative about adding new language syntax because I feel the costs in terms of learning curve and cognitive load aren't always worth it.
I think this feature is one of those that complicates the language without giving us enough utility in return. It makes some code a bit more concise is all.
Maybe I should just go and use Go instead 🙃
F# Syntax feels more intuitive and more like function composition.
But I think it makes code easier to understand for beginners