Learning scheme with interactive fiction

Andrew Plotkin, writer of many nice interactive fiction works has also written an introduction to the scheme programming language. As an interactive fiction work. It is available as z-code for your facorite interpreter or playable online in a javascript enabled browser.

A typical session looks like:

Malyon V 1.0.2
A z-code interpreter for version 3, 5, and 8 games.
(c) 1999-2009 by Peter Ilberg <peter.ilberg@gmail.com>
Hey, that door wasn't there last time you walked by this spot. What the 
heck?

Lists And Lists
An Interactive Tutorial
Copyright 1996 by Andrew Plotkin.
(First-time players should type "about".)
Release 3 / Serial number 960823 / Inform v1502 Library 5/12
Standard interpreter 1.0

A Familiar Place
Everything here is just like it always is, except for that door.

>n
You push the door open. It doesn't creak at all.

White Room
This is a comfortably cluttered room. Cluttered with bookshelves, 
mostly. To one side is a large desk, on which a computer squats 
regally. A lumpy couch is the only other furniture of note.

Beside the computer is a small glass box.

Resting on the couch, and snoring in a manner which you suspect 
infringes copyrights owned by several local earthquakes, is a huge 
genie. Honest.

>push green button
The computer comes to life: whirr, feeple, feep! You settle yourself 
before the keyboard as text appears on the screen...


[Welcome to the interpreter. Enter ":q" to exit, or ":m" for 
documentation, or ":?" for a list of other ":" commands.]
[Interpreter warning:
Since the Z-machine has no way to check for stack overflow, it is 
possible to crash your interpreter (or even your computer) by confusing 
this intepreter. In particular, infinite loops are dangerous. Be 
careful.]
[Setting up interpreter...]
 >>(+ 2 3 4)
 9
 >>

The interpreter runs within the Z-Machine contains no garbage collection (as the z-machine does not provide stack overflow detection mechanisms) and implements a very small subset of scheme. For example * and / are not available, cond does not accept else and many more. As a tutor a helpful genie guides the player through the more and more advancing problems. An extensive reference of the implemented language is also available.

Code on this site is licensed under a 2 clause BSD license, everything else unless noted otherwise is licensed under a CreativeCommonsAttribution-ShareAlike3.0UnportedLicense