2016-11-13 8 views
0
#lang racket 
(struct result (q) #:mutable) 

(define RESULT (result '())) 

(define (insert-result! result val) 
    (set-result-q! result (cons val (result-q result)))) 

(insert-result! RESULT "hello") 
(insert-result! RESULT "wrold") 
(print (result-q RESULT)) 

(define (iter l) 
`(div ((class "result")) 
    ,(for ([i (result-q l)]) 
     `(p ,i)))) 

(iter RESULT) 

Ich versuche xexpr zu bekommen. RESULT sollte '("wrold" "hello") nach dem Code ausgeführt werden. Dann in iter Funktion möchte ich Ausgabe erzeugen:Wie konvertiert man eine Liste in xexpr?

'(div ((class "result")) (p "world") (p "hello"))

Irgendwie über den Code mir dieses '(div ((class "result")) #<void>) gibt statt. Wie würde ich dieses Problem beheben?

Antwort

1

Sie verwenden sollten:

,@(for/list ([i (result-q l)]) 
    `(p ,i)) 

Beachten Sie die Verwendung von ,@ zum Spleißen unquote sowie for/list für die Ergebnisse in einer Liste zu sammeln.

Verwandte Themen