[解決済み】Haskellを学ぶ。HaskellでListからアイテムを削除する方法
2022-01-28 01:04:02
質問
Haskellを学ぼうとしています。組み込み関数(delete...だと思う)を使わずに、リストから数字を削除する簡単な関数を書こうとしています。簡単のために、入力パラメータはInteger、リストはIntegerリストであるとします。以下は私が持っているコードですが、以下のコードのどこが問題なのか教えてください。
areTheySame :: Int -> Int-> [Int]
areTheySame x y | x == y = []
| otherwise = [y]
removeItem :: Int -> [Int] -> [Int]
removeItem x (y:ys) = areTheySame x y : removeItem x ys
解決方法は?
他の方がおっしゃるとおり、問題は
:
演算子を使用します。私が言いたいのは、あなたの
areTheySame
関数がリストを返すというのは、いずれにせよ間違ったアプローチですが。に切り替えるよりも、むしろ
++
演算子で、その関数のより良い実装をすることができます。
removeItem _ [] = []
removeItem x (y:ys) | x == y = removeItem x ys
| otherwise = y : removeItem x ys
ご覧のように、これはかなりシンプルな実装です。また、このようにコンサイスすることで、リストを大量に追加するよりも、プログラムへの負担がずっと少なくなります。他にも、怠惰に作業できるなどの利点があります。
関連
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] リスト項目の出現回数を数えるにはどうしたらいいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Haskellを学ぶ。HaskellでListからアイテムを削除する方法
-
[解決済み] リストに指定されたメンバが含まれているかどうかを判断するルールを定義する
-
[解決済み] PrologでListの要素をプリントアウトする
-
[解決済み] Prologでリストを平坦にする
-
[解決済み] OCaml標準ライブラリ関数によるリストの並べ替え
-
IEnumerableとDataTableの互換性
-
リストコレクションに関するいくつかの一般的な操作
-
[解決済み] リスト作成/連結のための構文
-
[解決済み] Python: リストからpandasのデータフレームを作成する
-
[解決済み】Scalaのリスト連結、::と++の比較