Skip to Content
関数型プログラミングの学習
book

関数型プログラミングの学習

by Jack Widman
May 2025
Intermediate to advanced
138 pages
1h 34m
Japanese
O'Reilly Media, Inc.
Book available
Content preview from 関数型プログラミングの学習

第3章 カテゴリー理論とパターン

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

この章では、ソフトウェアパターンを紹介し、それらがFPにおいてどのように機能するかを説明する。また、カテゴリ理論についても紹介し、それが関数型ソフトウェアパターンのソースとしてどのように役立つのか、そしてカテゴリ理論がFPの基礎となるものであることを説明する。

ソフトウエア・パターンとは、ソフトウエア設計において、与えられた文脈の中で一般的に 発生する問題に対する再利用可能な解決策のことである。ソフトウェア・パターンは、コードを書くたびにゼロから始める必要がないことを意味する。ソフトウェア・パターンとは、ある種の問題を解決するためのテンプレートである。これらのテンプレートを多く知っていれば知っているほど、与えられた開発上の障害に取り組むのに有利になる。これらのパターンが自然に身につき、調べる必要がなくなれば、あなたはより熟練した開発者になれるだろう。

パターンとは、コードの定式化を助けるための道具にすぎない。ソフトウェア作成において解決しようとする問題のほとんどは、普遍的で効率的な方法ですでに解決されている。パターンは、こうした解決策のひとつを記述したものだ。

パターンは、Gang of Fourというソフトウェア・パターン・ブックによって普及した。この本によってパターンがマッピングに登場し、それ以来プログラマがよく使うツールとなった。さて、関数型プログラマにパターンについて尋ねると、彼らはFPではパターンは特に関係ないと言うかもしれない。このように言う場合、Gang of Fourの本にある伝統的なOOPパターンを発見している可能性が高い。しかし、関数型プログラマがよく使うもう1つのセットの関数がある。、パターンとは思わないかもしれない。これらの構造は、カテゴリ理論と呼ばれる数学の一分野に由来する。私はこれらを関数パターンと呼び出し、次に調査することにする。

カテゴリー理論に由来するパターンを「関数呼び出し」と呼び、ギャング・オブ・フォーの本に由来するパターンと区別しよう。

例を考えてみよう。 これから考える例は、null キーワードに関するものである。null キーワードに関連する問題があることはよく知られているが、その最大のもののひとつがNullPointerException である。 Optionパターンと呼ばれる関数パターンがある。例えば、あなたがScalaプログラマで、null を含むコードを書いているとしよう。例えばこんなコードだ:

Scala

case class User(name: String)

def getUser(uid: Int): User = {
    return getUserFromDB(uid)
}

getUserFromDB が、与えられたuid のユーザを発見できなかった場合、null を返すとしよう。ここで、user.name を呼び出す危険性がある。usernull の場合、NullPointerException がスローされ、NullPointerException を処理するかどうかによって、プログラミングがクラッシュする可能性がある。あなたのコードにNullPointer​Ex⁠ceptionをスローさせるのは危険である。

警告

コード中のNullPointerExceptionに気をつけよう。これを避ける最良の方法は、関数が決して ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

マイクロサービスアーキテクチャ 第2版

マイクロサービスアーキテクチャ 第2版

Sam Newman, 佐藤 直生, 木下 哲也
Kubernetesのプログラミング

Kubernetesのプログラミング

Michael Hausenblas, Stefan Schimanski
グラフデータの実践ガイド

グラフデータの実践ガイド

Denise Gosnell, Matthias Broecheler

Publisher Resources

ISBN: 9798341651593