シーケンスを取得したとします<1,<>,2,<>>
。
空のリストを削除して取得するにはどうすればよい<1,2>
ですか? 理想的には、再帰や反復を使用しません。
ありがとう。
シーケンスを取得したとします<1,<>,2,<>>
。
空のリストを削除して取得するにはどうすればよい<1,2>
ですか? 理想的には、再帰や反復を使用しません。
ありがとう。
おそらく探しているのはfilter
. 述語を取り、それを満たさない要素を取り出します。
FP 言語には奇妙な構文があり、ドキュメンテーションが見つからなかったため、 の実装を提供できませんfilter
。fold
ただし、一般的には、 -- を使用して実装できます。これはinsert
、提供したリンクの s にすぎません。
これが私が意味することです(Haskellで):
filter p list = foldr (\x xs -> if p x then x:xs else xs) [] list¹
これがわからない場合は、こちらをご覧ください。を書いたらfilter
、次のように呼び出すことができます
newList = filter notEmpty theList
(nonEmpty
述語またはラムダ)。ああ、もちろん、これは別の関数を使用して再帰を隠すだけです。ある時点で、再帰する必要があります。
¹Haskell の : 演算子は、関数の適用ではなく、リストのコンシング (先頭に要素を追加する) です。