文件名与模块名不匹配
File name does not match module name
新手玩haskell stack scripting and turtle。
- 创建了文件夹
stack-scripts
。觉得如果它看起来不错,那么我会创建一些 haskell 实用程序来替换 bash 脚本。
创建了一个名为 turtle.hs
的文件,其中包含以下文本:
#!/usr/bin/env stack
-- stack --resolver lts-11.2 script
{-# LANGUAGE OverloadedStrings #-}
import Turtle
main = echo "Hello!"
生成了 chmod +x turtle.hs
并尝试执行它。
收到以下错误消息:
turtle.hs:1:1: error:
File name does not match module name:
Saw: `Main'
Expected: `Turtle'
|
1 | #!/usr/bin/env stack
| ^
如果我将 turtle.hs
重命名为 turtle.sh
,它会执行它应该执行的操作。但是后来我没有 haskell.
的语法高亮显示
如果我将它重命名为 something-other.hs
,它也可以工作。但是后来 Haskero (VSCode) 抱怨 import Turtle
行:Couldn't guess that module name. Does it exist?
我在这里缺少什么? 运行 在 git bash 上 Windows。
显然,您需要为脚本指定一个不同的名称,因为代码在其中运行的模块名称会自动派生自它,现在它将与导入的 Turtle
模块发生冲突。将其重命名为 turtlescript.hs
然后
#!/usr/bin/env stack
-- stack --resolver lts-11.2 script --package turtle
{-# LANGUAGE OverloadedStrings #-}
import Turtle
main :: IO ()
main = echo "Hello!"
对我有用。
新手玩haskell stack scripting and turtle。
- 创建了文件夹
stack-scripts
。觉得如果它看起来不错,那么我会创建一些 haskell 实用程序来替换 bash 脚本。 创建了一个名为
turtle.hs
的文件,其中包含以下文本:#!/usr/bin/env stack -- stack --resolver lts-11.2 script {-# LANGUAGE OverloadedStrings #-} import Turtle main = echo "Hello!"
生成了
chmod +x turtle.hs
并尝试执行它。收到以下错误消息:
turtle.hs:1:1: error: File name does not match module name: Saw: `Main' Expected: `Turtle' | 1 | #!/usr/bin/env stack | ^
如果我将 turtle.hs
重命名为 turtle.sh
,它会执行它应该执行的操作。但是后来我没有 haskell.
如果我将它重命名为 something-other.hs
,它也可以工作。但是后来 Haskero (VSCode) 抱怨 import Turtle
行:Couldn't guess that module name. Does it exist?
我在这里缺少什么? 运行 在 git bash 上 Windows。
显然,您需要为脚本指定一个不同的名称,因为代码在其中运行的模块名称会自动派生自它,现在它将与导入的 Turtle
模块发生冲突。将其重命名为 turtlescript.hs
然后
#!/usr/bin/env stack
-- stack --resolver lts-11.2 script --package turtle
{-# LANGUAGE OverloadedStrings #-}
import Turtle
main :: IO ()
main = echo "Hello!"
对我有用。