我把它放在Shapes.hs中:
module Shapes
( Shape(Rectangle)
) where
data Shape = Circle | Rectangle deriving (Show)
然后我进入GHCi并用:l Shapes
加载它。
键入Circle
有效。我只在paranthesis中指定了Rectangle
,为什么它会起作用?
答案 0 :(得分:5)
使用:load
会产生副作用。如果您改为使用
ghci> :m +Shapes
或
ghci> import Shapes
您将无法访问Circle
构造函数。
答案 1 :(得分:4)
在:l module
或:l module.hs
之后,您处于模块module
的完整顶级范围内,这就是为什么Circle
在您的情况下的范围。< / p>
答案 2 :(得分:3)
因为ghci中的“:l”读取文件并解释它。它与“导入”不同。