Eli*_*Eli 5 int constructor haskell
当我尝试
> Int maxBound
Run Code Online (Sandbox Code Playgroud)
在ghci,我明白了
Not in scope: data constructor 'Int'
Run Code Online (Sandbox Code Playgroud)
即使我import Data.Int,问题仍然存在.这里发生了什么?
li.*_*idm 11
编辑:该函数的官方文档位于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>
Run Code Online (Sandbox Code Playgroud)
如果你看一下类型签名maxBound:
Prelude> :t maxBound
maxBound :: (Bounded a) => a
Run Code Online (Sandbox Code Playgroud)
然后maxBound是一个返回类型的函数a,其中a是Bounded.但是,它不接受任何参数.Int maxBound意味着您正在尝试使用数据构造函数Int和参数创建内容maxBound.
对于您的特定错误消息,您尝试使用Int- 这是一种类型 - 作为值,从而导致您获得的错误.导入Data.Int无济于事.
这不是有效的Haskell.
maxBound是定义的那些类型中的最大元素的恒定的Bounded类:
Prelude> :t maxBound
maxBound :: Bounded a => a
Run Code Online (Sandbox Code Playgroud)
要获取任何特定类型的边界,您需要将其专门化为特定类型.类型注释由::表达式上的语法给出,如下所示:
Prelude> maxBound :: Int
9223372036854775807
Run Code Online (Sandbox Code Playgroud)