Ruby言語ってご存知ですか?
インタプリタを開始すると、次のようなバナーが出るようです(動かしたことないけど)。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
`The Ruby Interpreter' |
Copyright 1993 Graham Hutton |
graham@cs.chalmers.se |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ソースコードは、こんな宣言で始まるようです。
type prog = PRIM prim + SWAP + FORK +
SEQ prog prog + PAR prog prog + INV progtype prim = AND + NOT
type network == (List node # wire # wire)
んで、なんかトランスレーションの定義が並んだりする。
translate (SEQ p q,x) =
let rec ((ns1,d1,r1),y) = translate (p,x)
and ((ns2,d2,r2),z) = translate (q,y)
and s = unify (r1,d2)
and f (d,prm,r) = (apply s d, prm, apply s r)
in ((map f (ns1 @ ns2), apply s d1, apply s r2),z)translate (SEQ (PRIM AND) (PRIM NOT),1) =
(([(TUPLE [NAME 1;NAME 2],AND,NAME 4);
(NAME 4,NOT,NAME 5)],
TUPLE [NAME 1;NAME 2],NAME 5),6)translate (SEQ FORK (PRIM AND),1) =
(([(TUPLE [NAME 3;NAME 3],AND,NAME 4)],NAME 3,NAME 4),5)translate (PAR (PRIM NOT) (INV (PRIM NOT)),1) =
(([(NAME 1,NOT,NAME 2);(NAME 3,NOT,NAME 4)],
TUPLE [NAME 1;NAME 4],TUPLE [NAME 2;NAME 3]),5)translate (SEQ FORK FORK,1) =
(([],NAME 1,TUPLE [TUPLE [NAME 1;NAME 1];
TUPLE [NAME 1;NAME 1]]),3)
ヘーッ。って、よく分かりません。
このRuby言語については、http://www.cs.nott.ac.uk/~gmh/thesis.pdf に記述されています。