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

pim*_*eek 1 syntax scheme list racket

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

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

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

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

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

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

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

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

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

'(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)
Run Code Online (Sandbox Code Playgroud)

use*_*lpa 5

对于球拍(PLT),有一个很好的说明这里.

关于(a . b . c)页面底部的语法,它是一个特定于Racket的读者扩展,旨在表达典型的测试,如(< 1 2)as (1 . < . 2).

  • 而对于`Scheme`来说,这不是合法的语法. (2认同)
  • @PIMGeek我当然可以推荐Racket,基础知识易于学习,环境简单而强大,如果你愿意,你可以继续真正让人头疼.不要在开始时跳语言,尝试认真学习语言.而且,与Common Lisp imo相比,Racket和Scheme更容易学习. (2认同)