Dokumentation zu: knete

HR Image


NAME:
        Magiertool: 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 liegt unter: "/obj/tools/lisp/knete.c"

        Die Knete befindet sich normal im Kommandomodus, wo sie vor
        allen Ausdruecken das Kommando 'knete' erwartet. Wenn man viel
        machen will kann man auch jedes Kommando als Lisp interpretieren
        lassen. Hierfuer gibt es die Kommandos 'knete an' und 'knete aus'.
        Beispiele:

        knete call_other (find_player "fiona") "QueryProp" "title"
        knete an
        (call_other (find_player "fiona")
        "QueryProp" "title")
        knete aus

        Wie man sieht koennen im 'stets'-Modus Lisp-Kommandos auch auf
        mehrere Eingabezeilen verteilt werden, wenn man entsprechend
        Klammern setzt.

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 Merkmale 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"
        Dort bekommt man zum Beispiel die Funktionen q und s fuer Properties.
        Das in der Einleitung erwaehnte Beispiel koennte dann mit
        q fiona title
        erledigt 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.
        Dies tritt natuerlich nicht auf, wenn man die Knete im Kommando-
        modus (also 'knete aus') benutzt.


Start » Magierhandbuch » Befehle » Magier » Knete Letzte Generierung: 01.05.2021, 16:59
Valid HTML 4.01!