2011-09-11 13 views
4

看來我對ghci中-XNoImplicitPrelude標誌的理解是錯誤的,我對此非常困惑。使用NoImplicitPrelude重新綁定數字文本的語法

documentation的說

一個整數文字368名的意思是 「fromInteger(368 ::整數)」,而不是 「Prelude.fromInteger(368 ::整數)」。

然而,當我加載此代碼:

{-# 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並將其定義爲等於整數文字時,會出現類型錯誤。

回答

4

您鏈接的文檔表示必須啓用RebindableSyntax擴展才能工作。

+0

謝謝,我想知道爲什麼沒有人問過這個。我想我需要在自己手背上紋上「RTFM」。 – Thomas