4 ms·
The best way is to try and build a web app and learn along the way. Here's the stack I use for all my Haskell web apps: - Stack to manage the project and depen
by alexmingoia 7y ago
The best way is to try and build a web app and learn along the way. Here's the stack I use for all my Haskell web apps:
- Stack to manage the project and dependencies.
- WAI and Warp to construct your own bare bones web app (see https://broch.io/posts/build-your-own-wai-framework/ https://broch.io/posts/build-your-own-wai-framework/). I don't like frameworks like Yesod or Spock because I like to keep it simple.
- blaze-html (https://hackage.haskell.org/package/blaze-html https://hackage.haskell.org/package/blaze-html) for constructing HTML.
- selda (https://selda.link https://selda.link) for PostgreSQL/SQLite interface (it might be too much for beginners, but there's other modules like postgres-simple).
- wai-extra for form/file upload parsing, gzip, and other basic middleware.
- wai-middleware-static for serving static files
- aeson for JSON encoding/decoding
This stack is what I use for building webapps with Haskell. If you're building JSON REST APIs you might want to look into Servant. I haven't used it personally but I hear good things.
I strongly recommend learning the basics of Functors, Applicatives, and Monads before venturing into building applications: See http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html http://adit.io/posts/2013-04-17-functors,_applicatives,_and_... and http://adit.io/posts/2013-06-10-three-useful-monads.html http://adit.io/posts/2013-06-10-three-useful-monads.html If you know how Functors, Applicatives, and Monads work then you can understand almost everything about Haskell.
Good luck! Feel free to email me if you have questions.