https://www.zzgu.io/posts/haskell-function/