Haskell 为什么我可以用这个;“私人”;值构造函数?
我把它放在形状中。hs:Haskell 为什么我可以用这个;“私人”;值构造函数?,haskell,Haskell,我把它放在形状中。hs: module Shapes ( Shape(Rectangle) ) where data Shape = Circle | Rectangle deriving (Show) 然后,我进入GHCi,并用:l形状加载它 键入Circle有效。我在论文中只指定了Rectangle,为什么它能工作?这是使用:load的副作用。如果你用 ghci> :m +Shapes 或 您将无法访问循环构造函数。因为ghci中的“:l”读取文件并对其进行解释。它与“导
module Shapes
( Shape(Rectangle)
) where
data Shape = Circle | Rectangle deriving (Show)
然后,我进入GHCi,并用:l形状加载它
键入Circle
有效。我在论文中只指定了Rectangle
,为什么它能工作?这是使用:load
的副作用。如果你用
ghci> :m +Shapes
或
您将无法访问循环
构造函数。因为ghci中的“:l”读取文件并对其进行解释。它与“导入”不同。在您的:l模块
或:l模块.hs
之后,您处于模块
模块的完整顶级范围内,这就是为什么在您的情况下,圆圈
在范围内
请参阅:这是因为您没有导入模块
形状
。您正在直接加载文件Shapes.hs
。这不起作用。如果我做了:m+形状
或导入形状
我得到:找不到模块“形状”,它不是当前程序或任何已知包中的模块。
我确实从Shapes.hs所在的同一目录运行了GHCi。您是否使用ghc-c形状编译它。hs
?是的,我刚刚尝试过,但没有帮助。在导入形状
或:m+形状
期间,我仍然会遇到相同的错误。(顺便说一下,本节没有提到我必须首先使用ghc-c
进行编译:)还有其他想法吗?
ghci> import Shapes