ghci - нетерпеливая компиляция в интерактивном режиме?

Следующий тип программы проверяется, если я указываю его в командной строке (например, ghci file. hs):

import Data.Ratio
foo = let x = [1..]
          y = (1%2) + (head x)
       in y

Однако, если я введу его интерактивно, то получу ошибку типа:

Prelude> import Data.Ratio
Prelude Data.Ratio> let x = [1..]
Prelude Data.Ratio> let y = (1%2) + (head x)
<interactive>:1:23:
    Couldn't match expected type `Ratio a0' with actual type `Integer'

Похоже, что x охотно вводится как [Integer] в отличие от более общего (Num t, Enum t) => [t].

Могу ли я что-нибудь с этим сделать? Есть ли другие ситуации, когда интерактивный режим отличается от пакетного?

5
задан ErikR 28 February 2012 в 22:24
поделиться