为什么下面的Lisp代码没有给出期望的结果

Sreekumar R

我有一个清单

'((1 2 (A B C)) (2 3 (B C D)) (4 5 (C D F)))

我想处理内部列表中的元素(在这种情况下,我想将(A B C)其他列表更改(M M M))。

我编写了代码(process lst),它将对内部列表执行此任务。

(defun process (lst)
  (cond
    ((null lst) '())
    (T (cons 'M (process (cdr last))))))

当我从main函数调用时

(defun iterate-list (lst)
  (cond
    ((null lst) '())
    ((listp (car lst)) 
     (cons (process (car lst)) 
           (iterate-list (cdr lst))))
    (T 
     (cons (car lst) 
           (iterate-list (cdr lst))))))

我得到((M M M) (M M M) (M M M))代替((1 2 (M M M)) (2 3 (M M M)) (4 5 (M M M)))

但是当我(cons (car lst)) (iterate-list (cdr lst)))在第二种情况下使用相同的功能时(listp (car lst)),我得到了正确的答案,那就是

'((1 2 (A B C)) (2 3 (B C D)) (4 5 (C D F)))

我不知道我在哪里犯错。

核心转储

注意 您需要重命名lastlstin process

我正在获取[[MMM)(MMM)(MMM))而不是[[1 2(MMM))(2 3(MMM))(4 5(MMM))))。

该代码可以工作,但不能达到您想要的深度:

(process '(a b c d))
=> (M M M M)

(iterate-list '(1 2 (A B C)))
=> (1 2 (M M M))

为了处理根列表中的所有列表,可以执行以下操作:

(mapcar #'iterate-list '((1 2 (A B C))
                         (2 3 (B C D))
                         (4 5 (C D F))))

=> ((1 2 (M M M)) (2 3 (M M M)) (4 5 (M M M)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么下面的Parse代码没有返回错误?

来自分类Dev

为什么这段代码没有给出期望的输出?

来自分类Dev

为什么下面的Java代码会给出StackOverflow错误?

来自分类Dev

为什么这些代码块没有给出相同的结果?

来自分类Dev

为什么这些代码块没有给出相同的结果?

来自分类Dev

为什么代码体没有给出相同的结果?

来自分类Dev

为什么下面的代码编译时没有错误?

来自分类Dev

为什么在下面的代码中没有抛出ArrayStoreException?

来自分类Dev

为什么这个while循环没有在下面的代码中结束?

来自分类Dev

为什么 $scope 在下面的代码中没有定义在这里

来自分类Dev

为什么我的控制器没有在下面的代码中注册?

来自分类Dev

表列的固定大小没有给出期望的结果,为什么不呢?

来自分类Dev

Lisp中的数组与列表:为什么下面的代码中的列表这么快?

来自分类Dev

Lisp中的数组与列表:为什么下面的代码中的列表这么快?

来自分类Dev

为什么下面的代码显示NameError?

来自分类Dev

为什么下面的代码给ArrayIndexOutofBounds异常?

来自分类Dev

表边框没有给出期望的结果

来自分类Dev

JavaScript RegExp没有给出期望的结果

来自分类Dev

MySQL查询没有给出期望的结果

来自分类Dev

与下面的代码有什么区别?

来自分类Dev

为什么optimum_count没有给出正确的结果?

来自分类Dev

为什么DataReader给出“枚举没有结果”?

来自分类Dev

为什么PHP的“ if语句”没有给出预期的结果?

来自分类Dev

为什么此BigQuery WHERE NOT IN语句没有给出结果?

来自分类Dev

为什么这个Ansi C程序没有给出结果?

来自分类Dev

为什么DocumentFilter没有给出预期的结果?

来自分类Dev

为什么下面的代码块给出输出“ ZZZ(某些垃圾值)”而不是“ ZZ(某些垃圾值)”

来自分类Dev

我有 2 段 xquery 代码,其中 1 给出了正确的结果,但 2 没有。为什么?

来自分类Dev

为什么这段代码没有给出正确的输出?

Related 相关文章

  1. 1

    为什么下面的Parse代码没有返回错误?

  2. 2

    为什么这段代码没有给出期望的输出?

  3. 3

    为什么下面的Java代码会给出StackOverflow错误?

  4. 4

    为什么这些代码块没有给出相同的结果?

  5. 5

    为什么这些代码块没有给出相同的结果?

  6. 6

    为什么代码体没有给出相同的结果?

  7. 7

    为什么下面的代码编译时没有错误?

  8. 8

    为什么在下面的代码中没有抛出ArrayStoreException?

  9. 9

    为什么这个while循环没有在下面的代码中结束?

  10. 10

    为什么 $scope 在下面的代码中没有定义在这里

  11. 11

    为什么我的控制器没有在下面的代码中注册?

  12. 12

    表列的固定大小没有给出期望的结果,为什么不呢?

  13. 13

    Lisp中的数组与列表:为什么下面的代码中的列表这么快?

  14. 14

    Lisp中的数组与列表:为什么下面的代码中的列表这么快?

  15. 15

    为什么下面的代码显示NameError?

  16. 16

    为什么下面的代码给ArrayIndexOutofBounds异常?

  17. 17

    表边框没有给出期望的结果

  18. 18

    JavaScript RegExp没有给出期望的结果

  19. 19

    MySQL查询没有给出期望的结果

  20. 20

    与下面的代码有什么区别?

  21. 21

    为什么optimum_count没有给出正确的结果?

  22. 22

    为什么DataReader给出“枚举没有结果”?

  23. 23

    为什么PHP的“ if语句”没有给出预期的结果?

  24. 24

    为什么此BigQuery WHERE NOT IN语句没有给出结果?

  25. 25

    为什么这个Ansi C程序没有给出结果?

  26. 26

    为什么DocumentFilter没有给出预期的结果?

  27. 27

    为什么下面的代码块给出输出“ ZZZ(某些垃圾值)”而不是“ ZZ(某些垃圾值)”

  28. 28

    我有 2 段 xquery 代码,其中 1 给出了正确的结果,但 2 没有。为什么?

  29. 29

    为什么这段代码没有给出正确的输出?

热门标签

归档