方案语言中点数少的等价物?

时间:2015-10-19 00:06:22

标签: scheme racket

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

  1. '(((((a.b).c).d)。())

  2. '((a。(b。()))。())

  3. '(a。(b。c))

  4. '(a。((b。c)。()))

    例如:for'(a。(b。(c。(d。()))))等价物是(a b c d e)

1 个答案:

答案 0 :(得分:2)

就像在解释器中计算表达式并观察打印内容一样简单:

'((((a . b) . c) . d))
'((a b))
'(a b . c)
'(a (b . c))

请记住:点符号只是一种约定,它是在列表结构不正确时显示的(也就是说,它不以空列表结尾)。这就是打印完全相同的原因:

'(a . b)
=> '(a . b)

但这是没有点打印的,这暗示最后一个元素是一个空列表,所以没有必要显示它:

'(a b . ())
=> '(a b)

阅读documentation以了解有关点符号所有怪癖的更多信息,特别注意此部分:

  

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