История изменений
Исправление 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]