将其转换为表达式

Transforming this into an expression

大家好,我想知道我是否对这张照片有正确的表达方式,如果没有,请问为什么

(a((f(b c))(g h))e)

您的回答不正确,因为它没有正确表达不正确的列表 (f b . c)g h 两边的括号也是错误的。

使用 点对 完整的表达式为:

'(a ((f b . c) g h) e)

请注意 '(f b . c)'(f (b c)) 不同。

看到 '(f (b c)) 是:

(cons 'f (cons (cons 'b (cons 'c '())) '()))

而不是 '(f b . c) 是:

(cons 'f (cons (cons 'b 'c) '()))

注意不正确的列表。

你很接近,但不太正确。如果我们显式地使用 cons 构建列表结构会更清楚;这更像是:

(cons 'a
      (cons (cons (cons 'f 
                        (cons 'b 'c))
                  (cons 'g
                        (cons 'h '())))
            (cons 'e '())))

=> '(a ((f b . c) g h) e)

请注意,在这部分:(f b . c) 我们有一个 不正确的列表,因为子列表没有以 null.[=14= 结尾]