diff options
author | Mark H Weaver <mhw@netris.org> | 2013-08-22 09:26:32 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2013-08-22 09:26:32 -0400 |
commit | 5dea94f166a99b84666d01524aa1c62369d385d5 (patch) | |
tree | ca00174400160966d4c2967ccd2357735430df2c | |
parent | e41379034b93678f2f051685a5f4dfba2ddcf997 (diff) | |
download | guile-5dea94f166a99b84666d01524aa1c62369d385d5.tar.gz |
Add 'letconst' sugar to CPS serialization format.
* module/language/cps.scm (parse-cps, unparse-cps): Support 'letconst'.
-rw-r--r-- | module/language/cps.scm | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/module/language/cps.scm b/module/language/cps.scm index 7d196ee3c..faf6ad734 100644 --- a/module/language/cps.scm +++ b/module/language/cps.scm @@ -232,6 +232,11 @@ (and (pair? props) props))) (match exp ;; Continuations. + (('letconst k (name sym c) body) + (build-cps-term + ($letk ((k (src exp) ($kargs (name) (sym) + ,(parse-cps body)))) + ($continue k ($const c))))) (('let k (name sym val) body) (build-cps-term ($letk ((k (src exp) ($kargs (name) (sym) @@ -286,6 +291,10 @@ (define (unparse-cps exp) (match exp ;; Continuations. + (($ $letk (($ $cont k src ($ $kargs (name) (sym) body))) + ($ $continue k ($ $const c))) + `(letconst ,k (,name ,sym ,c) + ,(unparse-cps body))) (($ $letk (($ $cont k src ($ $kargs (name) (sym) body))) val) `(let ,k (,name ,sym ,(unparse-cps val)) ,(unparse-cps body))) |