谁能帮我跟踪这个 LISP 表达式执行


L1 = ((A B) C D)
L2 = ((E) F)

我应该评估的表达式是: (CONS (CAR L1) (LIST (CDR L2)))

我按如下方式追溯它:

(CONS (CAR L1) (LIST (CDR L2)))
(CONS ((A B)) (LIST ((F))))
(CONS ((A B)) (((F))))
((((A B)) (((F)))))

或者(我不确定这是否更具可读性,但我已经按空格太多次了,现在无法退出(:

(
 (
  (
   (A B)
  )
  (
   (
    (F)
   )
  )
 )
)

这是对的吗?只是括号似乎太多了,但也许我只是偏执狂?

能找到的示例都没有这样的嵌套列表,所以我真的不确定我做得是否正确。

谢谢

CL-USER 13 > (step (CONS (CAR L1) (LIST (CDR L2))))
(CONS (CAR L1) (LIST (CDR L2))) -> :s
   (CAR L1) -> :s
      L1 -> :s
      ((A B) C D) 
   (A B) 
   (LIST (CDR L2)) -> :s
      (CDR L2) -> :s
         L2 -> :s
         ((E) F) 
      (F) 
   ((F)) 
((A B) (F)) 
这是

不正确的。让我们再试一次。

(car '((a b) c d))是基准面(a b)

(cdr '((e) f))(与(cdr '((e) . (f)))相同(是基准(f),这意味着(list (cdr '((e) f)))是基准((f))

因此,(cons (car l1) (list (cdr l2)))(cons '(a b) '((f)))相同,是基准((a b) . ((f))),与((a b) (f))相同。

最新更新