полиморфные функции в Qi
От: Аноним  
Дата: 09.04.09 17:23
Оценка:
Я правильно понимаю, что в Qi полиморфные функции запрещены? Т.е. следующий код выдает ошибку:
(define f {number --> number}
X -> (+ X 1))

(f 1)
==> 2 : number

(define f {(list number) --> (list number)}
[X | Xs] -> [X X | Xs])

(f [1 2])
==> [1 1 2] : (list number)

(f 1)
==> type error


В Haskell подобная запись также запрещена?
Re: полиморфные функции в Qi
От: deniok Россия  
Дата: 09.04.09 17:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В Haskell подобная запись также запрещена?


В Хаскелле есть два типа полиморфизма: параметрический, когда реализация не зависит от типа, и ad hoc, реализуемый через механизм классов типов. То, что здесь описано, относится ко второму случаю и может быть реализовано через классы типов. Только на фиг это не нужно, поскольку ничего общего между f над числами и f над списками не видно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.