Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

モナドを理解してみる

Posted at

モナドを理解してみる

Haskellなど関数型言語でよく出てきますが、ちゃんと概念的な部分を理解してみる試み。

モナドとは

自己関手の圏における、モノイド対象です。いやわからん。

モノイド、単位元など、似たようにワードをまず調べてみると
還元主義というか、多は異なりというか、群論というか、

ようは物事を構成する最小単位、的なものたちが存在し

現実でいえば原子。数学で言えば単位元とかがあり
プログラミング、というか関数でのそういうののうちの一つにモナドがある、くらいの、ふんわり理解をしておく

flatMap

とりあえずJSでいうflatMapがモナドのうちの一つ。
mapは、配列の一つ一つの要素に対して処理し、配列を返すが
処理がT=>T出ないといけない。T=>T[]と、次元が上がるときにflatMapが必要

めちゃくちゃわかりやすい記事があったので、これを参考に。

つまり?

これを定義することで何が嬉しいか、モナドを使いこなせて何が嬉しいのかを考えてみる。
以下の記事ではモナドという設計思想(?)を用いて、実際にものを作ってみた例があります。

これらを読んでみると

  • モナドという抽象概念に基づいた設計で、お得な共通チェーン処理が作れる
  • Optinalなど、ラムダ系が絡む既存ライブラリ等の理解が深まる

などがわかりますが、結局はモナドは考え方であり
カリー化であったり、ファンクタによるmapなどのチェーンをリフトさせるflatMapなどが、実は背景にモナドという考え方が取り入れられている

というより、こういう書き方ができるようには、T=>T[]のような関数を取れるものがあればいい、と条件があるように見え、それを抽象化した結果をモナドと名づけているだけに見える

すなわち、モナドは理解するものというより、モナドという概念のもとに成り立っている便利な仕組みを、いかにして使いこなせるようになるかが重要だと私は結論づけました

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?