0

シーケンスを取得したとします<1,<>,2,<>>

空のリストを削除して取得するにはどうすればよい<1,2>ですか? 理想的には、再帰や反復を使用しません。

ありがとう。

PS: FP プログラミング言語を使用しています

4

1 に答える 1

0

おそらく探しているのはfilter. 述語を取り、それを満たさない要素を取り出します。

FP 言語には奇妙な構文があり、ドキュメンテーションが見つからなかったため、 の実装を提供できませんfilterfoldただし、一般的には、 -- を使用して実装できます。これは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 の : 演算子は、関数の適用ではなく、リストのコンシング (先頭に要素を追加する) です。

于 2013-03-21T15:54:39.773 に答える