Мне интересно, почему :sprint
сообщает xs = _
в этом случае:
Prelude> xs = map (+1) [1..10]
Prelude> length xs
10
Prelude> :sprint xs
xs = _
но не в этом случае:
Prelude> xs = map (+1) [1..10] :: [Int]
Prelude> length xs
10
Prelude> :sprint xs
xs = [_,_,_,_,_,_,_,_,_,_]
Примечание. Я запускаю ghci
с помощью -XNoMonomorphismRestriction
. Имеет ли это отношение к тому, что тип xs
является полиморфным в первом случае, но не во втором? Я хотел бы знать, что происходит внутри.