5 ms·
Can't speak for nim, but Clojure has a near-exact feature which is used all over the place, the thread-first and thread-last macros. Example: (defn do-stu
by edgyswingset 11y ago
Can't speak for nim, but Clojure has a near-exact feature which is used all over the place, the thread-first and thread-last macros.
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 |>.
- wnfewnlkew 11y agoClojure is a functional language, so it meshes well with the rest of the syntax, but in javascript's case it's just syntax bloat. It's going to be really jarring in the middle of regular imperative code, and it's not going to be too far removed from cout << "foo";
- danneu 11y agoWhether `|>` would mesh with your code depends on the code that's already there. 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.
- takle 11y ago# Why not ## Lodash `_.flow(b,c,d)(a)` // left to right `_.compose(d,c,b)(a)` // right to left `_.flowRight(d,c,b)(a)` // right to left `_.backflow(d,c,b)(a)` // right to left ## 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.
- bpicolo 11y agoElixir has this exact feature. I'm sure it's not the first language to either.
- bitwalker 11y agoF#/OCaml too, probably all the ML variants actually.