看来我对ghci中-XNoImplicitPrelude标志的理解是错误的,我对此非常困惑。
整数文字368表示“fromInteger(368 :: Integer)”,而不是“Prelude.fromInteger(368 :: Integer)”。
但是,当我加载此代码时:
{-# LANGUAGE NoImplicitPrelude #-}
module Try where
import Prelude (Float,Integer, realToFrac)
data MyNum = Nummy Float
fromInteger :: Integer -> MyNum
fromInteger x = Nummy (realToFrac x)
进入ghci,我得到以下内容:
~/tmp$ ghci -XNoImplicitPrelude try.hs
[1 of 1] Compiling Try ( try.hs, interpreted )
Ok, modules loaded: Try.
*Try> 4
4
当我希望得到:
*Try> 4
Nummy 4.0
*Try>
Simliar事情发生在Try模块中;例如,当我声明函数返回类型MyNum并将其定义为等于整数文字时,会出现类型错误。
答案 0 :(得分:4)
您链接的文档说,必须启用RebindableSyntax
扩展程序才能生效。