2011-04-24 31 views
4

當我嘗試爲什麼Int MaxBound不能工作?

> Int maxBound 
在ghci中

,我得到

Not in scope: data constructor 'Int' 

即使我import Data.Int,仍然是問題仍然存在。這裏發生了什麼?

回答

9

編輯:該函數的官方文檔是在http://www.haskell.org/ghc/docs/7.0.3/html/libraries/base-4.3.1.0/Prelude.html#v:maxBound

首先,你應該做

Prelude> maxBound :: Int 
9223372036854775807 
Prelude> 

開始。如果你看看maxBound類型簽名:

Prelude> :t maxBound 
maxBound :: (Bounded a) => a 

然後maxBound是一個返回a類型的函數,其中aBounded。但是,它不接受任何參數。 Int maxBound意味着您正嘗試使用數據構造函數Int和參數maxBound創建一些內容。

對於您的特定錯誤消息,您正嘗試使用Int - 這是一種類型 - 作爲值,導致出現錯誤。導入Data.Int不會幫助。

+4

一個完整的一邊,鏈接到ZVON是不好的做法,這些天:這是非常過時的,有時甚至誤導。最好鏈接到Prelude或基礎庫的Hackage文檔。 – 2011-04-24 02:59:52

+0

對不起,這是第一個谷歌鏈接。我會改變它。 – 2011-04-24 14:47:22

6

這不是有效的Haskell。

maxBound是定義的是在the Bounded class類型的最大元素的常數:

Prelude> :t maxBound 
maxBound :: Bounded a => a 

要獲得界任何特定類型的,你需要把它專注於一個特定的類型。 Type annotations::語法上表現給出,就像這樣:

Prelude> maxBound :: Int 
9223372036854775807