Skip to content
This repository has been archived by the owner on Jan 5, 2025. It is now read-only.

Commit

Permalink
セルフレビュー
Browse files Browse the repository at this point in the history
  • Loading branch information
s-taiga committed Aug 24, 2024
1 parent 1eb3a74 commit 579aefd
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion functional-programming-lean/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
- [`IO` モナド](./monads/io.md)
- [その他の便利な機能](monads/conveniences.md)
- [まとめ](monads/summary.md)
- [Functors, Applicative Functors, and Monads](functor-applicative-monad.md)
- [関手・アプリカティブ関手・モナド](functor-applicative-monad.md)
- [Structures and Inheritance](functor-applicative-monad/inheritance.md)
- [Applicative Functors](functor-applicative-monad/applicative.md)
- [The Applicative Contract](functor-applicative-monad/applicative-contract.md)
Expand Down
8 changes: 4 additions & 4 deletions functional-programming-lean/src/functor-applicative-monad.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Functors, Applicative Functors, and Monads
-->

# 関手とアプリカティブ関手,そしてモナド
# 関手・アプリカティブ関手・モナド

<!--
`Functor` and `Monad` both describe operations for types that are still waiting for a type argument.
Expand All @@ -11,15 +11,15 @@ This understanding is incomplete, however.
After all, `Option` has instances for both `Functor` and `Monad`, and simultaneously represents an optional value _and_ a computation that might fail to return a value.
-->

`Functor``Monad` はどちらもさらに型引数を待ち受ける型の演算を記述しますこのことを理解するにあたって`Functor` は変換対象のデータを保持するコンテナを記述し`Monad` は副作用のあるプログラムのエンコードを記述するものと考えるのも1つの手でしょうしかしこの理解は不完全ですというのも `Option``Functor``Monad` の両方のインスタンスを持ちオプショナルな値と値の返却に失敗するかもしれない計算を **同時に** 表現するからです
`Functor``Monad` はどちらもさらに型引数を待ち受ける型の演算を記述しますこのことを理解するにあたって`Functor` は変換対象のデータを保持するコンテナを記述し`Monad` は副作用のあるプログラムのエンコードを記述するものと考えるのも1つの手でしょうしかしこの理解は不完全ですというのも `Option``Functor``Monad` の両方のインスタンスを持ちオプショナルな値と値の返却に失敗するかもしれない計算を **同時に** 表現するからです

<!--
From the perspective of data structures, `Option` is a bit like a nullable type or like a list that can contain at most one entry.
From the perspective of control structures, `Option` represents a computation that might terminate early without a result.
Typically, programs that use the `Functor` instance are easiest to think of as using `Option` as a data structure, while programs that use the `Monad` instance are easiest to think of as using `Option` to allow early failure, but learning to use both of these perspectives fluently is an important part of becoming proficient at functional programming.
-->

データ構造の観点から`Option` はnullable型や高々1個の要素しか保持できないリストのようなものに少し似ています制御構造の観点からは`Option` は結果を伴わずに早期リターンするかもしれない計算を表現します.通常,`Functor` インスタンスを使うプログラムは `Option` の使い道をデータ構造としてみなす場合が最も簡単であり一方で `Monad` インスタンスを使うプログラムも `Option` の使い道を早期の失敗を許可するものとみなす場合が最も簡単ですがこれらの観点両方を流暢に使えるようになることは関数型プログラミングの達人になるためには重要なポイントです
データ構造の観点から`Option` はnullable型や高々1個の要素しか保持できないリストのようなものに少し似ています制御構造の観点からは`Option` は結果を伴わずに早期リターンするかもしれない計算を表現します。通常、`Functor` インスタンスを使うプログラムは `Option` の使い道をデータ構造としてみなす場合が最も簡単であり一方で `Monad` インスタンスを使うプログラムも `Option` の使い道を早期の失敗を許可するものとみなす場合が最も簡単ですがこれらの観点両方を流暢に使えるようになることは関数型プログラミングの達人になるためには重要なポイントです

<!--
There is a deeper relationship between functors and monads.
Expand All @@ -30,4 +30,4 @@ The type class `Applicative` provides the overloadable operations of applicative
Every monad is an applicative functor, and every applicative functor is a functor, but the converses do not hold.
-->

関手とモナドの間には深い関係があります実は **すべてのモナドは関手になります** 言い換えるとすべての関手がモナドにはならないためモナドの抽象化は関手の抽象化よりも強力であるということですさらに両者の間には **アプリカティブ関手** (applicative functor)と呼ばれる抽象化が存在しますこれもまた多くの興味深いプログラムを書くにあたって十分な力を持ち`Monad` のインタフェースを使えないライブラリでも使うことができます型クラス `Applicative` はアプリカティブ関手のオーバーロードされた演算を提供しますすべてのモナドはアプリカティブ関手でありまたすべてのアプリカティブ関手は関手ですがこれらの逆は成り立ちません
関手とモナドの間には深い関係があります実は **すべてのモナドは関手になります** 言い換えるとすべての関手がモナドにはならないためモナドの抽象化は関手の抽象化よりも強力であるということですさらに両者の間には **アプリカティブ関手** (applicative functor)と呼ばれる抽象化が存在しますこれもまた多くの興味深いプログラムを書くにあたって十分な力を持ち`Monad` のインタフェースを使えないライブラリでも使うことができます型クラス `Applicative` はアプリカティブ関手のオーバーロードされた演算を提供しますすべてのモナドはアプリカティブ関手でありまたすべてのアプリカティブ関手は関手ですがこれらの逆は成り立ちません

0 comments on commit 579aefd

Please sign in to comment.