Start

Aktuell

Handouts

Literatur

Übungen

Software

Scheme

Ansprechpartner

Software zur Vorlesung

Für die Übungen wird scsh verwendet. Als Editor zur Bearbeitung des Scheme-Quellcodes wird XEmacs empfohlen. Die benötigte Software ist auf den Rechnern des WSI bereits installiert.

Scsh

Scsh , die Scheme-Shell, ist ein Scheme-Interpreter, der sich besonders für systemnahe Programmierung eignet. Für die Übung wird die Version 0.6.6 verwendet. Für viele UNIX-Systeme gibt es bereits vorkompilierte Versionen .

Concurrent-ML-API in Sunterlib

Sunterlib ist eine Bibliothek für scsh. Unter anderem enthält Sunterlib auch eine Implementierung der Concurrent-ML-API. Benötigt wird die aktuelle Version 0.6, die hier zum Download bereit liegt . Diese Version setzt das Installations-Tool von Michel Schinz voraus. Alle benötigten Pakete sind auf den Rechnern des WSI bereits installiert.

Die Moduldefinitionen für die Concurrent-ML-Module von Sunterlib können gleich beim Start von scsh mitgeladen werden:

[0 knauel@midgard ~] scsh -lel cml/load.scm
Welcome to scsh 0.6.6 (King Conan)
Type ,? for help.
> ,open threads rendezvous rendezvous-channels
Load structure rendezvous (y/n)? y
Load structure rendezvous-channels (y/n)? y
> (hier kann's losgehen)

Um Sunterlib auf dem heimischen Rechner zu installieren, müssen die folgenden Schritte durchgeführt werden:

Install-lib und Sunterlib herunterladen

# wget http://lamp.epfl.ch/~schinz/scsh_packages/scsh-install-lib-1.0.0.tar.gz
# wget http://savannah.nongnu.org/download/sunterlib/sunterlib-0.6.tar.gz

Installation

# tar xvzf scsh-install-lib-1.0.0.tar.gz
# cd scsh-install-lib-1.0.0/
# ./install.scm
# cd ..
# tar xvzf sunterlib-0.6.tar.gz
# cd sunterlib-0.6/
# scsh-install-pkg --prefix <PFAD>
<PFAD> ist zum Beispiel /usr/local/lib/sunterlib

Nun muss noch in die Environment-Variable SCSH_LIB_DIRS auf den Pfad der Installation gesetzt werden (der Pfad steht in der Ausgabe von scsh-install-pkg). Verwendet ihr zum Beispiel die Bash-Shell, müsst ihr eure ~/.bashrc im Home-Verzeichnis folgendes hinzufügen:

export SCSH_LIB_DIRS='"/usr/local/lib/sunterlib/0.6"'

Für die (T)CSH lautet die Einstellung in der ~/.cshrc : so:

setenv SCSH_LIB_DIRS='"/usr/local/lib/sunterlib/0.6"'

Toy Window

Toy Window ist auf den FreeBSD-Rechnern des WSI installiert und wird beim Start von scsh mit dem folgenden Kommando gleich geladen:

scsh -lel cml/load.scm -lel heap-images/load.scm \
-lel scx/load.scm -lel toy-window/load.scm

Nun können die einzelnen Module geöffnet werden. Für die meisten Toy-Window-Programme sind es die folgende Module:

,open threads rendezvous rendezvous-channels rendezvous-async-channels 
,open toy-geometry toy-display-system toy-window-system

Eine Übersicht über das Toy-Window-System wird in der Vorlesung gegeben. Hier findet sich die API-Referenz als PDF-Dokument und direkt zum nachlesen .

XEmacs und scsh

Scsh funktioniert am besten innerhalb eines XEmacs-Editor-Fensters. Dazu sollte die Zeile
(require 'cmuscheme48)
im ~/.xemacs/init.el stehen. Sie lädt ein Zusatzmodul (in der XEmacs-Package-Kollektion mitgeliefert) namens cmuscheme48 . Alternativ läßt sich dies auch im laufenden XEmacs mit
M-x load-library RET cmuscheme48 RET
erledigen. Alsdann sorgt
C-u M-x run-scheme RET scsh RET
dafür, dass Scsh in einem XEmacs-Puffer gestartet wird. Das scsh wird fest voreingestellt, wenn
(setq scheme-program-name "scsh")
in ~/.xemacs/init.el steht.

Dort sind die Befehlszeilen beliebig editierbar; außerdem zykeln M-p und M-n durch vorherige Zeilen.

Zusätzlich ist es möglich, von einem Puffer im Scheme-Modus (in dem sich i.d.R. Dateien mit der Endung .scm automatisch befinden) Code-Stückchen an den Scsh-Prozeß zu schicken.

C-c l lädt eine Datei in Scsh.

C-c e schickt den Top-Level-Ausdruck, in dem der Cursor steht, an Scsh.

C-c r schickt die momentan markierte Region an Scsh.

C-c z wechselt zum Scsh-Puffer.

Einige weitere Tastenbelegung sind unter C-h m dokumentiert.

XEmacs-Dokumentation

Die XEmacs-Dokumentation kann jederzeit direkt im XEmacs mit C-h i gelesen werden. Die Dokumentation findet sich auch hier .

powered by scsh

Eric Knauel
Zuletzt geändert: Thu Jun 24 11:32:46 2004