関数のカリー化と部分適用とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 関数のカリー化と部分適用の意味・解説 

関数のカリー化と部分適用

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/20 02:06 UTC 版)

Haskell」の記事における「関数のカリー化と部分適用」の解説

Haskell において、2つ引数を持つ関数は、1つ引数をとり「1つ引数をとる関数」を返す関数同義である。このように関数返すことで全ての関数1つ引数関数として表現することをカリー化という。(あえてタプルを使うことで複数引数を渡すような見かけにすることもできるが。)次の例は2つ引数をとり、そのうち値が大きい値を返す関数 max である。 max a b = if a > b then a else b この関数max無名関数用いて次のように書き換えることができる。先ほど表現とまった同様に動作するが、この表現では関数返す様子がより明らかになっている。 max a = \b -> if a > b then a else b さらに、次のようにも書き換えることができる。 max = \a -> \b -> if a > b then a else b あるいは、f x = ... x ... は、 f = (\x -> ... x ...) の糖衣構文であるとも言えるこのためHaskell の定義は変数束縛するのが定数であるか関数であるかにかかわらず、「変数 = 値」という一貫した形でも定義できるカリー化によって、Haskellあらゆる関数引数部分適用することができる。つまり、関数の引数一部だけを渡すことで、一部変数だけが適用され別の関数作り出すことができる。また、Haskell では演算子部分適用することすら可能であり、演算子部分適用をとくにセクションと呼ぶ。 任意のリストをとり、その要素から条件にあう要素のみを取り出す関数 filter標準ライブラリ定義されている。 filter :: (a -> Bool) -> [a] -> [a] この関数では第一引数に残す要素判定する関数をとるが、このときに部分適用使えばそのような関数簡潔に書くことができる。整数リストから正の値のみを取り出す関数 positives は次のように定義できる。 positives :: [Int] -> [Int]positives = filter (> 0)ps = positives [-4, 5, 0, 3, -1, 9] -- [5, 3, 9] ここで、positives および filter の第2引数ソースコード上に現れずに記述できているが、このように単純に書けるのもカリー化恩恵よるものである。

※この「関数のカリー化と部分適用」の解説は、「Haskell」の解説の一部です。
「関数のカリー化と部分適用」を含む「Haskell」の記事については、「Haskell」の概要を参照ください。

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



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

辞書ショートカット

すべての辞書の索引

「関数のカリー化と部分適用」の関連用語

1
12% |||||

2
6% |||||

関数のカリー化と部分適用のお隣キーワード
検索ランキング

   

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



関数のカリー化と部分適用のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS