Skip to content

ilya-klyuchnikov/sc-mini

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 

Minimal Supercompiler

This is a minimal supercompiler (sc-mini). The goal is to stress the main features of supercompilation for a working functional programmer. Its design is an attempt to illustrate the following formula:

Supercompiler = Driving
              + Positive information propagation
              + Folding
              + Simplification
              + Generalization

However, it turns out to be not so easy task. So here we illustrate this formula step-by-step:

  1. Prototype = Driving + Generalization + Folding
  2. Deforester = Prototype + Simplification of graph of configurations
  3. Supercompiler = Deforester + Positive Information Propagation

In order to catch the idea of this supercompiler, just look into the following modules into the following order:

  1. Prototype
  2. Deforester
  3. Supercompiler

Detailed tutorial

There is a tutorial (64 pages) explaining in detail every aspect of sc-mini.

Ilya Klyuchnikov and Dimitur Krustev. Supercompilation: Ideas and Methods (+appendix). The Monad Reader 23 (2014)

About

SC Mini is a "minimal" positive supercompiler

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published