言語
sumiとは、(C言語っぽい汎用データ言語の)C式と呼んでいる言語のサブセットによって
構成されるシンプルなScheme用メタランゲージである。
なんて感じの適当、M式to Schemeを作ってみてます。これが、全然C式と綺麗に融合してくれない。(T-T)
Scheme Usual Meta Interface
かなんか、スキーム用の使いやすいみたいな意味で後でちゃんとつじつま合わせる。
C式で構成されている、どこにでもありそうな、簡単に手に入るみたいな意味あいをこめて、sumi.
tanっていう名前も考えてたのだけど、っていうか、tanで開発してたのだけど、
tanは、いわゆる、萌であり、自分は基本的に、萌は否定的であり、燃えたいのであって、
sumiってことに。したいなと。
sumii先生の名前をいただいたことにしたいってのが一番の要因。
そのうちsumi#を作るとか。ああ、でも、sumi言語はmincamlのためのアレに取っておくのがよいのかもしれない。
道でもいいところで悩む俺。。。
まっくろくろすけ的なロゴなんかつけたいと。。。
なかみは、translator.dと、main.dとminscm.dからなっててて、minscm.dはどっかから拾ってきた
パブリックドメインなスキームを適当にdに移植したもの。
出来たのはいいんだけど、ドキュメント書く気力がなくて、放置してしまってます。。。
// hello.sumi display("hello world");newline();
が
(display "hello world") (newline)
になります。
Dの文字列ちうか、配列と同様に、
// hello.sumi "hello world".display();newline();
とかくことも出来ます。気が向いたので、サポートしてみた。
ちうことで、
// hello12.sumi // オブジェクト指向っぽい書き方 setCar : (c,s){set#-car#!(c,s)} add : (a,b) {a+b}; 1.println(); (1 + 2).println(); 1.add(2).println(); c : [1 ... 2]; c.car(3).println(); // c.car() = 3; // error c.setCar(3); c.car(3).println(); [1, 2, 3, ... 4].println(); 1.if("1 です","1 じゃないです").println(); // 11をlambdaに渡して、結果をprintlnに渡すと。 11.(a){cond( (a==10)("gao"), (a==11)("guhe"), #t ("gege"), )}().println(); // 11.1.println(); // 処理系にエラーがあります。
こんな感じの言語になっております。
SICPわかんね。ってことで、勝手にM式作ってそれに翻訳して読んでる今日この頃です。
うん。頭の悪い俺には便利です。
condとか、ああ、こうなのかとおもえて嬉しいです。
- とかはエスケープシーケンスとして適当に#を使ってます。適当なので,よく考えないといけません。
そんな言語です。
これを、C式そのものを使って書こうとすると恐ろしく複雑になって死んでます。
一から、言語作ってしまったほうが楽というのは、どういうことだという感じです。
ちがうんだ。こう、気が向いたからこうしたとかじゃなくてね。
ちゃんと理由がないといかんのよ。