anton-k / haskell-wushu-panda

Haskell in practice course

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Haskell wushu panda

Panda pic

Introduction

Welcome to the Haskell in practice series. I have worked in Haskell domain for a while. It was a long time a bit more than a decade. I think there is a gap in learning when people already read the elephant-book or some other intermediate course on Haskell or even the advanced In depth book but they don't know where to start or how to put the knowledge in practice. I hope to help you with that.

The course is a sequence of tiny projects. Each one should run and do something useful or just fun. The learning material is in the readme of the projects. Also there you can find the source code. I encourage you also to retype the code yourself by readme tutorial to see how it works. Also it's cool to invent new ways or maybe dive deeper in some topics yourself.

I hope that you will get the idea that you don't need to type lots of code to do something cool in Haskell. As the language is such a powerful beast. Often my real world projects were under 3-4k of code. And it worked. This is a power of functional programming and Haskell. I hope that it will inspire you to build something great, useful or just fun and enjoyable.

Table of Projects

How to learn Haskell in practice

Haskell is a great language. There is no doubt about it. But also It can be hard to use as it's not only practical but also full of experimental features. This is cool for a researcher (so many things to explore) but for the novice it can be easy to get lost among the features.

I think the best way to learn a tool is to try it out and do something cool with it. We can start a simple project and see how it works and makes our life a bit better.

In this series I hope to help you to learn practical Haskell by studying a number of practical and useful tiny apps. In each app we will study some practical aspect of this great language.

I have lots of experience with Haskell and I'd like to share it with you. Of course it's bound to my tastes. So it's great to watch out for many styles and find the one that suits you. For me I've always wanted to have something done with Haskell and to do it as simple as possible.

Maybe you will disagree on design choices or on implementation details this is also great. Why not to experiment with it and make it different as you go.

My advice to learn the Haskell is

  • find some cool project that will make you work hard for pure fun of it. This way you can learn it faster and be motivated to do it in Haskell. Keep it small so not to drawn in it. Get something cool done that you really need. It can be small command line tool or web crawler, or even some web site template or crypto application. Haskell has wide range of applications. Also it's cool to find a buddy to work with. Together it's harder to be lazy.

  • study lots of code in the public domain that was written by pros (it's great to start with the base/prelude and move to the cool libraries like servant, prettyprinter, mtl)

  • collaborate on public projects or on real job. You will get lots of advices from pros and you will be forced to apply them.

  • try to explain stuff to somebody else on forums/reddit/chats

  • meet haskeller in person (can be a rare bird in your city but it's better to try), go to conferences and hackathons this can expand the horizons.

  • don't hang out on forums/reddit/telegram/email/lists too much. It's better to do something and go back to ask when you really need the help. Although you can find a job with those tools they won't make you a better programmer without application to the real code and you can loose lots of time on it and be discouraged by people who seems to know more than you. Don't let it discourage you. Bit by bit in small steps you will become a pro or just invent a couple of cool apps with this great language.

The course is for a novice who already knows what Monad, Applicative or Typeclassopedia classes are but does not know how to put that knowledge in practice. So I'm not going to explain the basics but try to make it as accessible as I can and demystify some advanced or mundane topics.

About

Haskell in practice course


Languages

Language:Haskell 98.6%Language:Nix 1.3%Language:Makefile 0.2%