Тип значения при определении в ghci и в скрипте - PullRequest
0 голосов
/ 20 июня 2020

Я новичок в haskell и, читая о типах, заметил следующее и не смог понять причину этого. Если я определю следующие значения в скрипте

x = 2
y = x + 3

И теперь я проверяю их тип, я получаю следующее

*Chapter4> :t x
x :: Integer
*Chapter4> :t y
y :: Integer

Если я изменю определение y с y = x + 3 на y = x + 3.1 и снова проверяю тип, я получаю это

*Chapter4> :t y
y :: Double
*Chapter4> :t x
x :: Double

Но если вместо этого я определяю переменные x и y, используя let в GHCi, следующим образом:

*Chapter4> let x = 2
*Chapter4> let y = x + 3

Теперь я проверяю типы и получаю следующее:

*Chapter4> :t x
x :: Num p => p
*Chapter4> :t y
y :: Num a => a

И теперь я снова меняю определение y на y = x + 3.1 и проверяю тип, я получаю следующее:

*Chapter4> :t x
x :: Num p => p
*Chapter4> :t y
y :: Fractional a => a

Так почему эта разница в поведении? Это как-то связано с let?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...