Haskell での 2 つのデータ型の変換について質問があります。
次の 2 つのデータ型を検討してください。
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
ストリームの 2 つの表現間で変換する
私が最初に問題を抱えているのは Stream データ型です。これは再帰的なデータ型であることがわかりますが、基本的なケースがないため、これがどういうわけか無限であり、どうすればストリーム データ型を作成できるのか疑問に思います。さらに、Stream2 のコンストラクターは、フィールドの 1 つが Stream2 型のものでもあるレコード構文で指定されます。のような質問があったことは理解しています。
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
しかし、この質問からの答えを私の特定の混乱にどのように適用できるかわかりません。