Es ist ja möglich z.B. einen Operator wie + oder auch < usw. an Funktionen zu übergeben. So z.B.:
(define (DoIt fkt arg1 arg2)
(fkt arg1 arg2))
(DoIt + 1 2) => 3
Funktioniert das auch mit and und or? Weil das gibt bei mir immer eine Fehlermeldung beim Aufruf der Funktion: "and: found a use of `and' that does not follow an open parenthesis"
Funktionale Abstraktion
-
- BASIC-Programmierer
- Beiträge: 127
- Registriert: 13. Sep 2007 01:15
- Wohnort: Darmstadt
- Kontaktdaten:
-
- Nerd
- Beiträge: 647
- Registriert: 1. Okt 2007 12:40
- Wohnort: Darmstadt
- Kontaktdaten:
-
- BASIC-Programmierer
- Beiträge: 115
- Registriert: 1. Okt 2007 22:20
Er wollte wissen, ob dies auch mit 'and' 'or' etc. funktioniert.
Bspw. (DoIt and true true)
Dass es nicht funktioniert, hängt nicht von der Wahl der Sprache ab (man teste es z. B. mit dem Standard R5RS).
and und or verhalten sich nur scheinbar wie Funktionen. Der Große Unterschied ist aber, dass keine Applikative Auswertungsreihenfolge angewendet wird.
(and false <foo> <bar>) bricht schon nach false ab und lässt <foo> und <bar> unausgewertet.
(or true <foo> <bar>) verhält sich genau so, das Ergebnis ist sowieso true.
Man muss also and und or zu den Sonderformen zählen. Ich würde behaupten, nur etwas mit applikativer Auswertung darf als Funktion betrachtet und somit als Argument an andere Funktionen übergeben werden.
Bspw. (DoIt and true true)
Dass es nicht funktioniert, hängt nicht von der Wahl der Sprache ab (man teste es z. B. mit dem Standard R5RS).
and und or verhalten sich nur scheinbar wie Funktionen. Der Große Unterschied ist aber, dass keine Applikative Auswertungsreihenfolge angewendet wird.
(and false <foo> <bar>) bricht schon nach false ab und lässt <foo> und <bar> unausgewertet.
(or true <foo> <bar>) verhält sich genau so, das Ergebnis ist sowieso true.
Man muss also and und or zu den Sonderformen zählen. Ich würde behaupten, nur etwas mit applikativer Auswertung darf als Funktion betrachtet und somit als Argument an andere Funktionen übergeben werden.
-
- Nerd
- Beiträge: 647
- Registriert: 1. Okt 2007 12:40
- Wohnort: Darmstadt
- Kontaktdaten: