OCaml = Top-down

OCaml、というよりも関数型言語をはじめてまだ数日。手続き型言語の思考との違いに戸惑う。でも面白い。漠然としたイメージなのだがいまのところ、手続き型言語は Bottom-up なのに対して、OCaml は Top-down というものがある。

手続き型言語は、達成したい目的があると、その達成のためにまず必要な基盤を整えて組み上げていく。変数を用意して、初期化して、組み合わせて、さらに高次の関数を呼ぶ。この流れはオブジェクト指向であっても手続き型である以上は変わらない。

一方で、OCaml は、というより多分関数型言語は、達成したい目的があると、まずいきなり答えを求めようとする。答えの形をまず作る。次に、その中で未知の部分があれば、そこの答えを作る。そうするとまた未知の部分が出てくるので答えを作る。そうやっていくと最終的には細かい基盤の部分までつながっていく。

まだイメージとしてぼやっとあるだけなのだが。