# Haskell
[[Functional Programming]] [[Programming Languages]] [[Category Theory]]
Haskell is a language that I have learnt in the past, albeit not deeply. I really loved [[Standard ML]] when I went through [[BOOK - Modern Compiler Implementation in ML - Andrew W Appel]]. We started working through this book again with Daniel, him in Haskell, me in [[OCaml]], and the operator overladen style turned me off. Now that my theory is a bit more solid, and [[Doom Emacs]] seems to be a much more pleasant environment, I'm ready to take it up again.
Maybe I could go through an expensive course like [[Monday Morning Haskell]], or find some concrete idea to just get going.
<!-- slide -->[[Monday Morning Haskell]]
## See also
- [[Monday Morning Haskell]]
- [[Monad Transformers]]
## Books
- [[BOOK - Real World Haskell - Bryan O'Sullivan John Goerzen Donald Bruce Stewart]]
- [[BOOK - Parallel and Concurrent Programming in Haskell - Simon Marlow]]
A self-published book with a lot of examples to learn [[Optics (FP)]]. I started going through it, but stopped at the end of the [[Lenses]] chapter.
- [[BOOK - Optics by Example]]
50$! But seems like a lot of practical applications of commonly found abstractions: applicative, combinator, monadic DSL, monad transformer, type-level data.
- [Abstractions in Context](https://williamyaoh.gumroad.com/l/CLyzT)
A WIP book that seems quite cool:
- [Production Haskell by Matt Parsons [Leanpub PDF/iPad/Kindle]](https://leanpub.com/production-haskell)
## Links
A really really long guide about all the things you need to know about [[Haskell]], and really not just for starting.
- [What I Wish I Knew When Learning Haskell 2.5 ( Stephen Diehl )](http://dev.stephendiehl.com/hask/)
A much shorter version of a similar article:
- [Things software engineers trip up on when learning Haskell | William Yao](https://www.williamyaoh.com/posts/2020-04-12-software-engineer-hangups.html)
A website that contains a big list of all the [[Category Theory]] inspired [[Abstraction|abstractions]] that are commonly used in [[Haskell]].
- [Typeclassopedia - HaskellWiki](https://wiki.haskell.org/Typeclassopedia)
A list of [[Databases]] libraries for [[Haskell]]:
- [Which type-safe database library should you use? | William Yao](https://www.williamyaoh.com/posts/2019-12-14-typesafe-db-libraries.html)
Apparently [[OpalEye]] is a good library, that uses [[Profunctors]].
In general [[William Yaoh]] has quite the nice [[Blog]] about Haskell:
- [Welcome to all those learning Haskell | William Yao](https://www.williamyaoh.com/)
## Courses
- [https://typeclasses.com/courses](https://typeclasses.com/courses)
- [[Monday Morning Haskell]]
## Tools
`hlint` suggest different improvements to haskell code. I wonder if there is an automatic integration into [[Doom Emacs]].
- [GitHub - ndmitchell/hlint: Haskell source code suggestions](https://github.com/ndmitchell/hlint)
- [[Monday Morning Haskell]]
[Haskell program coverage - HaskellWiki](https://wiki.haskell.org/Haskell_program_coverage)