Re:Microfeatures I'd like to see in more languages
by mikepurvis on Thursday January 05, 2023 @04:57PM
(#34267399)
Chaining without nesting.
[ Parent
| on HN ]
Re:Microfeatures I'd like to see in more languages
by whatshisface on Thursday January 05, 2023 @04:59PM
(#34267430)
If you mean without closing parentheses, I think you can also do that in languages like Haskell with non-parenthetical function calls.
Re:Microfeatures I'd like to see in more languages
by mikepurvis on Thursday January 05, 2023 @05:03PM
(#34267488)
I'm not a Haskell user, but my experience with this in the Nix language is a bit mixed. It definitely works sometimes, but then you get a pileup of parenthesis nesting anyway, because the default is greedy and you have to control which functions get which arguments.
Re:Microfeatures I'd like to see in more languages
by nine_k on Thursday January 05, 2023 @07:02PM
(#34268893)
Don't $ signs work in Nix the way the work in Haskell?
E.g. https://mmhaskell.com/blog/2021/7/5/function-application-usi...
Re:Microfeatures I'd like to see in more languages
by mikepurvis on Friday January 06, 2023 @09:03AM
(#34274630)
If so, I've never seen that style used or documented.
Re:Microfeatures I'd like to see in more languages
by pavon on Thursday January 05, 2023 @07:33PM
(#34269199)
It also allows you to invert the order of the calls so they are written in the order they occur. Instead of paint(sand(cut(measure(wood)))), you can write wood | measure | cut | sand | paint, which is easier to read, especially if it splits over multiple lines or has additional arguments:
paint(sand(cut(measure(wood, 12), 40, :WZ), 220), :red)
wood | measure(12) | cut(40, :WZ) | sand(220) | paint(:red)
IIRC you can do that in Haskell as well, but I forget the name of the feature. Many OOP libraries have started to adopt a chained method call style similar to this, but it is nice to be able to do with any function.
Re:Microfeatures I'd like to see in more languages
by wbadart on Thursday January 05, 2023 @11:01PM
(#34270803)
In Haskell, if all the functions in the pipeline are pure, I'd probably write that as
wood
& measure 12
& cut 40 WZ
& sand 220
& paint Red
See https://hackage.haskell.org/package/base-4.17.0.0/docs/Data-...