I hereby claim:
- I am gian on github.
- I am gian (https://keybase.io/gian) on keybase.
- I have a public key whose fingerprint is 56CA 85D1 8F39 0D1C 75DC 5ED5 91DD 6D6E EF1D F469
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
| structure M = | |
| struct | |
| open MParser | |
| fun pp (Int i) = Int.toString i | |
| | pp (Var n) = n | |
| and plist [h] = pp h | |
| | plist t = String.concatWith ":" (map pp t) | |
| fun put e k (v : exp list) = (k,v) :: e |
| fun ap (h::l) = | |
| let | |
| fun allpairs h [] = [] | |
| | allpairs h (h'::t) = (h,h') :: allpairs h t | |
| in | |
| List.foldl (fn (a,b) => b @ allpairs a l) [] (h::l) | |
| end |
| %name P1; | |
| %name P2; | |
| %name P3; | |
| %name P4; | |
| %name P5; | |
| %name F1; | |
| %name F2; | |
| %name F3; | |
| %name F4; |
| structure Syntax = | |
| struct | |
| open Set | |
| type control = {name : string, active : bool, index : int option} | |
| val fresh = ref 0 | |
| fun freshIndex {name=name, active=active, index=_} = | |
| {name=name, active=active, index=SOME (fresh := !fresh + 1; !fresh)} |
| if(s1.type == SYM_ANY) { | |
| if(s1.kind == KIND_NODE) { | |
| if(s2.type == SYM_ANY) { | |
| if(s2.kind == KIND_NODE) { | |
| return TRUE; | |
| } else { | |
| return s1.kind == s2.kind; | |
| } | |
| } else { | |
| return TRUE; |