[解決済み] レコードの単一フィールドを割り当て、残りのフィールドはコピーするための省略記法?
2022-06-14 14:20:01
質問
例えば、以下のようなレコードADTがあるとします。
data Foo = Bar { a :: Integer, b :: String, c :: String }
レコードを受け取り、1つのフィールドを除いて引数として渡されたものと同じ値を持つレコード(同じ型)を返す関数が欲しいのです。
walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
上記は動作しますが、より多くのフィールドを持つレコードの場合(例えば
10
のように)、そのような関数を作成することは、私は非常に不要であると感じている多くの入力を伴うでしょう。
同じことをする、より退屈でない方法はありますか?
どのように解決するのですか?
そう、レコードのフィールドを更新するいい方法があるんです。GHCiでは以下のようなことができます。
> data Foo = Foo { a :: Int, b :: Int, c :: String } -- define a Foo
> let foo = Foo { a = 1, b = 2, c = "Hello" } -- create a Foo
> let updateFoo x = x { c = "Goodbye" } -- function to update Foos
> updateFoo foo -- update the Foo
Foo {a = 1, b = 2, c = "Goodbye" }
関連
-
[解決済み] 機能における非網羅的なパターン【重複あり
-
[解決済み] Hindley-Milnerのどの部分が理解できないのでしょうか?
-
[解決済み] Haskellで大規模設計?[クローズド]
-
[解決済み] IntとIntegerの違いは何ですか?
-
[解決済み] RustのtraitとHaskellのtypeclassの違いは何ですか?
-
[解決済み] CabalとStackの違いは何ですか?
-
[解決済み] Haskellの "Just "構文とは?
-
[解決済み] ハスケル Where vs. Let
-
[解決済み] Haskellでグラフはどのように表現するのか?
-
[解決済み] Haskell型とデータコンストラクタ
最新
-
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のコメントは何を意味するのですか?
-
[解決済み] Haskell タプルをリスト化する?
-
[解決済み] モナドはエンドファンクタのカテゴリではただのモノイドですが、何か問題でも?
-
[解決済み] 読んで学ぶべき良いHaskellのソース [終了しました]。
-
[解決済み] IntとIntegerの違いは何ですか?
-
[解決済み] lenses, fclabels, data-accessor - 構造体アクセスと突然変異のためのどのライブラリが良いか
-
[解決済み] Haskellにおける "リフティング "とは?
-
[解決済み] CabalとStackの違いは何ですか?