takeIf
Haskell を勉強して、条件を指定すると、リストが条件を満たすすべてのリストの要素を返す関数をコーディングしようとしています。
望ましい出力の例:
takeIf (>0) [] --> []
takeIf (>0) [-1, 0, 1, 2] --> [1,2]
私はこの定義を試しました:
takeIf cond [] = []
takeIf cond (x:xs) = if (cond x)
then x:(takeIf cond xs)
else []:(takeIf cond xs)
しかし、うまくいきません。
私の最初の質問は次のとおりです。
:t takeIf --> ([a] -> Bool) -> [[a]] -> [[a]]
なぜ?なぜだめですか:
:t takeIf --> (a -> Bool) -> [a] -> [a]
このコードを機能させるにはどうすればよいですか?
これは私が得るエラーです:
役立つ場合は、私が使用していますghci