LINUX.ORG.RU

История изменений

Исправление qnikst, (текущая версия) :

Там имелось в виду, что было бы хорошо иметь с одним именем несколько функций, которые подбирались бы в зависимости от параметра. То есть + :: Int -> Int -> Int = ...; x :: Int -> Float -> Float = ...

Ясно, в хацкеле для классы типов служат для этого:

class Num a where (+) :: a -> a -> a

Естественно сложить float с Int не удастся, но однинаковые - вполне.

В ML насколько я понимаю есть параметризируемые модули, которые решают аналогичную проблему, т.е. по типу подбирается операция из словаря для данного типа.

Не до конца понял пример с объединением типов, так что воздержусь от комментирования пока.

Исправление qnikst, :

Там имелось в виду, что было бы хорошо иметь с одним именем несколько функций, которые подбирались бы в зависимости от параметра. То есть + :: Int -> Int -> Int = ...; x :: Int -> Float -> Float = ...

Ясно, в хацкеле для классы типов служат для этого:

class Num a where (+) :: a -> a -> a

В ML насколько я понимаю есть параметризируемые модули, которые решают аналогичную проблему, т.е. по типу подбирается операция из словаря для данного типа.

Не до конца понял пример с объединением типов, так что воздержусь от комментирования пока.

Естественно сложить float с Int не удастся, но однинаковые - вполне.

Исходная версия qnikst, :

Там имелось в виду, что было бы хорошо иметь с одним именем несколько функций, которые подбирались бы в зависимости от параметра. То есть + :: Int -> Int -> Int = ...; x :: Int -> Float -> Float = ...

Ясно, в хацкеле для классы типов служат для этого:

class Num a where (+) :: a -> a -> a

В ML насколько я понимаю есть параметр из убедился модули, которые решают аналогичную проблему, т.е. по типу подбирается операция из словаря для данного типа.

Не до конца понял пример с объединением типов, так что воздержусь от комментирования пока.

Естественно сложить float с Int не удастся, но однинаковые - вполне.