[解決済み] Haskellでfilter関数を使うにはどうしたらいいですか?
2022-03-09 05:38:54
質問
入力 n に基づいて [1..n] からすべての整数をリストアップする haskell プログラムを持っています。 このプログラムから、ある条件に基づいて特定の数字をフィルタリングし、リストとして表示したいのですが、フィルタリング関数/条件はどこで、どのように使用できるのでしょうか?
haskellのドキュメントによると。
filter :: (a -> Bool) -> [a] -> [a]
フィルタは、述語とリストに適用され、述語を満たすこれらの要素のリストを返します; すなわち、述語を満たしたリストです。
filter p xs = [ x | x <- xs, p x]
解決方法は?
だいたいわかったね。あとは、リストの述語関数を設計します。xsというリストと述語関数pがすでにあったとすると、あなたがしなければならないのは
filter p xs.
しばしば、pは無名式、あるいはラムダ式として、次のように定義されているのを見ることができる。
filter (\n -> n \`mod\` 2 == 0) xs.
必ずしも必要ではありませんし、初心者のうちは名前付き関数を定義しておくと便利かもしれません。
isEven n = n \`mod\` 2 == 0
evenListNumbers xs = filter isEven xs
evenListNumbers [1,2,3,4]
これはどちらかというと
[2,4]
.
つまり、与えられたリスト・フィルタのための述語関数は、リスト要素を受け取り、ブール値を返します。もしそれが真なら、その要素は保持され(あるいは結果のリストに追加され)、もしそれが偽なら、それは引き渡されます。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン