我有这段代码
(lambda (symbol)
(let*(
(datalist (get-list symbol))
(desc " ")
(html "<table border=\"1\">")
(html (string-append html "<tr><td>" (list-ref datalist 1) "</td><t\
r><td>" (list-ref datalist 2) "</td></tr>"))
)
(do ((p 7 (+ 7 p)))
((> p (-(length datalist) 2)))
(desc (string-append desc "<tr><td>"(list-ref datalist p) "</td><td>"\
(list-ref datalist (+ p 1))"</td></tr>"))
)
(set! html (string-append html desc "</table>"))
html
)
)
我基本上从一个数据列表中获取一些元素并向它们添加一些html标记。但是,当我运行代码时,我得到一个错误的类型来应用错误&#34;关于desc绑定(第4行)。是什么赋予了?即使我将其更改为&#34; foo&#34;等值,我仍然会收到错误的类型错误。
有什么建议吗?
答案 0 :(得分:1)
错误不在绑定中,在循环体中:
(desc (string-append desc …))
您尝试将desc
视为一个程序 - 但它是一个字符串。所以基本上代码的一部分正在做与此类似的事情:
("s1" "s2")
这会导致报告错误。也许你打算这样做?
(set! desc (string-append desc …))
我会猜测你想要实施什么。 执行会注意到缩进和格式化代码有助于明确说明:
(lambda (symbol)
(let* ((desc " ")
(datalist (get-list symbol))
(html (string-append "<table border=\"1\">"
"<tr><td>"
(list-ref datalist 1)
"</td><tr><td>"
(list-ref datalist 2)
"</td></tr>")))
(do ((p 7 (+ 7 p)))
((> p (- (length datalist) 2)))
(set! desc (string-append desc
"<tr><td>"
(list-ref datalist p)
"</td><td>"
(list-ref datalist (+ p 1))
"</td></tr>")))
(string-append html desc "</table>")))