Имя файла не соответствует имени модуля
Новичок играет со скриптами стека на Haskell и черепахой.
- Создал папку
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
, Но потом Хаскеро (VSCode) жалуется на import Turtle
линия: Couldn't guess that module name. Does it exist?
Что мне здесь не хватает? Запуск в git bash на Windows.
1 ответ
Очевидно, вам нужно дать сценарию другое имя, так как имя модуля, в котором выполняется код, будет автоматически получено из него, и теперь оно будет конфликтовать с импортированным Turtle
модуль. Переименование его в turtlescript.hs
а потом
#!/usr/bin/env stack
-- stack --resolver lts-11.2 script --package turtle
{-# LANGUAGE OverloadedStrings #-}
import Turtle
main :: IO ()
main = echo "Hello!"
работал на меня.