0xd34df00d 20.03.2012 19:51 Azoth_primary

Кажется, я не понимаю экзистенциальные типы.

Recommended by:

@pooq: моча съела говно

1. superbobry 20.03.2012 19:52 Home5B3EF83C

что именно тебя смущает?

2. 0xd34df00dsuperbobry /1 20.03.2012 19:56 Azoth_primary

Есть дерево выражения — data ExprTree = BinaryNode BiFunc (ExprTree a) (ExprTree a) | UnaryNode UnFunc (ExprTree a) | VarNode String | ConstNode a (если упрощать).
Есть data TaggedTree t = то же самое, но у каждой из четырех нод еще стоит t — мне нужно рядом с узлами хранить кое-какую информацию из них.

Дана функция, делающая из Tree тег. Если Tree — не ConstNode и не VarNode, то она юзает теги нижележащих деревьев.
Есть функция fromET :: (ExprTree a → t) → ExprTree a → TaggedTree a t
Нужно: наиболее красиво и няшно запилить протегивание дерева указанной функцией.

3. superbobry0xd34df00d /2 20.03.2012 19:59 Home5B3EF83C

казалось бы, при чем здесь existentials

4. 0xd34df00dsuperbobry /3 20.03.2012 20:00 Azoth_primary

У меня была мысль представить каждый возможный тип узла как existential с соответствующей функцией получения значения тега, но я нихуя не понял и забил. Щас набросаю тупой вариант и запощу сюда, пожалуй.

5. superbobry0xd34df00d /4 20.03.2012 20:25 Home5B3EF83C

ну йома, existential types это все равно шо интерфейс в жаве или сигнатура модуля в SML / OCaml

6. 0xd34df00dsuperbobry /5 20.03.2012 20:29 Azoth_primary

Ну вот и получается интерфейс, чо.

Do you really want to delete ?