1. camlspotter
  2. ocaml-zippy-tutorial-in-japanese

Commits

camlspotter  committed 8c85565

mario

  • Participants
  • Parent commits 0bcc87d
  • Branches default

Comments (0)

Files changed (1)

File random_memo.rst

View file
  • Ignore whitespace
 
 このような問題を避けるにはモジュールを依存順に並べてリンクすればよいのだが、Makefile などの場合は手でモジュールリストの順番を調整する必要がある。 OMake などではこの依存関係を自動解析してくれるのでほとんど気にする必要はない…ただしモジュール間に渡る副作用の依存関係が存在していない限りにおいて、である。
 
+なんで OCaml には Haskell の様な関数型マリオ機能がないのか
+===================================================================
+
+OCaml はその昔から関数型言語のくせに関数合成の記号すらない。``(|>)`` や ``(@@)`` が入ったのも
+つい最近である。なぜ、無いのか。
+
+これは明文化されていないが、この言語と長く付き合うとだいたい判る。
+OCaml は関数型配管工的なものはできるだけ提供しない、という思想が根底にあるとしか思えない。
+
+何故便利な配管記号がないのか、何故自由に演算子の結合則を変えられないのか…
+なぜなら、それを許すとプログラムが読みにくくなるから、と中の人が考えているからだ、と思われる。
+アルファベットで書かれた普通の関数は命名がしっかりしていれば、大抵意味はわかるし、
+Googleability も高い。逆に読み方の判らない記号はそれが何を意味しているのか
+調べるのはなかなか難しい。
+OCaml はその先代の Caml-light の時代から教育で使われてきたこともあり、難しい記号はできるだけ
+避けるようになったものと推測する。
+
+Haskell がとっつきにくさの理由の一つに記号が難しすぎる、事を挙げても誰も否定できないだろう。
+もちろん配管工記号があれば便利だし、それを使えばプログラムは短く読みやすくなる(こともある)。
+ただしそれはその記号に慣れている人だけだ。OCaml はそれを気にして記号は数値演算以外は
+ほとんど使わないことにした。もちろん配管工記号がなければプログラムは長くなる、
+が、それは別にいいじゃないか馬鹿っぽくても誰でも読みやすければ。
+これは演算子を組み合わせるいわゆる関数型ギミックの好きな人には耐え難いことかもしれないが
+OCaml の根底思想なので、嫌なら OCaml の制限上で上手く演算子をやりくりするか、別言語をやるしか無い。
+
+もちろん OCaml でプログラムを書いている人間も Haskell を触ったり F# を触ったりしていると
+配管工記号が欲しくなってくる。周りからせっつかれて、最近ようやく ``(|>)`` や ``(@@)`` が
+入ったのはそういう事情による。
+
 Ocaml と書く奴は OCaml 使わんでいい
 ============================================