Создание экземпляров абстрактных типов данных, которые рекурсивно содержат друг друга

Учитывая два типа даты, определенные следующим образом:

data Foo = Foo Bar String
data Bar = Bar Foo String

Как я могу сделать foo и bar такими, чтобы foo было Foo bar "foo" и bar is Bar foo "bar" ?

Что если мы изменим типы на:

data Foo = Foo Bar (MVar String)
data Bar = Bar Foo (MVar String)
5
задан Don Stewart 27 April 2011 в 21:33
поделиться