Learn Haskell by implementing of type systems