scheme语言中具有较少点的等价物?

scheme语言中具有较少点的等价物?,scheme,racket,Scheme,Racket,在scheme语言中,这些具有少量点的等效结构是什么 “((a.b.c.d)。” "(a(b)) “(a.(b.c)) "(一(二)(三)) 例如:对于“(a.(b.(c.(d)()))”),等价物是(a、b、c、d、e) 这就像在解释器中评估表达式并观察打印的内容一样简单: '((((a . b) . c) . d)) '((a b)) '(a b . c) '(a (b . c)) 请记住:点表示法只是一种约定,它在列表结构不正确时显示(也就是说,它不会以空列表结束)。这就是为什么打印的内

在scheme语言中,这些具有少量点的等效结构是什么

  • “((a.b.c.d)。”

  • "(a(b))

  • “(a.(b.c))

  • "(一(二)(三))

    例如:对于“(a.(b.(c.(d)()))”),等价物是(a、b、c、d、e)


  • 这就像在解释器中评估表达式并观察打印的内容一样简单:

    '((((a . b) . c) . d))
    '((a b))
    '(a b . c)
    '(a (b . c))
    
    请记住:点表示法只是一种约定,它在列表结构不正确时显示(也就是说,它不会以空列表结束)。这就是为什么打印的内容完全相同:

    '(a . b)
    => '(a . b)
    
    但这是不带点打印的,这意味着最后一个元素是一个空列表,因此无需显示:

    '(a b . ())
    => '(a b)
    
    阅读以了解更多有关点表示法的所有怪癖,尤其要注意本节:

    通常,打印一对的规则如下:始终使用点表示法,但如果点后面紧跟着一个开括号,则删除点、开括号和匹配的闭括号。因此,
    (0.(1.2))
    变为
    (01.2)
    ,而
    (1.(2.(3))
    变为
    (12.3)


    @洛佩兹:在方案中,letrec比let更普遍吗?它能盲目地取代let的使用吗?请给我解释一下,我想了解这一点concept@want2不,你不能盲目地用letrec代替let。这个空间对于一个例子来说太短了,但是你的书应该有一个对差异的解释。