Functional programming in Haskell - Part 1¶
| haskell | functional programming |
UPD (2018-0114): I put this MOOC on hold. Unfortunatelly, my plan has been changed and I have decided to stop doing this course due to overload on other directions. But this particular course is cool and teacher is cool. I highly recommend it.
These notes are related to MOOC Stepik cource “Функциональное программирование на языке Haskell”. This course is in Russian language and I decided to make notes. It might be useful for me in future or for somebody else.
General thoughts which are not related to this course¶
In general, I’ve been doing programming language ecosystem discovery before jump into it. And here is the initial findings:
- What I Wish I Knew When Learning Haskell by Stephen Diehl - it’s a huge writeup with tons of information.
- State of the Haskell ecosystem - it’s a big report about ecosystem
- Educational resources - this part is especially important for beginners
- How I Start. Haskell With Chris Allen - Tutorial “how to write a package in Haskell and interact with the code inside of it.”
- Learn Haskell, by Chris Allen - advices
- Blog: “Haskell for all” by Gabriel Gonzalez. Gabriel blogs a lot about Haskell. But the next post might be interesting for beginners:
- Exercism - Haskell - Exercism is an online platform designed to help you improve your coding skills through practice and mentorship
- The Haskell Tool Stack - Stack is a cross-platform program for developing Haskell projects
- Haskell Docker image
- Cheat Sheets
- Book “Learn You a Haskell for Great Good!” by Miran Lipovača. This book is very cool if you’d like to know basics. I read 10 of 15 chapters and I am very satisfied.
Development environment for this course¶
Right now I do not want to concentrate my attention on Haskell build tools. Also, I know that people do not recommend using Haskell Platform (see here). That’s why I’ve decided to use docker image.
docker run -it --rm haskell:8
or you can mount current folder (assuming with source code) and run ghci
or ghc
from the container
docker run -it --rm -v $(pwd):/home haskell:8 /bin/bash
This approach is not perfect, but now you can avoid build tool issues.