경우 비 철저한 패턴 , 10) - (182,74) : 경우의 비 한정적인 패턴하스켈 나는 다음과 같은 코드를 가지고있다
여기서 행을 나타내는 숫자는 "= case F '(pc : pcs) (readC pc 코어)"에서 "to "FAll 코어"((name, pcs ') : acc) ps "
나는이 문제가 (PC : PC)에 대한 패턴을 고갈시키는 것이라고 생각하지만 어떻게 해결할 수 있는지 이해할 수 없다.
도움을 주시면 감사하겠습니다.
코드는이 일에 업데이트되었습니다
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
나는 수정 된 코드가 사건 검사와 무관 한 알고리즘 버그가 있다고 의심하지만 코드가 무엇을하고 있는지 전혀 알지 못한다. (대문자로 된 식별자가있는 것 같기 때문에 약간의 의미가 혼란 스럽다. 내가 기대하지 않는 곳) 나는 무엇을 조언해야할지 모르겠다. –
무한 루프는'pcs '= pcs'++ [pc '']'에 의한 것입니다. 이 방정식의'pcs '는 모두 동일합니다. 새로운 변수는'Just' 패턴에서 동일한 이름을 가진 새로운 변수입니다. 따라서'pcs'가 무한 루프를 나타내는'pcs '를 자체적으로 정의하려고합니다. '는 항상 요구된다. 당신은 아마 stepAll core '((name, pcs' ') : acc) ps'에서'let ... pcs' '= pcs'++ [pc '']를 원했습니다. –
아, 나는 다른 경우와 마찬가지로'pcs ++ [pc '']'로 잘못 읽었습니다. 그래, 그게 니가 무한 루프를 얻는 이유라고 생각해. –