Standard, simple subset of Scheme for experimentation?

Is anybody aware of a standard "toy" version of Scheme that is used for experimenting with Lisp-like languages? I'm thinking of something similar to MiniML's relationship with the ML family. I'm aware of Clinger's Core Scheme language, but this does not include macros, and I think they will be important for what we plan to do.

Of course, we could define our own language, but being able to point to a standard language will be much better.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

plt dialects?

some minimal plt dialect perhaps?

there's a out there.

plt dialects?

some minimal plt dialect perhaps?

there's a large variety of "small" or "simple" scheme implementations out there.

Maybe R3RS?

[EDIT: I'm sorry, I just realized I misread the post, and this is exactly what you didn't ask for. I'll leave it here just in case others will find the post useful. However, adding macros to an early Scheme should be easy.]

Have you considered using one of the earlier Schemes? Like R3RS?
I don't know if any of the popular Scheme interpreter have a compatibility mode.

Chibi Scheme, perhaps?

There's nothing "standard" about its use, as it's very new. But it's a fully conforming R5RS Scheme (with some exceptions), with syntax-rules macros and all, and *very* small. "Chibi", I am told, actually means "toy" in Japanese. It uses a fast bytecode VM.

The current released version is at http://synthcode.com/scheme/chibi-scheme-0.2.tgz . There is a later version in hg at https://chibi-scheme.googlecode.com/hg/ which has bignums but doesn't build properly in a 64-bit userland.

Thanks for all the

Thanks for all the suggestions. However, I think my original question was ambiguous, or poorly written, so I'll attempt to disambiguate.

What we are looking for is a definition of the syntax, and operational semantics, of a small subset of Scheme, with just enough features to keep the language interesting (simple macros, an if-conditional, functions etc.) We aren't interested in features like library modules, the full host of conditionals, nor many other features necessary when considering a practical programming language.

If anybody is familiar with Mini-ML, we are looking for something similar for the Lisp/Scheme world. Has anybody ever published such a definition?

There's plenty of small

There's plenty of small mini-Schemes in the compiler literature, though none of them have macros -- the idea is that the compiler only sees forms post-expansion.

For macros, David Herman and Mitch Wand had a paper at ESOP 2008, "A Theory of Hygienic Macros", which gives a minimal macro calculus.

Felleisen's pure scheme

Felleisen, 1991, On the expressive power of programming languages talks of two kinds of core schemes, pure scheme (there's more than one), which is really small, and idealized scheme, which is more scheme-like and should be macro-expressible in terms of a pure scheme.

There's no notion of macro definition system there. What is a minimal macro system, anyway? syntax-rules is driven by the needs of the r4rs report: a pattern-matching system is hardly minimal. Maybe Bawden/Rees syntactic closures is what you are after? But the details of such are going to dominate the language definition.