由于语法错误,我无法对Haskell做任何事情

Jas*_*orn 2 syntax haskell hugs

我可以执行简单的操作,比如

Hugs> 2+2
Run Code Online (Sandbox Code Playgroud)

例如.或者任何操作,就此而言.

但是当涉及到实际尝试定义一个函数时,例如:

occurs :: Eq a => a -> [a] -> Bool 
occurs x l = x `elem` l
Run Code Online (Sandbox Code Playgroud)

然后我收到消息:

ERROR - Syntax error in input (unexpected `=')
Run Code Online (Sandbox Code Playgroud)

我也遇到unexpected `::'其他情况.我正在使用WinHugs.

bhe*_*ilr 6

在交互模式下键入函数时,您需要使用let,并且还必须使用分号分隔行:

let occurs :: Eq a => a -> [a] -> Bool; occurs x l = x `elem` l
Run Code Online (Sandbox Code Playgroud)

  • @ user3482534它适用于我,但我使用的是GHCi而不是Hugs.我诚实地建议切换到拥抱GHC(以及[Haskell平台](http://www.haskell.org/platform/)),它对一些更现代的功能提供了更好的支持,特别是考虑到最后一次构建Hugs是在2006年左右.但这是你的问题的旁注.你能用围绕定义的花括号来试试吗,比如`let {occurrence :: ...; 发生xl = ...}`? (2认同)

Zet*_*eta 6

您需要将函数保存在文件(*.hs)中并通过它加载:load <filename>,因为提示只接受表达式.

8.5.如何输入函数定义?

Hugs提示只接受表达式进行评估.您可以创建一个包含Haskell模块的文件,然后加载它(有关详细信息,请参见第2.2节).

如果您想在REPL环境中试验函数定义,我建议您改用GHCi.