はプレリュード関数を再定義することにより、折り目を使用する方法を学習しようとすると:地図と一緒にハスケルでカレー関数を使う方法は?
import Prelude hiding (sum, product, length, and, or, all, any, filter)
は、これまでのところ私は、すべての作業まで持っているが、私はすべてが間違ってやっているかを把握することはできません。次のように私はそれを定義しています:
and :: [Bool] -> Bool
and = foldr (&&) True
...
all :: (a -> Bool) -> [a] -> Bool
all = and $ map
をしかし、これはというエラーが表示されますよう
Probable cause: ‘map’ is applied to too few arguments
は、私もそれを定義しようとしました:これは罰金コンパイル
and :: [Bool] -> Bool
and = foldr (&&) True
...
all :: (a -> Bool) -> [a] -> Bool
all f [xs] = and $ map f [xs]
が、私はそれを呼び出すときに言う:
[1 of 1] Compiling Fold (Fold.hs, interpreted)
Ok, modules loaded: Fold.
*Fold> all even [0,2,4,6]
*** Exception: Fold.hs:17:1-29: Non-exhaustive patterns in function all
私は理解していないので[xs]は空のものであってもリストにマッチしてはいけませんか?リストを含めることなく折りたたみをカレーすることはできますが、マップはできません。どんな助けもありがとう。
あなたの最後のエラーがある@Carcigenicateからのコメントと同じです。パラメータと 'map'の引数から角括弧を削除するだけです。 – Carcigenicate
回答者も質問者も実際にはそれほど悪いとは言えません。 – Carcigenicate
@Carcigenicateああ、感謝してくれてありがとう – user6731064