Control.Lensからいくつかのゲッターを使用して関数を呼び出すクリーンな方法は何ですか。

混雑する

たとえば、レンズが定義されたデータ構造があるとします。

import Control.Lens

data Thing =
  Thing {
    _a :: String
  , _b :: String
  , _c :: Int
  , _d :: Int
  }

makeLenses ''Thing

そして、いくつかのゲッターを使用して呼び出したい関数を考えます。たとえば、次のようになります。

fun :: Int -> String -> Int -> String -> Bool
fun = undefined

現時点では、各フィールドにアクセスするための親が醜くなります。たとえば、次のようになります。

thing = Thing "hello" "there" 5 1

answer = fun (thing^.c) (thing^.a) (thing^.d) (thing^.b)

lens他のほとんどの状況でのライブラリの簡潔さを考えると、もう少しエレガントなものを望んでいましたが、この特定のケースに役立つコンビネータを見つけることができません。

J.アブラハムソン

どのレンズも表示または「モード」の設定で使用できるため、少なくともview XレンズXごとに指定する必要があります。ただし、どのレンズl :: Lens' a bview la -> bMonadReaderノイズの一部を変換するようなタイプがあります。

したがって、のApplicativeインスタンスを使用して、繰り返しの一部を取り除くことができます((->) a)

thing & fun <$> view c <*> view a <*> view d <*> view b

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Control.Lens を使用して関数を正しくフォーマットするにはどうすればよいですか?

分類Dev

Control.Invoke()がSendMessage()ではなくPostMessage()を呼び出すのはなぜですか?

分類Dev

Nodejsでリクエストを使用してcache-controlヘッダーからmax-age値を取得するにはどうすればよいですか?

分類Dev

Control.Lensを使用してサブリストから値のリストを取得します

分類Dev

クリックのみでパラメータを使用して関数を呼び出す正しい方法は何ですか?

分類Dev

AngularJSからWebAPIエラーへの呼び出し:「Access-Control-Allow-Origin」ヘッダーに複数の値が含まれているため、Originはアクセスを許可されていません

分類Dev

リフレクションを介してJavaでゲッターを呼び出す:それを繰り返し呼び出す最も速い方法は何ですか(パフォーマンスとスケーラビリティに関して)?

分類Dev

正しい方法は何ですか/ 2つのAngularJsサービス呼び出しをチェーンしてから、返されたデータを使用して関数を実行できますか?

分類Dev

画像をクリックしてアンカータグからonClick関数を呼び出す方法は?

分類Dev

ボタンクリック時にコードビハインドから複数のJavaScript関数を呼び出したい。3つのjavascript関数では問題なく動作しますが、それ以上ではありません

分類Dev

関数control_dependenciesは何をしますか?

分類Dev

CloudFrontは、オリジンからのエラー応答(503など)でCache-Controlヘッダーを利用しますか?

分類Dev

Control.Lens.TraversalのpartsOf、holesOf、およびsingularの簡単な定義は何ですか?

分類Dev

DDX_Controlが呼び出される前に、DDX_Controlで初期化されたコントロール(CListBox)のスタイルを変更するにはどうすればよいですか?

分類Dev

'Access-Control-Allow-Origin'ヘッダーの値がWebviewAndroidで提供されているオリジンと等しくないのを修正するにはどうすればよいですか?

分類Dev

Windows Control-Cクリップボードコピーを使用しているときにタブ文字を `n`nに保つにはどうすればよいですか?

分類Dev

Control + Plusのショートカットを使用してMenuItemを作成する–リフレクションを使用してMenuItemのプライベートフィールドを変更するのが最善の方法ですか?

分類Dev

Control + Plusのショートカットを使用してMenuItemを作成する–リフレクションを使用してMenuItemのプライベートフィールドを変更するのが最善の方法ですか?

分類Dev

Control + Plusのショートカットを使用してMenuItemを作成する–リフレクションを使用してMenuItemのプライベートフィールドを変更するのが最善の方法ですか?

分類Dev

Cache-Controlメタデータヘッダーは、バケットレベルのIAMポリシーを使用してGoogle Cloud Storageバケットで尊重されることになっていますか?

分類Dev

PostgreSQL ecpg:いくつかのoutパラメーターを使用して関数を呼び出す方法

分類Dev

UITableViewからUITableViewCellで[ターゲットの追加]ボタン関数を呼び出す方法は?

分類Dev

L.Control関数を拡張するときにカスタムテンプレートを使用するにはどうすればよいですか?

分類Dev

std :: asyncを使用してテンプレート関数を呼び出す正しい方法は何ですか

分類Dev

角度4からのOwinトークン呼び出し「Access-Control-Allow-Origin」ヘッダーが要求されたリソースに存在しません

分類Dev

共用体型パラメーターを使用してジェネリック関数を呼び出せないのはなぜですか?

分類Dev

Control + Alt + DeleteはWindowsセキュリティのどの部分を呼び出しますか?

分類Dev

onclick div属性からJavascriptでcontrol + clickを検出する方法は?

分類Dev

Javascriptのモジュールパターンを使用して内部関数を呼び出す正しい方法は何ですか

Related 関連記事

  1. 1

    Control.Lens を使用して関数を正しくフォーマットするにはどうすればよいですか?

  2. 2

    Control.Invoke()がSendMessage()ではなくPostMessage()を呼び出すのはなぜですか?

  3. 3

    Nodejsでリクエストを使用してcache-controlヘッダーからmax-age値を取得するにはどうすればよいですか?

  4. 4

    Control.Lensを使用してサブリストから値のリストを取得します

  5. 5

    クリックのみでパラメータを使用して関数を呼び出す正しい方法は何ですか?

  6. 6

    AngularJSからWebAPIエラーへの呼び出し:「Access-Control-Allow-Origin」ヘッダーに複数の値が含まれているため、Originはアクセスを許可されていません

  7. 7

    リフレクションを介してJavaでゲッターを呼び出す:それを繰り返し呼び出す最も速い方法は何ですか(パフォーマンスとスケーラビリティに関して)?

  8. 8

    正しい方法は何ですか/ 2つのAngularJsサービス呼び出しをチェーンしてから、返されたデータを使用して関数を実行できますか?

  9. 9

    画像をクリックしてアンカータグからonClick関数を呼び出す方法は?

  10. 10

    ボタンクリック時にコードビハインドから複数のJavaScript関数を呼び出したい。3つのjavascript関数では問題なく動作しますが、それ以上ではありません

  11. 11

    関数control_dependenciesは何をしますか?

  12. 12

    CloudFrontは、オリジンからのエラー応答(503など)でCache-Controlヘッダーを利用しますか?

  13. 13

    Control.Lens.TraversalのpartsOf、holesOf、およびsingularの簡単な定義は何ですか?

  14. 14

    DDX_Controlが呼び出される前に、DDX_Controlで初期化されたコントロール(CListBox)のスタイルを変更するにはどうすればよいですか?

  15. 15

    'Access-Control-Allow-Origin'ヘッダーの値がWebviewAndroidで提供されているオリジンと等しくないのを修正するにはどうすればよいですか?

  16. 16

    Windows Control-Cクリップボードコピーを使用しているときにタブ文字を `n`nに保つにはどうすればよいですか?

  17. 17

    Control + Plusのショートカットを使用してMenuItemを作成する–リフレクションを使用してMenuItemのプライベートフィールドを変更するのが最善の方法ですか?

  18. 18

    Control + Plusのショートカットを使用してMenuItemを作成する–リフレクションを使用してMenuItemのプライベートフィールドを変更するのが最善の方法ですか?

  19. 19

    Control + Plusのショートカットを使用してMenuItemを作成する–リフレクションを使用してMenuItemのプライベートフィールドを変更するのが最善の方法ですか?

  20. 20

    Cache-Controlメタデータヘッダーは、バケットレベルのIAMポリシーを使用してGoogle Cloud Storageバケットで尊重されることになっていますか?

  21. 21

    PostgreSQL ecpg:いくつかのoutパラメーターを使用して関数を呼び出す方法

  22. 22

    UITableViewからUITableViewCellで[ターゲットの追加]ボタン関数を呼び出す方法は?

  23. 23

    L.Control関数を拡張するときにカスタムテンプレートを使用するにはどうすればよいですか?

  24. 24

    std :: asyncを使用してテンプレート関数を呼び出す正しい方法は何ですか

  25. 25

    角度4からのOwinトークン呼び出し「Access-Control-Allow-Origin」ヘッダーが要求されたリソースに存在しません

  26. 26

    共用体型パラメーターを使用してジェネリック関数を呼び出せないのはなぜですか?

  27. 27

    Control + Alt + DeleteはWindowsセキュリティのどの部分を呼び出しますか?

  28. 28

    onclick div属性からJavascriptでcontrol + clickを検出する方法は?

  29. 29

    Javascriptのモジュールパターンを使用して内部関数を呼び出す正しい方法は何ですか

ホットタグ

アーカイブ