私は次のコードを持っています:
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) コア」から「in FAll コア' ((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