[Динамик не нужен] Анонимные алгебраические типы.
От: dotneter  
Дата: 27.04.11 16:09
Оценка: 2 (1)
Давече господину Воронкову Василию был задан вопрос, зачем нужен динамик.
Что бы возвращать разные типы из функции в записимости от входящих параметров, отвечает он.
def foo(x): if x == 0 then 0 else "bar" end


Я предлагаю статически типизированое решение, что то похожее на
let foo x = if x == 0 then 0 else "bar" end
foo :: int -> int | string

На что он делает два утверждения
а) действительно разобраться в том, что такое "алгебраический тип" и почему приведенный вами код никакого к ним отношения не имеет.
б) почитать о том, что такое система типов и почему приведенный вами код является классическим (см. того же Пирса) примером кода, который не пропустит любая система типов.

Насколько я понимаю, до сих пор эти высказывания в силе.
Интересует достоверность высказывания б). Может ли кто объяснить не ссылаясь на священые писания почему это так. Я умных книжек не читал поэтому совершено не вижу в чем тут может быть проблема, какая разница один тип или несколько, плюс мне видится это это вполне реализуемое как сахар поверх какого нибудь
type IntString = X of int | Y of string


Так же можно обсудить, общую здравость идеи зависимости сигнатуры функции от входящих параметров.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.