J'ai une question concernant la conversion entre deux types de données dans Haskell.Conversion entre deux types de flux
Considérez ce qui suit deux types de données
data Stream a = Cons a (Stream a) data Stream2 a = ST {shead :: a, stail :: Stream2 a}
Q2: Ecrire
sToS2 :: Stream a -> Stream2 a s2ToS :: Stream2 a -> Stream a
qui convertissent entre les deux représentations de flux
La première chose que j'ai du mal avec est le type de données Stream, Nous pouvons voir c'est une récurrence mais il n'y a pas de cas de base, ce qui me fait me demander si c'est en quelque sorte infini et comment je pourrais créer un type de données. De plus, le constructeur de Stream2 est donné en syntaxe d'enregistrement où l'un des champs est également quelque chose de type Stream2. Je comprends qu'il y avait une question similaire à temps où
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
mais je ne suis pas sûr que je peux appliquer les réponses de cette question à ma confusion particulière.
Merci de votre réponse, je suis en train de donner la mise en œuvre pour les deux fonctions sToS2 :: Stream -> Stream2 un s2ToS :: stream2 a -> Diffuser un Lorsqu'il convertit entre les deux Types de données. –
@Maxtwelve Je sais, cette réponse est un travail en cours. Voir la dernière édition. –
Nous vous remercions de votre réponse. L'opérateur Contre peut-il être utilisé pour un type de données qui n'est pas une liste? Peut-il être lu de la même manière que dans x est la tête et xs est la queue du type de données Stream? –