babylon-LISP ============ Die hybride Schale babylon3 stellt nur einen Teil des Sprachumfangs von CommonLISP bereit. Unter EMA-XPS steht zwar der gesamte CommonLISP Sprachumfang zur Verfügung, die Verwendung von hier nicht dokumen- tierten Befehlen sollte aber mit Vorsicht gehandhabt werden. Speziell auf die Nutzung von Arrays (Feldern) sollte verzichtet werden, um nicht mit den emulierten babylon3 SETs in Konflikt zu geraten. Im folgenden sind die *erlaubten* BabylonLISP Kommandos beschrieben, die gelegentlich von ihren CommonLISP Pen- dants in der Syntax geringfügig abweichen können! Die Organisation dieses Kapitels ist angelehnt an die des Kapitels 9 der babylon3 Dokumentation. Der Rest dieser Seite behandelt die unterschiedlichen Datentypen, die unter babylon LISP genutzt werden können: ZAHLEN ====== In Common Lisp werden vier Arten von Zahlen unter- schieden: Ganze Zahlen (Integers), Brüche (Ratios), Gleitkommazahlen (Floating-Point-Numbers) und komplexe Zahlen (Complex Numbers). GANZE ZAHLEN ------------ Syntax: <Vorzeichen><Zahl> Die ganzen Zahlen dürfen ein Vorzeichen haben und haben normalerweise die Basis 10. Diese darf jedoch beliebig im Bereich zwischen 2 und 36 liegen. Syntax: #<Basis>R<Vorzeichen><Zahl> Für binäre, oktale und hexadezimale Zahlen gibt es spezielle Schreibweisen: Syntax: #B<Vorzeichen><Zahl> #O<Vorzeichen><Zahl> #X<Vorzeichen><Zahl> Beispiele: 3 +5 -4 #2R1011 ; dezimal 11, Basis 2. #B-1011 ; dezimal -11, Binärschreibw. #O325 ; dezimal 213, Oktalschreibw. #XD4 ; dezimal 212, Hexadezimal- schreibweise. BRÜCHE ------ Syntax: <Vorzeichen><Zahl>/<Zahl> In Common Lisp können Brüche (rationale Zahlen) aus zwei ganzen Zahlen dargestellt werden. Diese dürfen auch ein Vorzeichen haben. Der Nenner eines Bruches darf nicht Null sein und falls der Bruch ungekürzt sein sollte, wird er intern in eine gekürzte Form umgewandelt. Eine Basisänderung ist auch hier mög- lich. Die Basiszahl gilt dann aber für Zähler und Nenner. Syntax: #<Basis>R<Vorzeichen><Zahl>/<Zahl> #B<Vorzeichen><Zahl>/<Zahl> #O<Vorzeichen><Zahl>/<Zahl> #X<Vorzeichen><Zahl>/<Zahl> Beispiele: 3/2 -1/3 >(/ 4 6) 2/3 ; interne Umwandlung! #B11/10 ; dezimal 3/2, Binärschr. GLEITKOMMAZAHLEN ---------------- Syntax: <Vorz.><Zahl>.<Zahl><Format><Vorz.><Exp.> Gleitkommazahlen dürfen ein Vorzeichen haben und können entweder als Dezimalbruch oder in einer exponentiellen Form geschrieben werden. Gleitkomma- zahlen können mit unterschiedlichen Genauigkeiten, abhängig von der Implementation, bearbeitet werden. Die Buchstaben e, s, f, d und l geben das Format an: e: Format ist nicht vorgegeben s: Short-Format: (Min. Genauigkeit 13 Bits, Min. Exp. 5 Bits) f: Single-Format: (Min. Genauigkeit 24 Bits, Min. Exp. 8 Bits) d: Double-Format: (Min. Genauigkeit 50 Bits, Min. Exp. 8 Bits) l: Long-Format: (Min. Genauigkeit 50 Bits, Min. Exp. 8 Bits) Beispiele: 0.0 ; Null in Standard-Format 0E0 ; auch Null in Standard-Format 2.123 1.62E+19 16.2E+18 -13.4 3.1415927 ; Pi in Standard-Format 3.1416s0 ; Pi in Short-Format 3.1415927 ; Pi in Single-Format 3.141592653589793d0 ; Pi in Double-Format 3.1415926535897932385L0 ; Pi in Long-Format KOMPLEXE ZAHLEN --------------- Syntax: #C(<Realteil> <Imaginärteil>) Komplexe Zahlen werden in karthetischer Form repre- sentiert mit einem Real- und Imaginärteil. Der Real- und Imaginärteil müssen nicht-komplexe Zahlen sein und werden intern, falls sie von unterschiedlichem Typ sind, umgewandelt. Beispiele: #C(3.0s1 1.5s-1) #C(1 -2) #C(2/3 2.0) ; wird intern als #C(0 1) #C(0.6666667 2.0) dargestellt ZEICHEN ======= Syntax: #\<Zeichen> In Common Lisp sind alle ASCII-Zeichen (0 - 255) als Zeichenobjekte verwendbar. Zeichenobjekte werten zu sich selbst aus. Zeichen mit gleichem ASCII-Wert sind meistens EQ (Abhängig von der Implementation). Beispiel: >#\A #\A ZEICHENKETTEN ============= Syntax: "<Zeichenkette>" Zeichenketten sind spezielle Vektoren, deren Elemente Zeichen sind. Zeichenkettenoperationen arbeiten grundsätzlich nur auf dem aktiven Teil einer Zeichenkette (also vor dem Füllstandzeiger). Zeichenketten sind in Anführungszeichen einge- schlossen. Beispiel: >"hallo" "hallo"