这项工作没问题:
increment :: Int -> Int
increment i = i + 1
但为什么不这样做:
module MyFile where
import Prelude (Show)
increment :: Int -> Int
increment i = i + 1
拥抱说:未定义的类型构造函数" Int"
我想我需要输入更多东西。
答案 0 :(得分:12)
Int
在Prelude
中定义,但在您的情况下,您只能从Prelude导入Show
。因此,找不到Int
的定义。要纠正,请修改为import Prelude (Show, Int, (+))
。
答案 1 :(得分:6)
在许多Haskell程序中,您希望将Prelude从导入中删除,并让它自动导入。
在几乎所有其他内容中,您想要导入Prelude的大多数,但要留下一些内容。这可以使用例如
来完成import Prelude hiding (head, tail, (++))
在某些情况下,这将伴随导入以访问隐藏的部分:
import qualified Prelude as P
在几乎所有剩余的情况下,您将使用标准的一些替代前奏而不是。我可以想象编写任何不能导入大部分前奏的东西的时候,实际上是为Haskell系统实现基本模块,或者编写一个替代前奏。