为什么'(a.b.c)在PLT-Scheme 372中评价为(b a c)?

时间:2013-12-28 15:49:36

标签: list syntax scheme racket

我正在尝试了解缺点虚线元组正确列表之间的关系PLT-Scheme 372.我的问题的详细背景如下:

在阅读了一些教科书并进行反复试验后,我得到了以下理解和直观的想法(我可能错了......):

  1. 所有列表都是对,例如:

    (pair? (list 'a 'b 'c)) => #t

  2. 所有的意思都是成对的,例如:

    (pair? (cons 'a (cons 'b 'c))) => #t

  3. 一些以点分隔的元组是对,例如:

    (pair? '(a . b)) => #t
    标准R5RS中的(pair? '(a . b . c)) => #t 不是合法语法。

  4. 然后我遇到了这个问题:为什么'(a.b.c)评价为(b a c)?我在哪里可以找到的完整使用手册?

    '(a . b)                => (a . b)   
    '(a . b . c)            => (b a c)
    '(a . b . c . d)        => illegal use of `.'
    '(cons 'a (cons 'b 'c)) => (a b . c)
    

1 个答案:

答案 0 :(得分:5)

对于Racket(PLT),有一个很好的描述here

关于语法(a . b . c),请查看页面底部,它是特定于Racket的读者扩展,旨在将(< 1 2)等典型测试表达为(1 . < . 2)