関数型プログラミング言語”Scheme”で遊んでます。
SchemeはLispの流れを汲んだプログラミング言語。
方々を調べ回ったところによると下記のような特徴を持った言語とのこと。
手続き型、オブジェクト指向、関数型の3つのパラダイムをサポートしている。
レキシカルスコープを持つ言語。
最近の言語は大抵レキシカルスコープを持っているので、取り立てて意識する必要はないと思うけれど。
Emacs Lispや初期のLispがダイナミックスコープで実装されていたようなので、そちらと混同しないように、ということに注意。
式を関数の引数や戻り値、変数に格納する値として取り扱える。
閉じ括弧で式を表す、前置記法で演算子を作用させる。ほぼこれだけ。
しかし、とにかく括弧が多い。。
繰り返し処理において再帰を多用する(らしい)。
Schemeを通じて特に身につけたいのは再帰処理の実装センスと関数型プログラミングのエッセンスを吸収すること。
Processingで再帰使って絵を描いたりしたこともあったけど、どうにも再帰使った独自の実装にこぎ着けるところまでは行かなかった。
というか自分で考えた再帰処理を実装してみると、大抵ヒープを食いつぶしてエラーを吐くという残念な結果にしかならないというトラウマが。。
再帰は読むのも苦手なので、勘所をつかんでおきたい。