這是我的基本程序,但它聲明'main'沒有在'Main'模塊中定義,我該如何解決這個問題?Haskell函數'main'沒有定義?
這裏是我的程序
main = do
-- variable
a <- getLine
putStrLn a
這是我的基本程序,但它聲明'main'沒有在'Main'模塊中定義,我該如何解決這個問題?Haskell函數'main'沒有定義?
這裏是我的程序
main = do
-- variable
a <- getLine
putStrLn a
您的代碼缺少縮進,Haskell使用縮進來找出一個塊結束。
main = do
a <- getLine
putStrLn a
上面是代碼的正確縮進形式;你應該閱讀here這篇文章,它比我更好解釋它。
我認爲這是OP使用製表符造成的工件。 –
如果是複製粘貼錯誤,那麼我不清楚問題中提供的(看似有效的)代碼的問題 - 我能看到的唯一錯誤就是格式化。 –
是的,如果這種格式是真實的,它應該產生一個解析錯誤(只有GHC不會產生一個,它接受代碼,要檢查這是否是有意的)。 –
這個錯誤信息意味着編譯器沒有找到你的函數main
的定義。
要運行你編譯好的程序,而不是在ghci中進行交互(我建議你做初學者),你需要main::IO()
。
如果你不給你的模塊一個名字,它自動地做了相當於在你的文件頂部插入module Main where
。
我想不出什麼辦法來產生,而不是
--
或{-
其他註釋語法-}
main
正確(
雖然你的問題似乎顯示不正確的縮進,那是因爲這個網站沒有把標籤爲8個字符寬。我懷疑你四個空格縮進main
得到它的代碼格式在任何情況下,編譯器沒有給出一個與縮進錯誤一致的錯誤信息。
我想推薦你使用空格而不是製表符來縮進,因爲它不得不調試您程序的空白。
大多數編輯器都可以配置爲將製表鍵轉換爲適當數量的空格,爲您提供相同的行對齊功能,而不會出現字符數差異。
)
您缺少縮進。你能否解釋一下 –
?這是我第一次和哈斯克爾一起,我會把它放在哪裏? – Canvas
你必須縮進兩行'a < - getLine'和'putStrLn a',兩者同等重要。 –