EMA-XPS Online


BABYLON-LISP

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"


EMA-XPS Online