LINUX.ORG.RU

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

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

`map id :: [a] -> [a]`, данный тип будет выведен или из типа который передан в функцию [1,2,3::Int], напр, или выведен если известно где данная функция использована, т.е. через результирующий тип.

что было раньше (с monomorphism restriction): map id [1,2,3] это Num a => [a] -> [a], что не хватает для вывода. В этом случае в ghci срабатывает default typing rules, для целых это будет Integer, он и подставится.

что сейчас, без monomorphism restriction:

Prelude> :t map id [1,2,3]
map id [1,2,3] :: Num b => [b]
Prelude> map id [1,2,3]
Prelude> :t it
it :: Num b => [b]

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

`map id :: [a] -> [a]`, данный тип будет выведен или из типа который передан в функцию [1,2,3::Int], напр, или выведен если известно где данная функция использована, т.е. через результирующий тип.

что было раньше (с monomorphism restriction): map id [1,2,3] это Num a => [a] -> [a], что не хватает для вывода. В этом случае в ghci срабатывает default typing rules, для целых это будет Integer, он и подставится.

что сейчас, без monomorphism restriction:

Prelude> :t map id [1,2,3]
map id [1,2,3] :: Num b => [b]
Prelude> :t it
it :: Num b => [b]

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

`map id :: [a] -> [a]`, данный тип будет выведен или из типа который передан в функцию [1,2,3::Int], напр, или выведен если известно где данная функция использована, т.е. через результирующий тип.

что было раньше (с monomorphism restriction): map id [1,2,3] это Num a => [a] -> [a], что не хватает для вывода. В этом случае в ghci срабатывает default typing rules, для целых это будет Integer, он и подставится.

что сейчас, без monomorphism restriction:

Prelude> :t map id [1,2,3]
map id [1,2,3] :: Num b => [b]