some notes about haskell types