У меня есть следующий код:
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)" to the "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