Should I learn Haskell? Why or why not?

Should I learn Haskell? Why or why not?

Attached: haskell-logo.jpg (431x172, 25K)

Other urls found in this thread:

cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf
github.com/wireapp/wire-server
twitter.com/SFWRedditGifs

If it matters, I'm a full time web programmer with over 5 years of experience, I've used php, ruby, C#. Most of my work is front-end now, in ES6 with react.

Why?
It's fun.

Why not?
It won't land you a job.

I know it's a cliche, but learn it because it'll make you a better developer.

You should because every experience makes you a better developer and the Haskell experience will double this.
You shouldn't because unless you're a massive brainlet or only care about market value, it's a waste of time unless you become expert. Also you will be depressed when working with the languages for mere mortals because they won't let you do it the Haskell way.

i second this.

I know prolog. how long will it take me to learn haskell?

>Should I learn Haskell?
Why
>for the greater good
or why not?
>Because beyond contributing to xmonad in different ways it's entirely useless and barely used, when it is used; it's done so as example for F#

Fintech uses plenty of haskell, safety critical specs are mostly haskell these days. It's a niche language like R, but it's worth learning if you don't already know something from the ML family.

Learning functional programming and how to use an ML like type system will both greatly improve your programming ability. As for why you should learn Haskell specifically; is the learning resources. There are introductory books covering those topics in good depth for Haskell and Standard ML, which I actually recommend just as highly. The are other languages that have the important features of Haskell, but those don't have the learning resources.

*Note: I make no mention of Lazy Evaluation because good functional programming books tend to cover that topic.

No. Waste of time. Better do project on language you can land job.

Very true (for those without jobs). I've spent my time doing projects with either Haskell/Elm/Purescript and employers just don't care. I've applied for functional jobs and I'm sure experts have the upper hand. I'm currently doing an internship where they're teaching me JS and iOS development.

For those who have jobs like OP, I agree with the others regarding Haskell (or any FP language) giving you new perspectives. Personally I began to question choices made in other languages.

People constantly seem to argue that FP will become more ubiquitous, not sure that will happen.

Learn OCaml instead. It’s actually used in the real world, has a better compiler and GC, and a great community.

None of this has been true since ghc used llvm. Ghc emits better code than ocaml + multicore sadly still isn't a thing. Modules > typeclasses though.

You shouldn't. The language is impractical and not in demand.
Use functional programming within otherwise imperative programming where it makes sense.

I actually had Haskell come up in an interview for a graduate program at a financial services company. I had to explain a haskell function that arranged members of an array in descending order.

No, GHC converts Haskell to C--, then compiled with GCC or LLVM.

And because Haskell uses lazy evaluation, performance is less predictable than in OCaml.

Also GHC performance is crappy compared to ocamlopt. Also OCaml can be really fast with flambda, sometimes being faster than C.

You're obviously not going to get a job with it so don't bother if that's what you're going for. But Haskell is a great way to learn functional concepts and will introduce you to an entirely different method of programming. Personally, I really enjoyed teaching myself Haskell and use it for a lot of personal projects, but employers don't really care. Also, now I have a hard time working in languages that don't have higher order functions or a decent type system.

Learn it if you want to walk backwards.

Attached: moonwalker.jpg (1063x667, 143K)

Predictability is worse in haskell, true. But you'd struggle to find a language which is better in this regard than ocaml, except for C and clean C++.
Performance, idk about your use-case but we had ghc beating ocaml in pretty much everything except, strangely enough, networking. We're in finance.
Haskell can also be really fast these days when you know what you're doing (and a bit of trial and error), though not as fast as C or ocaml. Thing is, it takes little effort to write haskell that llvm can work its magic on and emit good-enough code, but it takes more effort to write good-enough ocaml. Also with ocaml you're restraining yourself from designing a whole class of systems and the remedy to this doesn't seem to be on the menu just yet. Coq can emit both haskell and ocaml so another huge point of ocaml is moot.

>it takes more effort to write good-enough ocaml.
Not in my experience. Remember that 14-pages paper that talked about The Genuine Sieve of Erathostene? That one: cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf
That paper is literally about implementing a trivial algorithm in a good-enough haskell style.
OCaml doesn’t force you to write FP-style code. You can fall back to procedural if you really need it. Even that is “good-enough ocaml”.

Hey, i'm sure i could write 20 pages on this. And the same for ocaml. These people are paid for the quantity, not quality of their research.
I realise that ocaml is more pragmatic, but in the codebases i've worked with (mostly fintech, but some embedded), there was never reason to use procedural paradigm for systems written in haskell or ocaml. That might just be because we designed the systems and written their specifications (types, if you will) before writing the implementation so we never run into issues. I've seen a trend in ocaml community where considerable portion of community doesn't write .mli before implementing a system, but i hope that this bad habit was gotten rid of.

OP here, I've fucked around with F# some, I guess it's pretty close to haskell

Wire server is written in Haskell

No, learn COBOL.

Whats it even used for?

applications include:
- fizzbuzz
- fibonacci
- sorting a list
and much more

github.com/wireapp/wire-server

>Whats it even used for?
Hello World and FizzBuzz