私の仕事はこの関数を再実装することです
divn :: Integer -> [Integer] -> [Integer]
divn _ [] = []
divn n (x:xs) | mod x n == 0 = x : divn n xs
| otherwise = divn n xs
'foldr'を使用します。私がしたこと:
divn' _ [] = []
divn' n (x:xs) = foldr (\x -> if (mod x n == 0) (x:) ([]++)) [] xs
これでうまくいくと思いました。実際にはコンパイルすらしませんが、「入力の解析エラー」)」と表示されます。
エラーが見つからなかったので、「今は機能しているように」と書き直すことにしました...
if' True x _ = x
if' False _ x = x
divn' _ [] = []
divn' n (x:xs) = foldr (\x -> if' (mod x n == 0) (x:) ([]++)) [] xs
誰かがエラーがどこにあるか知っていますか?
ありがとう!