2016-06-22 1 views

ответ

3

Это потому, что x является полиморфным.

Сравнить с:

Prelude> let x = 1 + 2 :: Int 
Prelude> :sprint x 
x = _ 
Prelude> x 
3 
Prelude> :sprint x 
x = 3 
Prelude> 

Когда x полиморфный GHCI не может заменить преобразователь, с определенным значением, так как вы могли бы оценить его позже в качестве другого типа.

+0

Почему полиморфизм влияет на его значение выражения? –

+0

Ответ обновлен. – ErikR

+3

Я думаю, что ключ здесь состоит в том, что «значение» с ограничением на него, например «Num a => a», на самом деле не является простым значением. Вместо этого это эффективная * функция * из словаря со стандартным знаком для значения. –