Skip to content

Repository files navigation

CESK Machine

The purpose of this project is to explore the CESK machine as an interpreter for functional languages and continuations for advanced control flow. The project should culminate with the implementation of a ML style, statically typed functional language that runs on the CESK machine. In the end, the interpreters should be suitable for small, general purpose programs.

References

Matt Might has written much on CESK machines.

Matthias Felleisen invented the CESK machine.

This presentation has a nice diagram for two-space garbage collection.

Steele and Sussman's paper discusses sequencing in functional programs.

TODO

  • add main option to output after any stage to see intermediate results
  • unify the stages under IO and error handling ease chaining
  • clean up compile warnings
  • add word values (bytes?)
  • add array/vector
  • tail call optimization
  • add builtins for IO etc
  • add intrinsics for date and time
  • add delimited continuations
  • add repl
  • add ML syntax
  • add type system and type inference
  • exceptions
  • concurrency
  • CPS transform (see micinski)

DONE

  • ANF parser
  • scheme to ANF normalizer
  • scheme AST to ANF AST conversion
  • scheme renderer
  • anf renderer
  • add float values and float division
  • add logical operators
  • garbage collector
  • top level defines
  • add string and char values
  • add builtins for type test (char?, etc)
  • add builtins for numerics
  • add error codes to cesk machine rather than just text
  • add signed numbers
  • add pair values for cons, lists, etc
  • add begin to dec lexer
  • desugar begin

About

Interpreters implemented on CESK machines

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages