-
Notifications
You must be signed in to change notification settings - Fork 1
A Self-Applicable Partial Evaluator for a Subset of Scheme - Mirror of ftp://cs.indiana.edu/pub/scheme-repository/imp/similix.tar.Z
License
shih-liang/Similix
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------- Similix 5.0 ----------- Anders Bondorf DIKU, May 1993 ----------------------------------------------------------------------------- Similix, a Self-Applicable Partial Evaluator for a Subset of Scheme Copyright (C) 1993 Anders Bondorf This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ----------------------------------------------------------------------------- The GNU General Public License may be found in the file COPYING. PLEASE NOTE: Similix is an experimental system under development which may contain bugs and errors. You are encouraged to mail us about bugs, comments, suggestions and the like, but we cannot promise to give detailed answers to every communication. ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- General Description of Similix ------------------------------ Similix is an autoprojector (self-applicable partial evaluator) for a large higher-order subset of the strict functional language Scheme. Similix treats source programs that use a limited class of side-effects, for instance input/output operations. Similix handles partially static data structures. Similix is automatic: in general, no user annotations (such as unfolding information) are required; user assistance may in some cases be required to avoid looping, however. Similix gives certain guarantees concerning the residual programs it generates: computations are never discarded (partial evaluation thus preserves termination properties) and never duplicated. Similix is well-suited for partially evaluating for instance interpreters that use environments represented as functions and interpreters written in continuation passing style. Since Similix is self-applicable, stand-alone compilers can be generated from interpreters. Similix is highly portable. It conforms to the IEEE and R4RS Scheme standards, but it also runs under R3RS Scheme. This distribution should immediately enable you to run Similix on Scm and on Chez Scheme. We have tested this version of Similix on Scm version 4c0 and on Chez Scheme version 3.2. Similix 5.0 is based on the former Similix 4.0 (by Anders Bondorf and Olivier Danvy). A part of Similix 5.0 has been written jointly by Anders Bondorf and Jesper J{\o}rgensen. The manual contains a section that summarizes some often used binding-time improvements. These are needed in order to obtain good results of partial evaluation. The section is partly Similix-specific, but parts of it are of more general interest. ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- Mailing Address --------------- Please direct any Similix communication to Anders Bondorf, preferably by e-mail: Anders Bondorf DIKU, Department of Computer Science University of Copenhagen Universitetsparken 1 DK-2100 Copenhagen \O Denmark e-mail: anders@diku.dk ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- Installation Guide ------------------ The Similix directory contains the following files and subdirectories: COPYING: the GNU General Public License README: this file emacs-stuff: file for running Scheme within emacs examples/: examples of running Similix manual.dvi: Similix manual in TeX dvi-format system/: Similix system files ----------------------------------------------------------------------------- This distribution should immediately enable you to run Similix on Scm and on Chez Scheme. ------------------------------------- Scm is a public domain system developed by Aubrey Jaffer 84 Pleasant St. Wakefield MA 01880 USA Scm can be obtained by anonymous ftp at altdorf.ai.mit.edu (archive/scm) and at nexus.yorku.ca (pub/scheme/new). You will need the "slib" files "pp.scm" and "format.scm" which can be obtained at the same ftp-sites. ------------------------------------- Chez Scheme is a commercial system distributed by Cadence Research Systems. Contact address: Kent Dybvig Cadence Research Systems 620 Park Ridge Road Bloomington IN 47408 USA Information can also be requested via e-mail at dyb@cadence.bloomington.in.us ----------------------------------------------------------------------------- Installing Similix on Scm: -------------------------- (1) Insert two path names in the file "system/sim-scm.scm" (see the file). (2) Similix is now installed. Try to run the job "getting-started" in the "examples" directory. (3) If someone else is going to use Similix, this person should execute (load "<your local path>/system/sim-scm.scm") instead of (load "../system/sim-scm.scm") (4) When loading Similix, the directory of the Scheme session must always be one where the Similix user has write permission. The reason is that Similix uses a temporary file named "_simtmp" in the Scheme session directory that was active when Similix was loaded. ----------------------------------------------------------------------------- Installing Similix on Chez Scheme: ---------------------------------- (1) Position yourself in the "system" directory. (2) Insert one path name in the file "system/sim-chez.ss" (see the file). (3) Rename all files "<file>.scm" in system diretcory to "<file>.ss" and copy "cogen.sim" to "cogen.ss" and "spec.sim" to "spec.ss"; these operations can be done by simply executing the shell script "script1". (4) Start Chez Scheme and execute the following expressions: (compile-file "abssyn") (compile-file "bt-eod") (compile-file "constr") (compile-file "front") (compile-file "lam-lift") (compile-file "langext") (compile-file "loadsysf") (compile-file "miscspec") (compile-file "oc") (compile-file "post") (compile-file "rl") (compile-file "runtime") (compile-file "sp") (compile-file "util") (compile-file "cogen") (compile-file "spec") (compile-file "sim-chez.ss") (exit) (5) Remove the copies "cogen.ss" and "spec.ss" from the system directory; this can be done by executing the shell script "script2". (6) Similix is now installed. Try to run the job "getting-started" in the "examples" directory. In general, when executing job-files in the examples directory, remember to execute (load "../system/sim-chez.so") instead of (load "../system/sim-scm.scm"). (7) If someone else is going to use Similix, this person should execute (load "<your local path>/system/sim-chez.so") instead of (load "../system/sim-chez.so") ----------------------------------------------------------------------------- Porting and installing Similix on other Scheme systems: ------------------------------------------------------- The only non-standard part of Similix is a part of the initial load file ("sim-scm.scm" for Scm and "sim-chez.ss" for Chez Scheme). To port Similix, all you you need to do is to change this system dependent part. If you use a Scheme system with a compiler, use "sim-chez.ss" as a starting point (and read the the above installation manual for Similix on Chez Scheme). If the Scheme system only has an interpreter, use "sim-scm.scm" as a starting point. In particular, notice the different ways the variables **Similix-...-suffix** are set up in "sim-chez.ss" and "sim-scm.scm". The load file "sim-poor.scm" gives a fully portable, but indeed very "poor man's", set of usable procedure definitions (it sets up the variables **Similix-...-suffix** for an interpretive Scheme system). You may use this file as a starting point (we successfully tried "sim-poor.scm" on MIT-Scheme version 7.1.3); consult the files "sim-scm.scm" and "sim-chez.ss" to get hints for more useful definitions. ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- Running Scheme within emacs: ---------------------------- If the emacs editor is used, first insert site-dependent information in the file "emacs-stuff". Then add the contents of "emacs-stuff" to your ".emacs" file. You can now run Scheme within emacs by typing M-x ("escape-x") run-scheme or M-x ("escape-x") run-scheme1 Note: This only works if you are in a file buffer (it does not work from the *scratch* buffer, for instance). Scheme starts in the current directory. ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- References: ----------- William Clinger and Jonathan Rees: Revised$^4$ report on the algorithmic language Scheme, November 1991. IEEE Standard for the Scheme Programming Language, May 1990, IEEE Std 1178-1990. ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- Obtaining Similix via anonymous ftp: ------------------------------------ ftp ftp.diku.dk login: anonymous password: <your username, full e-mail address> cd pub/diku/dists binary hash get Similix.tar.Z bye To decode the file Similix.tar.Z, run uncompress < Similix.tar.Z | tar xvpf - A directory named Similix then appears. Now read the file Similix/README. ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- (end of README file)
About
A Self-Applicable Partial Evaluator for a Subset of Scheme - Mirror of ftp://cs.indiana.edu/pub/scheme-repository/imp/similix.tar.Z
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published