Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

モナドについて調べていく(2)

変数を束縛?

ちょっとモナドから逸れるけど。
「変数を束縛する」って言葉づかいがよく出てくる。
束縛するってどういうこと?

束縛変数 bound variable とは、別の変数で置きかえても式の意味が変わらないような変数のことである。 束縛変数の名前を変更する処理を、α変換 alpha-conversion という。

fsfstuwhv - 束縛変数

変数 x は、例えば次のように書くと 束縛変数または束縛変項(英: Bound variable)になる。

全ての x について、 (x + 1)2 = x2 + 2x + 1 が成り立つ。

あるいは

x2 = 2 となるような x が存在する。

これらの命題では、x の代わりに別の文字を使っても論理的には全く変化しない。

自由変数と束縛変数 - Wikipedia

なるほど。もともとは数学の用語ね。


ある関数の変数がすべて束縛変数ならその関数自身が自己完結的なものになる。。。みたいなイメージ??


そしてScalaでは。

すべての識別子は、ゆえに、何かへのエイリアスである、そして、それが何のエイリアスであるか定めることを、「識別子を束縛する」と言う。

Scala3階:文と式

Scalaは、そんなわけで、四種類の束縛で既存のプログラミングを根底から捉え直す:値への束縛(val)、型への束縛(var)、式への束縛(def)、そして可能性の束縛(type)、だ。

Scala3階:文と式

OK.OK.

代表的なモナドのカタログ

All About Monadsより。

ほかにもあるみたい。
でもこれが標準的なモナドのパターンのようだ。


callccInterpreter.scala | The Scala Programming Languageで使っているモナドはContinuationモナド(継続モナド)とコメントにある。


なので継続モナドを調べてみる。

継続モナドとは?

Continuation モナドを使う前に継続渡しスタイル(CPS)について 確実に理解しているか,自身の設計課題について継続が最良のソリューション なのかを確認してください.

Continuation モナド

CPS?継続渡しスタイル?
もう次から次へわからないことが出てくる。
知識の浅さを感じる。。。


「まるごとJavaScript & Ajax ! Vol.1」が

どの記事もおれに刺さりまくったが、特に最後の「FlashのActionScriptで関数型風プログラミング」は実家に電話しようかと思うぐらい面白かった。

今まで見た中で一番わかりやすい“継続渡しスタイル”の説明だった。

一番わかりやすい継続渡しスタイルの説明 - p0t

とあったので、この本家にあるし読み直してみる。


なので継続渡しはいったんお預け。
# ってかこの本全部読んだはずなのに。。。読み流したのかASだから読んでないのか。。。