[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


From: Keisuke Nishida
Subject: iScheme
Date: 07 Oct 2000 03:20:16 -0400
User-agent: T-gnus/6.14.4 (based on Gnus v5.8.6) (revision 02) SEMI/1.13.7 (Awazu) Chao/1.14.0 (Momoyama) Emacs/20.7 (i686-pc-linux-gnu) MULE/4.1 (AOI)


Hmm, could I do this as an academic research?  Is there anything similar
yet?  This might be something fun to work on ;)

-- Kei

Scheme as an Intermediate Language
Updated: 2000-10-07

Scheme is a simple but powerful language that allows any programming
structures due to the standard support of first-class continuations.  On
the other hand, many typical structures can be implemented efficiently
without using continuations.  This paper introduces an intermediate
language iScheme, which is built on the top of the standard Scheme,
while allowing the compiler to produce efficient executable code.  Any
programming language can be translated into iScheme and evaluated or
compiled on any Scheme systems with great portability or efficiency.

* Background

Continuations is powerful but inefficient.  I don't want to use it.  We
could add more primitives to Scheme, but it would break portability and
beauty of Scheme code.  I want to produce a dirty but efficiently
compilable intermediate language that works on any Scheme systems.
Any high level language, including R5RS, could be translated into
iScheme, and then compiled into an efficient code, or interpreted with
a portable package.  iScheme is a language for compilers, not for humans.

* Mechanism

iScheme defines several primitives in addition to the standard Scheme
primitives.  All iScheme primitives must be able to implemented in terms
of the standard primitives.  Any languages are translated into iScheme
at first, and then interpreted or compiled.  An iScheme compiler may
compile iScheme primitives directly rather than compiling the portable
implementation of iScheme primitives.

* iScheme Primitives

** Immediate return from a function, local exit from a loop, etc.

** Dynamic scope support

** Multithreding support

** Additional data types, such as keywords, fluids, etc.

** Add anything you want.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]