Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

    inl add a b = a + b
    inl f = add 1
    f 2, f 3
is just awesome


That's just normal partial function application, right? Or am I missing something special?


Yes, but I adore the simple syntax.

    inl add a b = a + b
is basically a macro #define add(a,b) a+b

    inl f = add 1
is a macro #define f add(1)

    f 2, f 3
but e.g.

    inl f = add c
would create a closure to capture c. inl would guarantee that the capturing is lexical, not dynamic.

There's no need for the comma operator in args, comma is to create lists.


oops: inl f(x) = add(1,x) of course


It blew my mind when I saw it on K. I just wasn't expecting it.

    add:{x+y}
    f:add 1
    f 2
  3


Similarly, Haskell would be:

    add = (+)
    f = add 1
    f 2
This kind of syntax is great for small code samples or to play in a CLI, but in larger programs more traditional (verbose) syntax works better for me. YMMV.


The syntax, though, is part of a more important point: all functions have one input and one output. This _massively_ simplifies other things.

Also, and this isn’t really an FP point, if you’ve got a lot of positional parameters you’re already Doing It Wrong.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: