Мне интересно, почему :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 является полиморфным в первом случае, но не во втором? Я хотел бы знать, что происходит внутри.