Example:
(defn do-stuff [params-map]
(->
(build-object params-map)
(do-thing-with-object)
(extract-thing)
(format-thing)))
I'm not sure why you'd choose Clojure to get away from things like |>. cout << "foo";Doesn't seem fair to shut down this proposal because you happen to write and work with imperative code, a style that Javascript and modern abstractions are moving away from.
In fact, the Javascript hack to get a pipeline-like style is to make some opaque wrapper object that you can chain method calls onto like `_.chain(a).b().c().d().value()` in Lodash, when all you wanted was a chain of function application.
`|>`, `<|`, composition operators, and friends would all be welcome complements to the Javascript code bases I've worked with in the last few years.
## RamdaJS `_.pipe(b,c,d)(a)` // left to right
# But why are we inventing so many ways of doing forward, backward function application and composition.
Aside: I've never found an application of lodash `_.chain` that couldn't be expressed in a better way.
attrs
|> bounded('age', 1, 100)
|> format('name', /^[a-z]$/i)
|> Person.insertIntoDatabase
This reminds me of those "Perl Poetry" code snippets from 2001.This seems to me to be a case of "just because we can, doesn't mean we should."
On top of that, there are also "transpiler folks": Ruby |> CoffeeScript, C#/F# |> TypeScript, etc...
The classical Javascript programmer might be the last of a dying breed.
Javascript's beauty lies in its versatile simplicity. Can we just leave these sorts of things to systems programming languages like C++? I came to javascript because of its lack of cruft, but if libraries start adopting this then I'll be forced to put it in my code as well. If that happens then I'll probably leave for nim or clojure, though that's not preferable.