windows - 文件名与模块名不匹配

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

新手玩haskell stack scriptingturtle

  • 创建了一个文件夹stack-scripts。我想如果它看起来不错,那么我会为我创建一些 haskell utils 来替换 bash 脚本。
  • 创建了一个名为 turtle.hs 的文件,其中包含以下文本:

    #!/usr/bin/env stack
    -- stack --resolver lts-11.2 script
    
    {-# LANGUAGE OverloadedStrings #-}
    
    import Turtle
    
    main = echo "Hello!"
    
  • 创建了chmod +xturtle.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 行:无法猜测该模块名称。存在吗?

我在这里缺少什么?在 Windows 上运行 git bash。

最佳答案

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

#!/usr/bin/env stack
-- stack --resolver lts-11.2 script --package turtle

{-# LANGUAGE OverloadedStrings #-}

import Turtle

main :: IO ()
main = echo "Hello!"

为我工作。

关于windows - 文件名与模块名不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49553241/

相关文章:

haskell - 折叠既是恒定空间又是短路

haskell - 访问 Haskell 函数中的命名字段

git - vscode快速打开 "git checkout"显示无结果

visual-studio-code - Visual Studio Code中的Jupyter笔记本不使用事件虚拟环境

windows - 如何让我的 SVN 存储库在双启动 PC 上的 Windows 和 ubuntu 上工作?

c++ - 给定一个 dll/exe(带或不带 .pdb),我可以看到哪些 .obj 文件对其大小有影响吗?

opengl - 在 Haskell 中将 double 转换为 GLfloat

python - VS 代码调试器立即退出

windows - 将帧从视频流式传输到管道并通过 ffmpeg 将其发布到 HTTP mjpeg

c# - 树莓派 2 和 BMP280 : Slave address was not acknowledged