我有以下代码:
F (S core ps) = FAll core [] ps
where
FAll core acc ((name, (pc : pcs)) : ps)
= case F' (pc : pcs) (readC pc core) core of
Nothing ->
if (length pcs) /= 0 then FAll core ((name, pcs) : acc) ps
else FAll core acc ps
Just (core', [pc']) -> let
pc'' = pc' `mod` coresize
pcs' = pcs ++ [pc'']
in FAll core' ((name, pcs') : acc) ps
stepAll core acc [] = S core (reverse acc)
它编译得很好,但是当我运行程序时,它给出了以下错误:
Melon.hs:(172,10)-(182,74):非穷举模式以防万一
其中表示行的数字是从“= case F' (pc : pcs) (readC pc core) core of”到“in FAll core' ((name, pcs') : acc) ps”
我认为问题在于用尽 (pc : pcs) 的模式,但我无法理解如何解决它。
任何帮助,将不胜感激。
代码已更新为:
我写了以下内容:
Just (core', (pc' : pcs')) -> let
pc'' = pc' `mod` coresize
pcs' = pcs' ++ [pc'']
in stepAll core' ((name, pcs') : acc) ps
Just (core', []) -> stepAll core acc ps
但是程序只是陷入了无限循环:S