文件名与模块名称不匹配

时间:2018-03-29 10:03:39

标签: windows haskell visual-studio-code haskell-stack haskero

新手玩haskell stack scriptingturtle

  • 创建了一个文件夹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。

1 个答案:

答案 0 :(得分:3)

显然,您需要为脚本指定一个不同的名称,因为代码运行的模块名称将自动从该脚本派生,现在它将与导入的_posixsubprocess32模块冲突。将其重命名为Turtle然后

turtlescript.hs

为我工作。