Znalazłem to pytanie o funkcji specjalnej „lub” w schemacie:Dlaczego nie mogę zdefiniować "lub-funkcji" w schemacie?
Joe Hacker stwierdza głośno, że nie ma powodu, albo na schemacie musi być specjalny - może to być po prostu zdefiniowane przez programistę, tak:
(define (or x y) (if x #t y))
Czy Joe ma rację?
Nie mogę zrozumieć, dlaczego nie powinno to być możliwe.
Czy jakiś ekspert-programista powinien wyjaśnić, czy to działa, a jeśli nie: dlaczego nie?
Nie wiem, jakiej książki używasz do nauki Planu, więc musiałem przejść do [specyfikacji języka Scheme] (http://www.r6rs.org/final/html/r6rs/r6rs-ZH -14.html # node_sec_11.4.5). "Jeśli nie ma żadnych s, zwracane jest #f. W przeciwnym razie wyrażenia są obliczane od lewej do prawej, aż zwróci wartość true (patrz sekcja 5.7) lub osiągnięte zostanie ostatnie . W pierwszym przypadku lub wyrażenie zwraca wartość val bez oceny pozostałych wyrażeń.W tym ostatnim przypadku ostatnie wyrażenie jest obliczane, a jego wartości są zwracane. " Czy funkcja 'lub' Joe'a działa w ten sposób? –
http://www.cs.washington.edu/education/courses/cse341/99wi/scheme/mini-exercises.html –
Nawiasem mówiąc, to * może * być zdefiniowane przez programistę, ale nie jako prosta funkcja. Nie jest specjalne dla niektórych wartości specjalnych. http://www.scheme.com/tspl4/further.html#defn:or – erjiang