7 ms·
Interesting. I've been programming in python for more than 4 years and I'd like to try something different. I took a haskell class back in the day but just the
by miguendes 6y ago
Interesting. I've been programming in python for more than 4 years and I'd like to try something different.
I took a haskell class back in the day but just the basics, didn't even learn monads.
My goal is not to master the language itself but learn enough to make a better programner.
One thing that has been holding me back is the lack of real world examples. I get demotivated when only solving toy problems.
This looks like a great resource. I have heard a lot about Haskell From First Principles but there's too much stuff in there.
- girishso 6y agoYou might want to give a try to Elm. Most of the Haskell goodies but way simpler, except no type classes and too restrictive.
- dmix 6y agoLearning Haskell sideways is a good approach. There are so many usecases in JS as well and Typescript has made it all the better (but not nearly so restrictive).
- cies 6y agoThen PureScript also deserves a mention. It has several frameworks (some akin to the one built in in Elm). If you want to do this in Haskell (which is a lot harder) you may want to look at Miso.
- tasuki 6y ago+1 for Elm to learn Haskell. It is indeed way simpler, and has very friendly error messages. It lets you concentrate on grokking the basics: no side effects, pattern matching, recursion, currying. After some time you start wondering why you have to type `List.map` and `Maybe.map` and `Set.map` when they all do the same thing. Then you'll be ready for some Haskell :)
- miguendes 6y agoThanks for the suggestion. I've heard people suggesting Elm on reddit but in terms of learning materials there isn't much compared to haskell. But I think that shouldn't be much of a problem. I know that Elm works great for front end but how is it for desktop and backend stuff?
- piaste 6y ago> I know that Elm works great for front end but how is it for desktop and backend stuff? It isn't. It's explicitly designed as a purely web front-end language, that's its scope. Of course, many Elm users like to run another ML-family language in the backend as well. Haskell's Servant backend library, the one used in this article, has a project to automatically generate Elm client code [1]. Elixir is popular as well. But in general, I'd say that any backend framework that can provide an OpenAPI spec will work well, as you'll be able to auto-generate most if not all of the Elm client code (which is normally dull work and one of the main complaints about Elm). [1] https://github.com/haskell-servant/servant-elm https://github.com/haskell-servant/servant-elm
- tasuki 6y agoYes, no desktop and backend. It might be possible to use Elm outside of web frontend, but probably wouldn't be much fun. > in terms of learning materials there isn't much compared to haskell. To whet your apetite, see https://elm-lang.org/ https://elm-lang.org/ Then read through the excellent https://guide.elm-lang.org/ https://guide.elm-lang.org/ - not very long but absolutely enough to hit the ground running.
- girishso 6y agoAgreed official elm guide is more than enough to get “started” with real world examples.
- tiew9Vii 6y agoNot used Elm since early 2014 and heard it’s changed a bit since then. Elm was a great Trojan horse. It limited feature set made it quick to learn and get familiar with the syntax. When sufficiently proficient in Elm you then find yourself missing some of the features of Haskell i.e. higher kinder types. At that stage Purescript / Haskell is a natural transition as they feel familiar but with more functionality.
- _query 6y agoTo build some real world web applications check out IHP: https://ihp.digitallyinduced.com/ https://ihp.digitallyinduced.com/ It's a truly batteries-included way to get started with building real world haskell web apps in minutes.
- dmix 6y agoWow, if that matures, ie gets some real world adopt by serious companies it would be the best thing around. Much like using Rust and Haskell for web I'd much prefer deferring as much to something like Vue and the server APIs (no sever side rendering for that yet so I mostly just IRL use nuxt.js for toy projects). Something Servant (Haskell) does a clean job of. But you can never completely do away with static heavy lifting This one takes a more modernized Rails or Elixir's Phoenix approach which is really interesting and looks highly usable. Community size and quality is everything for real life software (something I remember Clojure had early on and now Rust has in spades, best of breed sort of libraries to choose from) so I hope it gets some adoption to see where it goes. I'll give it a shot to toy around with when I get some time.
- anentropic 6y agoStep 1: install nix hmm, no thanks
- justmyname 6y agoInstall nix? Already done. What's the second step?
- wtetzner 6y agoWhy is installing nix any worse than installing some language-specific package manager?
- whateveracct 6y agoNix causes a visceral negative reaction in some people.
- the5avage 6y ago> One thing that has been holding me back is the lack of real world examples. I get demotivated when only solving toy problems. I looked at haskell a few months ago and had a similar problem. While I don't mind the toy problems, all those toy problems have something in common... They can be easily solved with recursion. There are probably patterns to deal with other problems and this would have been more interesting to me. I just had to think to myself: "If all you have is recursion every tutorial looks like a parser" ;)
- chongli 6y agoRecursion is equivalent to iteration. You can solve any problem you like with it. The problem with those tutorials is that they’re trying to do two things at once: 1) teach you Haskell and 2) advocate for Haskell. I’m currently working as a full time assistant for one of the first year computer science courses at my university. This course is taught in a teaching dialect of Racket which does not allow mutation or side effects of any kind. That doesn’t stop the profs from creating assignments with real world applicability such as graffiti stroke recognizers and decision tree learning algorithms. The key is that they’re not trying to make Racket look good, so the patterns of recursion can get pretty ugly at times.
- the5avage 6y ago> Recursion is equivalent to iteration. You can solve any problem you like with it. Maybe my comment was somehow badly written, because you (and the only other reply from chriswarbo) clearly misunderstood me. I know that recursion is equivalent to iteration^^ My point was that some problems fit the one or the other better. Look at fft for example. The algorithm is easy with recursion but hard with iteration. For other problems its the opposite.
- tasuki 6y agoWhich problems are hard to solve with recursion instead of iteration?
- WJW 6y agoI wrote a blog post some time ago on writing a small URL shortener in Haskell at http://www.wjwh.eu/posts/2019-11-01-haskell-shorturls.html http://www.wjwh.eu/posts/2019-11-01-haskell-shorturls.html. Still a toy example, but more "real world" than recursion exercises :)