リストの先頭(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]]
コードは以下のとおりです。
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]' 'を一致させることができません。どのエラーメッセージが表示されるかは、型チェックアルゴリズムの実装によって異なります。ハグスはそれをGHCとは違う。 –
自動型推論の一般的な性質は、タイプエラーが発生した場合、エラーが完全にはっきりしないことです。異なるコンパイラとインタプリタはコードの異なる部分を指します。 – MathematicalOrchid