新手玩haskell stack scripting和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?
我在这里失踪了什么?在Windows上运行git bash。
答案 0 :(得分:3)
显然,您需要为脚本指定一个不同的名称,因为代码运行的模块名称将自动从该脚本派生,现在它将与导入的_posixsubprocess32
模块冲突。将其重命名为Turtle
然后
turtlescript.hs
为我工作。