Vergleichsoperatoren

Aus ProgrammingWiki
Archivierte Version vom 2011-01-10T19:06:16+00:00. Aktuelle Version

Um strukturierte numerische bzw. nichtnumerische Daten vergleichen zu können, bietet Scheme Vergleichsoperatoren (Prädikate) mit verschiedenen Wichtungen an:

equal? / eqv? / eq?

Gleich, gleicher, am gleichesten

Mit den folgenden Prozeduren testen wir diese Vergleichsoperatoren:

<eval id="4cb16c64ea764"> (vergleich '((3 . 3) </eval>

            (4.0 . 4)
            ((* 3 3) . 9)           
            (3/2 . (+ 1 1/2))
            (2/3 . 4/6)
            ((* (sqrt 2) (sqrt 2)) . 2.0)
            (#\a . #\a)
            (#t . #t)
            ("B" . "B")
            ('informatik . 'INFORMATIK)
            (((lambda (x) (* x x)) (sqrt 2)) . (* (sqrt 2) (sqrt 2)))
            ((cons 1 (list 2)) . (list 1 2))
            ('(1 2 a b c d 3 4). '(1 2 a b c d 3 4))
            ('(1 2 (a (b (c)) d) 3 4). '(1 2 (a (b (c)) d) 3 4))))

Zusammenfassung

Die Vergleichsoperatoren geben den Wert #t zurück, wenn ...

equal?
"gleich"
... die Operanden in Datentyp, Struktur und Inhalt gleich sind,
eqv?
"gleicher"
... die Operanden in Datentyp und Wert gleich sind,
eq?
"am gleichesten"
... die Operanden auf den selben Platz im Arbeitsspeicher verweisen.

Zurück zu numerischen Listen.