第3章 カテゴリー理論とパターン
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、ソフトウェアパターンを紹介し、それらがFPにおいてどのように機能するかを説明する。また、カテゴリ理論についても紹介し、それが関数型ソフトウェアパターンのソースとしてどのように役立つのか、そしてカテゴリ理論がFPの基礎となるものであることを説明する。
ソフトウエア・パターンとは、ソフトウエア設計において、与えられた文脈の中で一般的に 発生する問題に対する再利用可能な解決策のことである。ソフトウェア・パターンは、コードを書くたびにゼロから始める必要がないことを意味する。ソフトウェア・パターンとは、ある種の問題を解決するためのテンプレートである。これらのテンプレートを多く知っていれば知っているほど、与えられた開発上の障害に取り組むのに有利になる。これらのパターンが自然に身につき、調べる必要がなくなれば、あなたはより熟練した開発者になれるだろう。
注
パターンとは、コードの定式化を助けるための道具にすぎない。ソフトウェア作成において解決しようとする問題のほとんどは、普遍的で効率的な方法ですでに解決されている。パターンは、こうした解決策のひとつを記述したものだ。
パターンは、Gang of Fourというソフトウェア・パターン・ブックによって普及した。この本によってパターンがマッピングに登場し、それ以来プログラマがよく使うツールとなった。さて、関数型プログラマにパターンについて尋ねると、彼らはFPではパターンは特に関係ないと言うかもしれない。このように言う場合、Gang of Fourの本にある伝統的なOOPパターンを発見している可能性が高い。しかし、関数型プログラマがよく使うもう1つのセットの関数がある。、パターンとは思わないかもしれない。これらの構造は、カテゴリ理論と呼ばれる数学の一分野に由来する。私はこれらを関数パターンと呼び出し、次に調査することにする。
注
カテゴリー理論に由来するパターンを「関数呼び出し」と呼び、ギャング・オブ・フォーの本に由来するパターンと区別しよう。
例を考えてみよう。 これから考える例は、null キーワードに関するものである。null キーワードに関連する問題があることはよく知られているが、その最大のもののひとつがNullPointerException である。 Optionパターンと呼ばれる関数パターンがある。例えば、あなたがScalaプログラマで、null を含むコードを書いているとしよう。例えばこんなコードだ:
Scala
caseclassUser(name:String)defgetUser(uid:Int):User={returngetUserFromDB(uid)}
getUserFromDB が、与えられたuid のユーザを発見できなかった場合、null を返すとしよう。ここで、user.name を呼び出す危険性がある。user がnull の場合、NullPointerException がスローされ、NullPointerException を処理するかどうかによって、プログラミングがクラッシュする可能性がある。あなたのコードにNullPointerExceptionをスローさせるのは危険である。
警告
コード中のNullPointerExceptionに気をつけよう。これを避ける最良の方法は、関数が決して ...