2016-11-13 53 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) 

我正在嘗試獲取xexpr。代碼運行後RESULT應該是 '("wrold" "hello")。然後在iter功能我想產生輸出:如何將列表轉換爲xexpr?

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

不知怎的,上面的代碼,使我這個'(div ((class "result")) #<void>)代替。我將如何解決這個問題?

回答

1

你應該使用:

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

注意使用,@拼接所享有,以及for/list收集結果到一個列表。