他にも色々と違いがあったかと思います。独自の名前をつけるのはかまいませんが、それならマニュアルを充実させて欲しいです。小学生並みの感想マニュアルが充実している言語はそれだけで素晴らしいと思いました。21日目のためのエントリです。)Oberon-2でLISPを作りました。今年の春、訳あって42個のプログラミング言語でLISP処理系を実装することになりました。これはその35個目です。使った言語が30を超えてからは基本的に「名前を知ってる言語は使ってしまえ」戦略をとっていて、「次は本で見たことがあるModula-3を使おう」と思っていました。Modula-3の処理系のインストールが上手く行かず失敗。Wikipediaを読むとOberon-2という似たような言語があると書いてあり、こっちは処理系のインストールがうまくいったので使うことにしました。外観Oberon-2のプログラムはなかなかインパクトがあります。Nreverse;で、出た〜wwww大文字奴〜wwwwwww教科書などに載っている古いFORTRANのプログラムみたいです。FORTRANを元にした言語なので間違ってはいないのですが、90年代に作られた言語なのにキーワードがすべて大文字なのはどうかと思います。シンタックスハイライトがなくてもキーワードがすぐに分かるのはある意味いいかもしれませんね。タイプするときにはたまったものじゃありません。オブジェクトOberon-2ではレコード型があるので、これでLISPのオブジェクトを表すことにしました。ConsDesc;実際に使うときはレコードそのものより、そのポインタの方が便利なのでレコードとそのポインタにそれぞれ名前をつけます。レコードは継承関係を作ることが出来ます。上記NreverseのようにWITHを使ってキャストをすることもできます。レコードの実体をつくるにはNEWを使います。MakeCons;未初期化の変数に対してNEWを呼ぶのがなんだか違和感があります。ちなみに、NEWで作ったレコードはごみ集めによって自動的に回収されます。昔のFORTRANみたいな文法の言語とは思えないくらい気が利いてます。メソッドレコードに対してはメソッド(のようなもの)を定義することも出来ます。呼ばれるかが決まるという仕組みです。役割で、好きな名前をつけることが出来ます。