« Textpad und Scheme | Main| Church Numerale »

cons car cdr

0
Kategorie  
Nein, dies ist keine neue Automobilmarke

Über diese Begriffe / Wörter / Bezeichnungen oder wie auch immer bin ich gestossen und sie gehen auf die gute alte IBM 704 zurück <- Gleich der Link zu Wikipedia
Es war nämich wahrscheinlich, so dass die erste oder eine der ersten Lisp Implementierungen auf so einer IBM 704 liefen.
Diese IBM 704 hatte ein Adressierungsschema, bei welchem man die "Adresse" und das "Dekrement" eines Speicherplatzes ansprechen konnte.
car steht für "Contents of Address part of Register"
cdr steht für "Contents of Decrement part of Register"
cons steht einfach nur für construct.
cdr wird "kudder" ausgesprochen.

OK, und was soll das nun?

Mittels cons können Paare definiert werden, kann man sich so vorstellen -> (cons 2 3) klebt die 2 und 3 als Paar zusammen, mittels (car (cons 2 3)) bekommt man  2 und (cdr (cons 2 3)) liefert die  3

Ist ja eigentlich nicht so spannend, ausser dass man Datenobjekte, welche man aus Paarbausteinen basteln kann auch listenstrukturierte Daten nennt.
Was mich aber schon ein wenig erstaunt hat, ist die Tatsache:
Das man dieses Konstrukt als universelle Bauteine zur Erzeugung aller Arten von komplexen Datenstrukturen einsetzen kann!

Als ich dies gelesen habe, war ich im ersten Moment ein wenig irritiert, aber wenn man ein wenig drüber nachdenkt, macht es schon Sinn.
Leider bin ich erst in Kapitel 2.1.1 und in Kapitel 2.2 werden wird man sehen mit welchen Beispielen die Behauptung untermauert wird.

Gruß JJR
P.S.: Hier der Code (auch wenn es keinen interessiert ) für das Rechnen mit rationalen Zahlen
P.P.S.: Bunt ist Textpad
(define (ggt a b)
 
(if (= b 0)
     a
     
(ggt b (remainder a b))
 
)
)

(define (constr-rat n d)
 
(let ((g (ggt n d)))
     
(cons (/ n g) (/ d g)))
)

(define (numerator-rat x) (car x))
(define (denominator-rat x) (cdr x))

(define (add-rat x y)
 
(constr-rat
     
(+ (* (numerator-rat x) (denominator-rat y)) (* (denominator-rat x) (numerator-rat y)))
     
(* (denominator-rat x) (denominator-rat y))
 
)
)

(define (sub-rat x y)
 
(constr-rat
     
(- (* (numerator-rat x) (denominator-rat y)) (* (denominator-rat x) (numerator-rat y)))
     
(* (denominator-rat x) (denominator-rat y))
 
)
)

(define (mul-rat x y)
 
(constr-rat
     
(* (numerator-rat x) (numerator-rat y))
     
(* (denominator-rat x) (denominator-rat y))
 
)
)

(define (div-rat x y)
 
(constr-rat
     
(* (numerator-rat x) (denominator-rat y))
     
(* (denominator-rat x) (numerator-rat y))
 
)
)

(define (equal-rat? x y)
 
(= (* (numerator-rat x) (denominator-rat y)) (* (numerator-rat y) (denominator-rat x)))
)

(define (display-rat x)
 
(newline)
 
(display (numerator-rat x))
 
(display "/")
 
(display (denominator-rat x))
)

(display-rat (constr-rat 4 8))
(display-rat (div-rat (constr-rat 4 8) (constr-rat 1 3)))

Mach einen Kommentar

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2