Scheme/Lispを実装してみようって企画はたまにあるのですが*1、どれもこれも無限ループするとスタックオーバーフローする始末。末尾再帰最適化もないような代物にSchemeを名乗る資格はございませんことよ。 というわけで、この私がRubyでScheme(末尾再帰最適化あり)を実装してみようという企画でございますよ!三日くらいでさっさと片付けたいところです。 データ構造 これはできるだけrubyネイティブの型をそのまま利用する方向で。Consのみ新たに定義しますが、symbolもnumberもrubyのを流用します。必要なメソッドを後からひっつけたりできるので物凄くつぶしがききますねrubyは。ダックタイプだし。 パース 最初の難関。真面目にやろうとすると割と面倒なので、適当におわらせましょう。 まずデータ構造と補助関数。 class Cons def initialize(a,d) @