Skip to content

Continuation-passing style and closure conversion transforms for r6rs scheme.

Notifications You must be signed in to change notification settings

stuhlmueller/scheme-transforms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Scheme Transforms

Required:

Available transforms:

  • Letrec to set!
  • Assignment conversion
  • Continuation-passing style (cps)
  • Redex reduction
  • Return conversion
  • Closure-conversion (cc)
  • Untag transform

Sequence of transforms

The following sequence shows the interface for each transform:

tag | top-level-begin-define | self-eval | primitive | lambda | if | (A B) | begin | set! | letrec

-- letrec-to-set -->

tag | top-level-begin-define | self-eval | primitive | lambda | if | (A B) | begin | set!

-- assignment -->

tag | top-level-begin-define | self-eval | primitive | lambda | begin | if | (A B)

-- cps -->

tag | top-level-begin-define | self-eval | primitive | lambda | if | (A B) | apply | let

-- redex -->

tag | top-level-begin-define | self-eval | primitive | lambda | if | (A B) | apply | let

-- return -->

tag | top-level-begin-define | self-eval | primitive | lambda | if | (A B) | apply | let

-- cc -->

tag | top-level-begin-define | self-eval | primitive | lambda | if | (A B) | apply | let

The untag transform can be applied at any point within this sequence:

tag | *

-- untag -->

*

About

Continuation-passing style and closure conversion transforms for r6rs scheme.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages