[Haskell] recursive definitions in Haskell (inductive and coinductive)