使用NoImplicitPrelude重新绑定数字文字的语法

时间:2011-09-11 01:46:33

标签: haskell syntax ghc

看来我对ghci中-XNoImplicitPrelude标志的理解是错误的,我对此非常困惑。

documentation

  

整数文字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并将其定义为等于整数文字时,会出现类型错误。

1 个答案:

答案 0 :(得分:4)

您链接的文档说,必须启用RebindableSyntax扩展程序才能生效。