7 Stimmen

Im Schema zitierte Symbole

Ich bin kein Scheme-Experte und daher nicht sicher, ob ich hier die richtige Terminologie verwende. Lassen Sie den Code für sich selbst sprechen:

CSI> (define tree '(1 2 3 'Symb 4 5 6))
#<unspecified>
CSI> tree
(1 2 3 (quote Symb) 4 5 6)
CSI> (symbol? 'Symb)
#t
CSI> (map symbol? tree)
(#f #f #f #f #f #f #f)

Da ich aus Clojure komme, dachte ich, dass Symbole in Scheme so verwendet werden, wie Schlüsselwörter in Clojure. Ich soll durch eine verschachtelte Listenstruktur gehen und Symbole durch einen Funktionsaufruf ersetzen. Dies ist meine eindimensionale Lösung und sie funktioniert:

(define (print-track track attrs)
    (apply fmt #t
        (map (lambda (attr)
               (cond 
                     ((symbol? attr) (get-attr attr track))
                     (else           attr)))
             attrs)))

Der leere Raum oberhalb der (symbol?) Linie war für eine (list?) bedingt, aber es ist wahrscheinlich der falsche Ansatz.

Ich verwende Chicken Scheme.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X