| NAME: |
| *** KNETE *** |
| |
| BESCHREIBUNG: |
| Die Knete ist ein in LPC geschriebener Lisp-Interpreter. Dieser hat |
| die besondere Eigenschaft, die Lisp-Quellen direkt in den vom |
| Amylaar GameDriver angebotenen closures zu uebersetzen. Dadurch ist |
| mit der Knete alles das moeglich, was auch mit LPC moeglich ist. |
| Es ist ein generisches, frei programmierbares Hilfsmittel. |
| |
| Die Knete befindet sich unter: "/obj/tools/lisp" |
| |
| FUNKTIONSBESCHREIBUNG: |
| Die Knete kann im Prinzip fast alles, was ein einfacher Lisp- |
| Interpreter kann. Ausnahmen sind Tupel (Bsp: (1 . 2)), welche nicht |
| implementiert sind. Die Grundlegenden Funktionen, wie define, setq, |
| cons, cdr, car etc werden beim Laden der Knete angezeigt. Je nach |
| Zeit, werden eventuelle auch weitere Standardfunktionen hinzu- |
| kommen, um die Knete moeglichst common-lisp kompatibel zu machen. |
| |
| BENUTZUNG: |
| Zu allererst sollte man wissen, dass dies hier keine Einfuehrung in |
| Lisp ist oder sein soll! Die wichtigsten Merkmal der Knete werden |
| aufgefuehrt an einigen kleinen Beispielen. Wer Lisp kennenlernen |
| moechte kann dies mit den handelsueblichen Buechern tun. |
| |
| Wer dennoch basteln moechte: Lisp ist eine Sprache in Prefixnotation, |
| d.h. der Funktionsname steht immer als erstes und dann kommen die |
| Argumente. Ein Ausdruck ist mit den ihn umgebenden Klammern komplett. |
| Beispiel: (+ 1 1) ;;; errechnet die Summe aus 1 und 1 |
| Solche Klammerausdruecke koennen beliebig geschachtelt werden. |
| Beispiel: (+ 1 (+ (+ 1 1) 1)) |
| |
| Es stehen alle efuns, sowie einige lfuns zur Verfuegung! Zu den efuns |
| gehoeren auch +,-,*,/,%,!,[,[<,[<.. etc, also alle Operatoren von LPC. |
| |
| Die Knete hat zwei Modi: |
| a) Laden von Lisp aus einer Datei |
| b) Verarbeiten von Eingaben aus der Kommandozeile |
| |
| Zu a) |
| Mit der Funktion "load" koennen Dateien eingelesen und interpretiert |
| werden. Die Funktion hat nur ein Argument, und das ist der Dateiname. |
| |
| Beispiel: (load "/players/hate/lisp.l") |
| |
| Zu b) |
| Wenn die Knete gecloned wurde, koennen jederzeit Lispausdruecke |
| eingegeben werden, welche dann interpretiert werden. Dabei sollte |
| beachtet werden, dass die aeusserste Klammer nicht notwendig ist! |
| |
| Beispiel: (+ 1 (+ 1 1)) koennte man auch schreiben als: |
| + 1 (+ 1 1) |
| |
| Dies ist vor allem dann interessant, wenn man die Moeglichkeiten |
| der Knete als alias-Werkzeug in betracht zieht. Somit ist es |
| moeglich, eine Funktion zu schreiben und diese dann wie ein alias |
| zu benutzen. |
| |
| Beispiel: (defun who () (users)) ;;; gibt das users array aus |
| Jetzt muss nur noch who eingegeben werden und das |
| array wird ausgegeben. |
| |
| Da Lisp wesentlich komplexere Ausdruecke ermoeglicht, als der |
| normale alias-Interpreter, liegen die Vorteile auf der Hand. |
| |
| KONFIGURATION: |
| Die Knete laesst sich fuer jeden Nutzer konfigurieren, indem sie eine |
| Datei "/players/<name>/lisp.l" aus dessen Heimatverzeichnis laedt. |
| |
| Ein Beispiel, was man damit machen kann befindet sich unter: |
| "/players/hate/lisp.l" |
| Die MUD Spezifischen Teile und Abfragen koennen ignoeriert werden. |
| |
| BUGS: |
| Es gibt momentan noch ein Problem, wenn auf der Kommandozeile |
| Klammern fehlen. Dann kommt eine Meldung: "*Missing 2 )" |
| In diesem Fall einfach zweimal hintereinander ) auf jeweils einer |
| einzelnen Zeile eingeben! Dieses Problem tritt vor allem dann auf, |
| wenn man zum Beispiel ein :( eingibt. |
| |