【发布时间】:2016-01-11 20:08:11
【问题描述】:
我有以下代码,旨在从m 中获取一个双份,并将以s 开头的双份替换为表达式e 的评估
exec (Assign s e) m = assign s (eval e m) m
where assign _ _ [] = error ("undef var " ++ s)
assign s v (x:xs)
| fst x == s = if sameKind v (fst x)
then (fst x,v):xs
else error "type error in assign"
| otherwise = x:(assign s v xs)
where sameKind (VInt a) (VInt b) = True
sameKind (VBool a) (VBool b) = True
sameKind _ _ = False
编译时出现错误:parse error on input '|'
有人知道如何解决这个问题吗?
【问题讨论】:
-
您似乎在使用制表符缩进。使用空间,它有更高的工作机会。 (如果要使用制表符,则必须将内容拆分为多行。制表符也不利于对齐。)
-
将制表符替换为空格,现在第三行的输入“分配”出现解析错误。所以我想那将是一个新问题。
-
你所有的
assigns 必须相互对齐,sameKinds 也是如此。 -
你的第一个
where(在exec下)应该缩进更多。 -
那个是缩进的,一定是在复制粘贴的过程中发生了什么事。无论如何,我对齐它并且效果很好。谢谢!
标签: haskell guard parse-error