5 ms·
> I dislike: currying, point-free, monads Don't worry then, that's fine, you just dislike Haskell. I personally really like functional programming but can't s
by brmgb 6y ago
> I dislike: currying, point-free, monads
Don't worry then, that's fine, you just dislike Haskell.
I personally really like functional programming but can't stand Haskell. The style favoured by the community is optimised to be the most impenetrable possible.
You should try Ocaml. The preferred style favours piping to point-free and uses monads sparingly. Currying is everywhere but copious use of named arguments tends to make things simpler.
- ratww 6y agoAh, funny thing: I worked with Haskell professionally for a while. I even enjoy the laziness. My biggest gripe with it is not so much the language itself but the culture: it favours bloated and pompous solutions much in the same way Java/Spring does. Monad Lifting, Lenses, Aspects and FactoryFactories occupy the same space in my head. I guess I just prefer both the simple side of functional and the simple side of imperative. I definitely have to give OCaml a try.
- shpongled 6y agoOCaml/Standard ML are both pretty nice because you can still use mutation, and the languages are significantly simpler than Haskell. My only gripe with them is that there seems to be a culture of having zero type annotations (due to HM), which can make reading other people's code difficult.
- brmgb 6y ago> the languages are significantly simpler than Haskell I don't think that's quite true. Ocaml has plenty of advanced features (the module system, GADT, structural typing in the object system) but the community relationship with them is very different than how the Haskell community uses the language. For the most part, the Ocaml community tends to dislike gratuitous complexity and be non dogmatic (I fondly remember a lens library announcement on which the top comment could be boiled down to "just use mutations"). > My only gripe with them is that there seems to be a culture of having zero type annotations (due to HM), which can make reading other people's code difficult. Interfaces tend to be annotated (mli files) but usually people rely on the tooling to know types inside files. Merlin is a blessing. It is a very fast type-checker which keeps working on incorrect files.
- shpongled 6y agoAh, I have more experience with SML than OCaml, I just kinda (ignorantly) lumped them together. I should put some more time in with OCaml, Merlin sounds nice.
- macintux 6y agoYou’d probably like Erlang. Functional but pragmatic, an imperative core with immutability, native concurrency...it was my introduction to FP and I hope to get another shot at working with it professionally.
- ratww 6y agoYeah! Actually Joe Armstrong's Programming Erlang was my true introduction to FP, got the book when it was released. Lovely language, a shame I never found an opportunity to use it after that.