Re[37]: Проблемы организации OR-мапинга
От: EvilChild Ниоткуда  
Дата: 28.04.09 16:27
Оценка:
Здравствуйте, vdimas, Вы писали:

V>В этом примере One, Two — конструкторы алгебраического типа. Каждый из них конструирует обобщенный тип MyNum, заворачивая в него пустой тупл.

Какой ещё обобщённый тип? Т.е. там есть ещё и его конкретизации? GHCi считает иначе:

*Main> :t One
One :: MyNum
*Main> :t Two
Two :: MyNum

По его мнению One и Two имеют одинаковый тип — MyNum, что можно увидеть парой строк выше.
Нет там больше никаких других типов.
V>Случай вырожденный, размеченное объединение для всех своих значений состоит из собс-но кода разметки и ничего более, т.е. такое использование близко к enum из C++ или C#.
Если добавить аргументов конструкторам значений, то с точки зрения типов ничего не изменится.

V>Да, алгебраические типы — очень удобная модель как раз для тех задач, где мы сегодня используем динамическое приведение в языках без оного. Внутренний механизм идентичен (даже для Хаскеля), но степень контроля компилятором значительно выше.

Система типов и внутренний механизм её реализующий — это как бы очень разные вещи.
Механизм знать полезно, но то, что он реализует важнее.
Я не понимаю почему ты не хочешь провести границу между абстракцией и её реализацией.

Надо бы это обсуждение в ДП снести — может хардкорные функциональщики подтянутся.
now playing: Gui Boratto — Beluga
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.