我正在尝试从名为surface的文件中导入一个名为Shapes的Haskell模块(编译得很好)
import qualified surface.Shapes as Shapes
surfaceImport :: Shape -> Float
surfaceImport (Circle _ r) = pi * r ^ 2
surfaceImport (Rectangle (Point x1 x2) (Point y1 y2)) = (abs $ x1 - x2) * (abs $ y1 - y2)
当我尝试编译此程序时,我收到以下错误
surfaceImport.hs:1:18: error: parse error on input `surface'
Failed, modules loaded: none.
我尝试导入的模块是
module Shapes
(
Point(..),
Shape(..),
surface,
nudge,
baseCircle,
baseRectangle
)
提前致谢 其中
答案 0 :(得分:1)
首先,我认为您的代码来自:http://learnyouahaskell.com/making-our-own-types-and-typeclasses
并且介绍中还有一部分涉及模块的定义:http://learnyouahaskell.com/modules
建议文件和模块具有上述链接中所述的相同名称。这将解决您在" surface"上的解析错误的问题。您不应该做的下一点是将文件命名为模块中的函数。
您在示例中使用了限定导入。这里解释了合格的导入:https://www.haskell.org/tutorial/modules.html
通常,如果有两个模块包含不同的实体但名称相同,则使用合格的导入。限定导入允许您使用导入的模块为导入的名称添加前缀。因此,我不确定您的示例中是否需要合格的导入。
总之,您应该进行以下更改:
import Shapes