Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Type Specialiser Sources
[go: Go Back, main page]

Type Specialiser Sources

The sources of the partial evaluator are available here as a tar file (37K). This is an experimental piece of software used for exploring the ideas, and as such is undocumented and buggy. Take it only if you want to try similar experiments yourself.

You can try out the specialiser on small examples by entering an expression to specialise in the box below, and pushing the `specialize' button.

Here are some examples to get you started. You can modify the code in these examples to see the effect on specialisation.

This demo has introduced most of the language features that the specialiser supports. If you want to experiment some more, I suggest specialising the following interpreter for the typed lambda calculus to some simple lambda terms. Try modifying the interpreter and seeing how the result of specialisation changes.

The exciting thing about this interpreter is that value domain is a static sum type, and so the `type tags' in the interpreter do not appear in residual programs. Try modifying the interpreter so that eval is unfolded --- residual programs become a lot easier to read.

Another interesting change is to unfold the binding of the new environment in a lambda. For a bigger experiment, try making the denotation of user functions into static functions. Do it right and you get a firstifying transformation.
Last modified: Mon Sep 29 12:28:40 MET DST 1997