モナド的な汎用関数とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > モナド的な汎用関数の意味・解説 

モナド的な汎用関数

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/01/16 04:57 UTC 版)

モナド (プログラミング)」の記事における「モナド的な汎用関数」の解説

安全な割り算結果は、値が Nothing であるかを素直に確認せずに(つまり割り算結果があるかを確認せずに)そのまま計算使えたほうが便利なことがある。これは「持ち上げ英語版)」関数を使うことで可能である。この関数Maybe限定されず、任意のモナドに対して定義されるHaskellでは LiftM2 と呼ばれる。 liftM2 :: Monad m => (a -> b -> c) -> m a -> m b -> m cliftM2 op mx my = do x <- mx y <- my return (op x y) 関数型を示す矢印が右結合であることから、liftM2は2引数の関数を引数に取って、さらなる2引数の関数を返す。型シグネチャは m がモナドのとき、任意の2引数関数を「持ち上げ」ることができることを示している。例えば、 (.*.) :: (Monad m, Num a) => m a -> m a -> m ax .*. y = liftM2 (*) x y演算子 (.*.) を定義し、それは引数どちらも Nothing でないときに、掛け算した結果返す(どちらかNothing の場合は Nothing を返す)。この方法の利点モナド実装深入りする必要がないことである。他の同じよう関数モナドを使う場合でも、liftM2 を使うことで、やりたいことが鮮明になる(コードの再利用見よ)。 数学的には、liftM2 は次のように定義される。 liftM2 : ∀ M : monad , ( A 1 → A 2 → R ) → M A 1M A 2 → M R = {\displaystyle {\text{liftM2}}\colon \forall M\colon {\text{monad}},\;(A_{1}\to A_{2}\to R)\to M\,A_{1}\to M\,A_{2}\to M\,R=} o p ↦ m 1 ↦ m 2 ↦ bind m 1 ( a 1 ↦ bind m 2 ( a 2return ( o p a 1 a 2 ) ) ) {\displaystyle op\mapsto m_{1}\mapsto m_{2}\mapsto {\text{bind}}\;m_{1}\;(a_{1}\mapsto {\text{bind}}\;m_{2}\;(a_{2}\mapsto {\text{return}}\;(op\,a_{1}\,a_{2})))}

※この「モナド的な汎用関数」の解説は、「モナド (プログラミング)」の解説の一部です。
「モナド的な汎用関数」を含む「モナド (プログラミング)」の記事については、「モナド (プログラミング)」の概要を参照ください。

ウィキペディア小見出し辞書の「モナド的な汎用関数」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「モナド的な汎用関数」の関連用語

モナド的な汎用関数のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



モナド的な汎用関数のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのモナド (プログラミング) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS