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

V>Они имеют тип ()->MyEnum. Это тип ф-ии, возвращающей значение MyEnum.

Этот тезис неплохо бы подтвердить сессией GHCi или что у тебя там установлено.
Ничто не подтверждает, что тип ()->MyEnum.

V>Зря ты рассматриваешь вырожденный случай, добавь туда параметр:

V>
V>data MyNum a = One | Two | Three a
V>

V>И посмотри, что тебе выдаст Three.
Смотри ниже.

EC>>Если добавить аргументов конструкторам значений, то с точки зрения типов ничего не изменится.


V>Ты бы сначала добавил.

Так добавил, результат тот же, тип всё равно один:

*Main> :i MyNum
data MyNum = One Int | Two String
*Main> :t One 1
One 1 :: MyNum
*Main> :t Two "2"
Two "2" :: MyNum


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

EC>>Система типов и внутренний механизм её реализующий — это как бы очень разные вещи.

V>Фиг там. Есть некая вычислительная модель, напр. модель алгебраических типов. И как она реализуется я показывал на листинге результата компиляции IDL. Вот конкретика не важна, а суть должна соответствовать вычислительной модели.


EC>>Механизм знать полезно, но то, что он реализует важнее.


V>В случае алгебраических типов он 1-в-1 реализует "то, что он реализует".


EC>>Я не понимаю почему ты не хочешь провести границу между абстракцией и её реализацией.


V>А я не понимаю твоего упорства — всё более чем прозрачно.


V>И как раз об абстракции и говорил в первом утверждении, что полиморфизм по алгебраическим типам — это классика динамической типизации. Могу усилить — это наилучший на сегодня способ использования динамической типизации.

Давай ты приведёшь хоть какую-то иллюстрацию, только не умозрительную, а вывод интерпретатора или что-то в этом роде из которой будет видно, что в рассматриваемом наме примере участвуют хотя бы 2 хаскельных типа.
А то тип вроде один, а ты говоришь оприведении. К какому типу мы приводим, если он один?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.