【问题标题】:LISP function fails and returns NIL when making a list of Nth items of other listsLISP 函数失败并在制作其他列表的第 N 项列表时返回 NIL
【发布时间】:2022-01-12 19:29:10
【问题描述】:

我需要创建一个命名函数,它从三个主列表的第三个项目中创建一个新列表。我做了这段代码

    (defun func (nth n))
    (lambda (l1 l2 l3) '(H G (U J) (T R)) '(2 1 (+ 4 5)) '(TYPE CHAR REAL (H G)))
    (write (func (lambda (l1 l2 l3) '(H G (U J) (T R)) '(2 1 (+ 4 5)) '(TYPE CHAR REAL (H G))) 2))

但它返回 NIL。我做错了什么?

【问题讨论】:

    标签: lisp


    【解决方案1】:

    您需要缩进和格式化您的代码。否则它是一个不可读的字符块。

    这是你所拥有的:

    您的函数func 接受两个参数并且什么都不做。它总是返回 NIL。

    然后是一个接受三个参数的 lambda 表达式。它不使用它们。它具有三种身体表情。前两个未使用,第三个正在返回。

    第三个表达式调用函数func,它总是返回NIL。 WRITE 然后打印这个 NIL。

    您的代码看起来像这样:

    (defun func (nth n)
      ; no functionality, does nothing and returns NIL
      )
    
    (lambda (l1 l2 l3)
       '(H G (U J) (T R))
       '(2 1 (+ 4 5))
       '(TYPE CHAR REAL (H G)))
    
    (write (func (lambda (l1 l2 l3)
                   '(H G (U J) (T R))
                   '(2 1 (+ 4 5))
                   '(TYPE CHAR REAL (H G)))
                 2))
    

    提示:您需要编写实际功能。

    【讨论】:

    • 它使用该代码: (defun func (l1 l2 l3) (list (nth 2 l1) (nth 2 l2) (nth 2 l3))) (write (func '(H G (U J ) (TR)) '(2 1 (+ 4 5)) '(TYPE CHAR REAL (H G)))) 谢谢指出解决方法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多