【发布时间】:2013-03-19 20:24:52
【问题描述】:
虽然这只是代码的一部分,但能否解释一下我为什么会出现无限循环 这就是大步语义的样子
eval (For iexp c, s)
|(bEval (Compare Leq iexp (IConst 0), s)) = s
|otherwise = eval (For n' c, s')
where
s' = eval(c,s)
n' = (IBin Minus iexp (IConst 1))
【问题讨论】:
-
bEval (Compare Leq iexp (IConst 0), s)周围的括号不是必需的(并且会混淆我的心理解析器;-))。有更多的非惯用括号和缺少的空格。
标签: haskell for-loop semantics infinite-loop