News for hackers. Stuff that matters.
Re:Microfeatures I'd like to see in more languages by mikepurvis on Thursday January 05, 2023 @04:57PM (#34267399)
Chaining without nesting.
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-...