[Haskell-cafe] using the same data structure on a type level and as a value