Earlier quoted context omitted.
Coming from a love of strong typing (scala) clojure dynamic typing was a real adjustment. One thing I grew to really love is how small my changes were when I’m just adjusting a decidedly brownfield chain of functions that operate on data. With go in place at work, I added a couple fields to a core data type in my business and I ended up with thousands of lines of changes to pipe them everywhere. Doing the correspondi…
The Haskell type `[x] -> [x]` (the equivalent of `List[A] -> List[A]`) tells you an incredible amount about the function. It tells you that the function must calculate a subset of a permutation of the input list. The function cannot be anything else (or else it will crash or hang). In a language with stricter requirements you can omit even the crash/hang caveat. Don't underestimate the amount of information even simp…
Hickey: I value X, Y, Z
Me: Yeah man!
Hickey: We get great consequences A, B, C
Me: Ah yeah, I love programming like that. That's why I love Haskell!
Hickey: That's why Haskell is bad.
Me: err, what!?
> It tells you that the function must calculate a subset of a permutation of the input list
As tromp pointed out, "permutation" is technically incorrect. You mean something like "a list formed only from elements of the elements of the input list, and the particular arrangement is independent of the values of the input list"!
Not sure why you were downvoted though.