Frage zu Dispatchern in Scheme

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Frage zu Dispatchern in Scheme

Beitrag von andre_w »

Ich weiß nicht genau, ob ich den Abschnitt zu Dispatchern in Scheme (T12, Seite 18) ganz richtig verstehe. Ist im folgenden dispatch-point dann ein Dispatcher?

Code: Alles auswählen

(define-struct point (x y))

(define p (make-point 2 3))

(define (dispatch-point symbol p)
  (cond
    [(symbol=? symbol 'x) (point-x p)]
    [(symbol=? symbol 'y) (point-y p)]
    [else void]
  ))

(dispatch-point 'x p)
-> 2
Eine weitere Frage: in wie fern ist Kapselung in Scheme machbar? Ich kenne das aus den Folien bislang nur nach dem Motto "Bitte die die und die Funktionen nicht benutzen, sondern die abstrahierten Funktionen". Kann man in Scheme irgendwie erreichen, dass Funktionen nur einem bestimmten Bereich gültig sind?
let's be friends on twitter studivz facebook - my blog

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Frage zu Dispatchern in Scheme

Beitrag von s!mon »

Was ist das denn für ein Skript? Dieses Jahr geht Scheme doch nur bis Kapitel 11..

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Frage zu Dispatchern in Scheme

Beitrag von andre_w »

Das ist schon im Java Teil, bezieht sich aber zurück Scheme.

VG Andre
let's be friends on twitter studivz facebook - my blog

Benutzeravatar
itportal2
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 236
Registriert: 25. Jan 2008 15:34
Wohnort: Darmstadt

Re: Frage zu Dispatchern in Scheme

Beitrag von itportal2 »

andre_w hat geschrieben: Eine weitere Frage: in wie fern ist Kapselung in Scheme machbar? Ich kenne das aus den Folien bislang nur nach dem Motto "Bitte die die und die Funktionen nicht benutzen, sondern die abstrahierten Funktionen". Kann man in Scheme irgendwie erreichen, dass Funktionen nur einem bestimmten Bereich gültig sind?
Du kannst lokale Definitionen in einer Funktion benutzen. Damit sind sie nur in diesem Bereich sichtbar. Ich glaube das ist einigermaßen Kapselung.
andre_w hat geschrieben:Ich weiß nicht genau, ob ich den Abschnitt zu Dispatchern in Scheme (T12, Seite 18) ganz richtig verstehe. Ist im folgenden dispatch-point dann ein Dispatcher?

Code: Alles auswählen

(define-struct point (x y))

(define p (make-point 2 3))

(define (dispatch-point symbol p)
  (cond
    [(symbol=? symbol 'x) (point-x p)]
    [(symbol=? symbol 'y) (point-y p)]
    [else void]
  ))

(dispatch-point 'x p)
-> 2
Ja, das entspricht die Definition für Scheme Dispatcher: Dispatchers in Scheme sind Schnittstellenfunktionen, die Symbole auf Funktionen verschiedener Typen abbilden.

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Frage zu Dispatchern in Scheme

Beitrag von andre_w »

itportal2 hat geschrieben: Du kannst lokale Definitionen in einer Funktion benutzen. Damit sind sie nur in diesem Bereich sichtbar. Ich glaube das ist einigermaßen Kapselung.
Stimmt, dann könnte man wohl alle Prozeduren in eine große Dispatcher-Prozedur reinpacken und so erreichen, dass diese von außen nur über den Dispatcher aufrufbar ist. Danke!
itportal2 hat geschrieben: Ja, das entspricht die Definition für Scheme Dispatcher: Dispatchers in Scheme sind Schnittstellenfunktionen, die Symbole auf Funktionen verschiedener Typen abbilden.
Danke, hatte es mir schon so gedacht war mir nur nicht ganz sicher :)
let's be friends on twitter studivz facebook - my blog

Antworten

Zurück zu „Archiv“