If you add a new member to a type aren't you usually describing new behavior? Isn't it sensible to have to implement that behavior everywhere?
This brings to mind what I consider to be perhaps the biggest issue with Haskell (I'm not accusing you of this, you've done a great job explaining): due to language expressiveness, overly generic code is far too often a…
How to take over the world as a programming language community: Neophyte: Hello, I do not understand this. Haskeller: You should already know this.
And yet the following is profoundly more intelligible to a wide range of functional programmers: -- Using Elm syntax pipeline : List (Int -> Int) pipeline = [(\x -> x + 3), (\x -> x * 2), abs] applyPipeline : Int -> Int…
Honestly, I think for a lot of people who've used both Haskell and Elm, the answer is pretty clear: lots of Haskell in the wild can be very hard to read and think about, even with significant time invested in it; and…
If you add a new member to a type aren't you usually describing new behavior? Isn't it sensible to have to implement that behavior everywhere?
This brings to mind what I consider to be perhaps the biggest issue with Haskell (I'm not accusing you of this, you've done a great job explaining): due to language expressiveness, overly generic code is far too often a…
How to take over the world as a programming language community: Neophyte: Hello, I do not understand this. Haskeller: You should already know this.
And yet the following is profoundly more intelligible to a wide range of functional programmers: -- Using Elm syntax pipeline : List (Int -> Int) pipeline = [(\x -> x + 3), (\x -> x * 2), abs] applyPipeline : Int -> Int…
Honestly, I think for a lot of people who've used both Haskell and Elm, the answer is pretty clear: lots of Haskell in the wild can be very hard to read and think about, even with significant time invested in it; and…