목록의 머리글 (r
)을 sack
목록에 추가하려고하는데이 오류 메시지가 계속 나타납니다.목록과 단일 항목을 결합 할 때 보호 조건에 오류가 있습니다.
ERROR "Knapsack.hs":35 - Type error in guarded expression
*** Term : findItems rt (r : sack) (getTotalWeight sack r)
*** Type : [Item]
*** Does not match : [[Item]]
코드는 다음과 같습니다. sack
이미 유형 [Item]
의 때문에
findItems :: [Item] -> [Item] -> Float -> [Item]
findItems (r:rt) sack total
| total > 20 = [sack]
| canContinue = findItems rt (r : sack) (getTotalWeight sack r)
| otherwise = [sack]
where canContinue = (getTotalWeight sack r) < 20
정말 고맙습니다. 저는 하스켈을 처음 접했고 그 실수를 이전에 만들었고 그것이 문제라고 생각하지 않았습니다. –
GHC로 컴파일하려고하면 예상되는 타입 \'Item '과'[Sack]'의 실제 타입 \'[Item]''을 비교할 수 없습니다. 어떤 오류 메시지가 나타나는지는 유형 검사 알고리즘의 구현에 따라 다릅니다. Hugs는 GHC와는 다릅니다. –
자동 유형 유추의 일반적인 속성은 유형 오류가 _ 생할 때 오류가 _ 정확한 _ 정확한 _ 정확한 _ _ _ _ _ 일 _ _ _ _ _ _ _ _ 않습니다. 서로 다른 컴파일러와 해석기가 코드의 다른 부분을 가리킬 것입니다. – MathematicalOrchid