Re[31]: Какой полиморфизм используется в ФЯ?
От: Аноним  
Дата: 09.11.04 06:26
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>А эрланг — это динамически типизированный язык.

"Динамически типизированный" и бестиповый — это одно и то же.

А>>Вот это

>>> poly_function( { A, B } ) -> ...;
>>> poly_function( [ A, B ] ) -> ...;
А>>не полиморфная фунция.
G>Неправильно. Это — полиморфная функция.
Повторюсь. Полиморфная функция-функция,применимая к объектам разных типов. В эрланге все функции имеют один тип аргумента — терм.

G>
G>::MyType = MyTuple Int Int | MyList [Int]

G>Funct:: MyType -> Int
G>Funct ( MyTuple a b ) = a
G>Funct ( MyList [ a, b ] ) = a
G>

Вы наверное удивитесь, если я скажу, что это тоже не полиморфная функция? Посмоторите на её сигнатуру.
G> в "бестиповом" эрланге можно добавить такие же ограничения на типы элементов.
А после этого он превратится в типизированный.

Полиморфизм нужен чтобы обходить ограничения, накладываемые системой типов. Если никаких
ограничений нет, значит нет и типов и полиморфизм ни к чему.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.