Racket将XML数据表示为X表达式:http://docs.racket-lang.org/xml/index.html?q=#(def._((lib._xml/private/xexpr-core..rkt)._xexpr~3f)) 其定义如下:
xexpr = string
| (list symbol (list (list symbol string) ...) xexpr ...)
| (cons symbol (list xexpr ...))
| symbol
| valid-char?
| cdata
| misc
在第二种选择中,为什么(list symbol string)
而不是(cons symbol string)
?是否有任何具体原因可以使用list
代替cons
?如果没有,使用cons
代替list
会有什么好处吗?
答案 0 :(得分:3)
它实际上只是X表达式设计者的偏好,可能是镜像let
的语法(也只使用正确的列表)。
使用(list symbol string)
,您将<a href="http://stackoverflow.com/">Stack Overflow</a>
表示为:
(a ((href "http://stackoverflow.com/")) "Stack Overflow")
而对于(cons symbol string)
,它是:
(a ((href . "http://stackoverflow.com/")) "Stack Overflow")
有些人会考虑&#34; dot&#34;一件难看的事情。