我有一个关于在 Haskell 中的两种数据类型之间转换的问题。
考虑以下两种数据类型
data Stream a = Cons a (Stream a) data Stream2 a = ST {shead :: a, stail :: Stream2 a}
Q2:写
sToS2 :: Stream a -> Stream2 a s2ToS :: Stream2 a -> Stream a
在流的两种表示之间转换
我遇到的第一件事是 Stream 数据类型,我们可以看到这是一个递归数据类型,但没有基本情况,这让我想知道这是否是无限的,以及如何创建流数据类型。此外,Stream2 的构造函数以记录语法给出,其中字段之一也是 Stream2 类型。我知道有一个类似于 time where 的问题
data Ab = A | B
data Cd = C | D
fromAb :: Ab -> Cd
fromAb A = C
fromAb B = D
toAb :: Cd -> Ab
toAb C = A
toAb D = B
但我不确定如何将这个问题的答案应用于我的特殊困惑。