在这个简单的haskell代码中出现了一个奇怪的错误。 我确认我到处都在使用空格,并且缩进没有任何问题。
我是否缺少某些语法错误?
it "I can play with Maybe a bit" $ do
let b = Just "whatever"
let res = case b of
Just val -> "There is a value, and it is a value" --parse error on input ‘->’
Nothing -> "There is nothing!"
res `shouldBe` "There is a value, and it is a value"
答案 0 :(得分:8)
案例的缩进级别应比let语句的变量名称的开头至少多一个空格,例如:
let res = case b of
Just val -> "There is a value, and it is a value"
Nothing -> "There is nothing!"
如果您在与res
开始的级别相同的级别上进行编写,则将其解析为好像是let
块的一部分,而不是{{ 1}}块。
同样,如果您编写的缩进少于case
,则将其解析为let
块的一部分,而不是res
的一部分。