Haskell中未定义的类型构造函数“Int”

时间:2014-04-08 02:32:56

标签: haskell

这项工作没问题:

increment :: Int -> Int
increment i = i + 1

但为什么不这样做:

module MyFile where
import Prelude (Show)

increment :: Int -> Int
increment i = i + 1

拥抱说:未定义的类型构造函数" Int"

我想我需要输入更多东西。

2 个答案:

答案 0 :(得分:12)

IntPrelude中定义,但在您的情况下,您只能从Prelude导入Show。因此,找不到Int的定义。要纠正,请修改为import Prelude (Show, Int, (+))

答案 1 :(得分:6)

在许多Haskell程序中,您希望将Prelude从导入中删除,并让它自动导入。

在几乎所有其他内容中,您想要导入Prelude的大多数,但要留下一些内容。这可以使用例如

来完成
import Prelude hiding (head, tail, (++))

在某些情况下,这将伴随导入以访问隐藏的部分:

import qualified Prelude as P

在几乎所有剩余的情况下,您将使用标准的一些替代前奏而不是。我可以想象编写任何不能导入大部分前奏的东西的时候,实际上是为Haskell系统实现基本模块,或者编写一个替代前奏。