5 ms·
I appreciate the beauty of the pointfree style but whenever I tried to use it I found that I couldn't read my own code the next day. It seems that my brain is j
by perfunctory 15y ago
I appreciate the beauty of the pointfree style but whenever I tried to use it I found that I couldn't read my own code the next day. It seems that my brain is just hard wired to expect a list of parameters in a function definition.
EDIT: That is, all these years at school I was taught to write f(x) = x^2, not f = (^2).
- eru 15y agoThey should have told you write f = (x -> x^2) or so.
- JadeNB 15y agoI think it's better pedagogically just to acknowledge that, in common mathematical discourse, "the squaring function" doesn't have any symbolic name. Perhaps it's more illustrative to think of, for example, `f(x) = ln(x)` (the value of a function) versus `f = ln` (the function itself); and a good (college) mathematics teacher will make this distinction.
- perfunctory 15y agoThey could also tell me to write (= f (-> (x) (^ x 2))). Then we would all be using lisp and laughing and those few developers who would using that weird infix notation.
- eru 15y agoWhile I like S-Expressions for computers, even in that small example the parenthesis are a bit excessive. Keep in mind that mathematics is mostly written by hand on a black board.
- jerf 15y agoI don't think a Haskeller should try to use point-free code. It's just that if you're refactoring your code and you get it down to the point that you've got thing x = th . in . g x you might as well finish the job and take the x out. What's left should make sense to you if you follow this process and just let it happen. But I feel no shame when I can't go pointfree, especially when pointfree requires crazy hacks to simulate a simple pattern match.
- JadeNB 15y agoSorry, but, aside from the obviously unimportant use of `in` (a reserved word), this gives a different type from what I think you meant: x :: a g :: a -> b -> c in :: c -> d th :: d -> e thing :: a -> b -> e and naïve eta-conversion will give you something that isn't well typed. Probably you meant thing x = th . in . g $ x
- jerf 15y agoYes, thanks.