1
根/ Main.hs:
import ADT.Stack
main :: IO()
main =
putStrLn "Hi"
根/ ADT/Stack.hs
module Stack (Stack, empty, isEmpty, push, top, pop) where
...
在装载Main.hs,我有错误
File name does not match module name: …
Saw: ‘Stack’
Expected: ‘ADT.Stack’
如果我将模块名称更改为ADT.Sta在Stack.hs中,我可以摆脱错误。 但是,我不明白这种约束背后的原因。
有没有办法避免在Stack.hs的代码中指定什么已经编码在它所在的目录的名称中?
如果没有其他方法,这有什么好的理由吗?
有趣的是,你的意见作为haskeller。为了完整起见,谢谢 – nicolas 2014-12-02 13:22:46
,我不确定我是否同意你提到的好处。它的代价是:如果你将你的文件从一个目录移动到另一个目录,不仅你必须改变客户端可以找到文件的位置,这是可以的,但是你也必须自己改变文件的内容!我没有太多练习,但感觉不对。我发现Agda在这方面更直接(没有多余的编码,简单的惯例..) – nicolas 2014-12-03 10:44:19