球拍中X表达的结构

时间:2015-07-12 03:56:30

标签: racket

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会有什么好处吗?

1 个答案:

答案 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;一件难看的事情。