我目前正在学习Haskell(我的问题很多都是从最近的这个声明开始)而且由于语法错误而导致编译程序的问题,主要是识别错误,理解/解决GHC提供的错误消息.
例如,它只是花了我很长时间来解决下面代码中的错误.请记住,这是从Haskell教程书中获取的:
getNums = do
putStrLn "enter a number (0 to terminate)"
num <- getLine
if read num == 0
then return []
else do rest <- getNums
return ((read num :: Int):rest)
Run Code Online (Sandbox Code Playgroud)
GHCI输出错误消息也没有真正帮助:
Number.hs:18:17:
The last statement in a 'do' block must be an expression
rest <- getNums
Run Code Online (Sandbox Code Playgroud)
我目前正在通过Linux终端运行GHCI并手动编译,用gedit编写的代码.我的问题是:
是否有更好的环境或设置可以为像我这样的初学者提供更深入的编译时错误解释?
即类似于NetBeans IDE将提供关于为什么代码在语法上不正确的提示/提示的方式?
我要做的最后一件事就是在SO上粘贴一个代码块,并且是那个说"为我解决这个问题"的白痴
编辑
我很欣赏这可能不被归类为一个非常好的问题,因为它基本上要求人们提出意见.
问题在于代码的缩进.使用空格进行缩进.缩进4个空格被认为是一种很好的做法.这段代码很完美:
getNums = do
putStrLn "enter a number (0 to terminate)"
num <- getLine
if read num == 0
then return []
else do rest <- getNums
return ((read num :: Int):rest)
Run Code Online (Sandbox Code Playgroud)
是否有更好的环境或设置可以为像我这样的初学者提供更深入的编译时错误解释?
我建议你搬出gedit并使用一些正确的代码编辑器.如果您更喜欢基于GUI的,那么Eclipse似乎为Haskell或Emacs/Vi提供了更好的支持.或者如果你想留下来gedit,为它安装适当的Haskell插件(我听说它支持得很好.)