Dans Haskell, vous pouvez effectuer les opérations suivantes:types récursifs dans Mutually OCaml
Prelude> data Foo = Foo Bar; data Bar = Bar Foo
Comment pouvez-vous faire la même chose en OCaml? J'ai essayé:
___
# type foo = Foo of bar;; type bar = Bar of foo;;
Error: Unbound type constructor bar
Est-il même possible de définir des types de données mutuellement récursifs dans OCaml? Si non alors pourquoi?
Comparer les définitions de données pour laisser des expressions: les types de données réciproquement réciproques correspondent à l'utilisation de let rec
(ou mieux à type rec
faute d'une meilleure expression). Quels sont les avantages de pouvoir définir des types de données mutuellement récursifs? Mon exemple de foobar est trivial. Pouvez-vous penser à des utilisations non triviales de types de données mutuellement récursifs?
en fait, votre deuxième définition de type ne fonctionne pas, il dira que la définition de type est cyclique. La méthode correcte serait 'type 'a t = Stream de (unité -> (' a * 'a t) option)' – ivg
Oh, whoops! Ouais, n'a pas vérifié dans l'interprète. Fixé maintenant, merci. –