As for the Java bashing in the beginning I'm not saying Java is anywhere near the expressive power of Haskell but many people think different things based on Java because of features they either don't know about, outdated libraries used, or experiences with older versions and codebases.<p>For example most don't know that Java actually does have macro like capabilities through APT (annotation processor that will work automagically I might add). Some might say ewww its not macros but then again annotation processing might just be 80/20 good enough (aka what OCaml learned with ppx vs camlp) and that Java now sort of has traits and that its code swapping is actually fairly good (jrebel). There are even sadly people that don't know Java has lambdas, and even some (usually C++ dudes) that don't know it has generics.
Most don't even know that you can combine interfaces with generic types as in: `<T extends Comparable & Serializable> void someFunc(T t)`.<p>Yes Java is not Rust, Haskell or even OCaml in expressiveness but it certainly is more powerful than Golang and definitely compiles fast (albeit starts up slow).<p>That being said OCaml is still my favorite. Compiles fast and easier for me to understand. Super mature and lots of companies use it.
That's not really the Sieve of Eratosthenes. The list data structure is not well suited for the algorithm. See [1] for a proper discussion. As someone who wants to write Haskell(and loves it) for code with mathematically well defined guarantees, the propagation of such examples, where the guarantees or behavior is not clear to the author, is not helpful.<p>[1]: <a href="https://www.cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf" rel="nofollow">https://www.cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf</a>
I got started with Haskell recently, and I'm really regretting not having picked it up earlier. Most of what I knew about types came from C, C++, or Java; so it's a big leap.<p>I've been using Haskell for Mac IDE [0] while experimenting, and it's been great fun.<p>The thing that prompted me to give Haskell a a try was this video [1] of a guy using Haskell to generate Elm types, in order to maintain consistent types across the stack. This idea captivated my interests. I'm confident that GraphQL and Relay, or something along those lines, is gonna be the future.<p>My experience so far has been that Elixir feels more welcoming and beginner friendly. There's nothing wrong with the Haskell community (or my limited interactions with it so far), but so far it's just felt a bit drier.<p>[0] <a href="http://haskellformac.com/" rel="nofollow">http://haskellformac.com/</a><p>[1] <a href="https://www.youtube.com/watch?v=sh4H8yzXnvw" rel="nofollow">https://www.youtube.com/watch?v=sh4H8yzXnvw</a>
Don't know about Haskell, but what really got me (a long time CSharp programmer) into functional programming was this awesome site [1] (and a man behind it with his awesome talks) - which is focused on core aspects of FP (applicable in most languages nowadays) in real-world applications.<p>[1] <a href="https://fsharpforfunandprofit.com/" rel="nofollow">https://fsharpforfunandprofit.com/</a>
I really want to warn people from using long-to-compile languages in big projects. And by long, I mean longer than C++. From what I heard Haskell has compile time issues.<p>You will regret it once your in that position and it is hard to get out of once your there.
I've spent quite a bit of time with Haskell, and all the beginner text like this link are easy to grok, but where I've constantly come up short is trying to write an app with, for example, a configuration and a database connection. Having multiple levels of Monad transformers just confuses me and I never get anywhere useful. Something like:<p>App MaybeT IO (StateT IO (EitherT IO Text SomeRecord))<p>Or something. I haven't figured this out.
There are some book recommendations at the bottom of the article, which are missing the (IMHO) latest-and-greatest introductory resource to Haskell: the book Haskell from First Principles.<p><a href="http://haskellbook.com" rel="nofollow">http://haskellbook.com</a>
I love Haskell, but if you hate Java, but still want to leverage the nice Java ecosystem, (libs, IntelliJ, JVM, tooling, etc) try Kotlin! :)
<a href="https://kotlinlang.org/" rel="nofollow">https://kotlinlang.org/</a>
Started learning Haskell just a couple of weeks ago. My only complaint with the language so far is that I cannot have the same name for a field in two records in the same module.<p>Other than that it is amazing the confidence it gives me; if it compiles it works (r).
This may sound (and probably is) quite superficial, but I am immediately put off by any language that uses syntax like this: foldr' (+) :: Num t1 => t1 -> [t1] -> t1
Why? Because of things like => and -> are just a pain to write all the time and make you chase all over the keyboard, even more so on non-english keyboards. Just my very personal preference of course, but still...
How bad is it looking at the examples and thinking "I love that lambda symbol as a prompt. I want"<p>I have to revisit my base setup soon. The 1990s wants its bash_profile back
I tried haskell queues a while ago - under the advice of a friend and compared with a straightforward C++ queue - it was about 100x slower. Abandoned the idea.
I taught myself Haskell because people say it improves you as a programmer. I didn't see that, but I have a math PhD so maybe I'm just too familiar with abstract types to gain new insight from Haskell.<p>As a language, it's sterile. You can tell it was designed by committee.