CompactというかC式と言ってるものの何が凄いのか
S式はATOMをCONSセルで結合しています。基本は。
C式はこれを拡張して、XOX,XO,OY,XOY,XPXP,PXPという6つ種類の演算子で結合しています。
sumi言語はC式で記述されています。
LISPは構造化データ=プログラムです。
JavaScriptは文字列データ=プログラムです。
sumiは構造化データ=プログラムです。
sumiという言語では、quasiquoteを略したqq{}をつかうと、構文木を得ることが出来るようにしました。
昨日今日の話しだけど。
qq{a+b}
これで、結果として
XOX(a,+,b)が返ってきます。
ほんとはXOX(a,"+",b)と表示したいところなのだけど、いろいろと手抜き実装なんで。。。
こうなってるんだけど。。。
これは、2項演算子で左がaで演算子が+で右がbっていう意味です。
さて、これで取り出した構文木はいじれます。
data:qq{a+b} data.op = "-"
とすると、
XOX(a,-,b)となります。
さてここで、aを1にbを2に定義します。
data:qq{a+b} data.op = "-" a:1 b:2
そして、evalでdataを実行すると、、、。
data:qq{a+b} data.op = "-" a:1 b:2 eval(data)
結果として、、、。
-1
が返ります。どーだ凄いだろうってな具合です。