我有一个lisp作业,我很难用它.
我必须编写一个执行联合操作的函数.该函数采用2个输入,以原子或列表的形式和每个元素的联合,保留顺序并剥离所有级别的括号.
功能的输出:
(my-union 'a 'b) ;; (a b)
(my-union 'a '(b)) ;; (a b)
(my-union '(a b) '(b c)) ;; (a b c)
(my-union '(((a))) '(b(c((d e))a))) ;; (a b c d e)
Run Code Online (Sandbox Code Playgroud)
我对lisp很新.这是我到目前为止所写的内容,它仅适用于第三个示例:
(defun new-union (a b)
(if (not b)
a
(if (member (car b) a)
(new-union a (cdr b))
(new-union (append a (list (car b))) (cdr b)))))
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
这是我在普通lisp中的第一个作业的一部分.
我们必须定义一个表示从0到100的任意10个随机整数的变量:我不确定这里要问的是什么.我应该写:(setf var1 '())
然后,我们必须定义一个函数,该函数生成一个包含10个随机整数的列表,并返回包含这些数字的列表.
这是我写的,但我一直把NIL作为我的输出.你知道代码有什么问题:
(setf *random-state* (make-random-state t))
(setf var1 '())
(defun randlist (var1)
(dotimes (i 10)
(setf temp (random 101))
(cons 'temp var1 ) ) )
Run Code Online (Sandbox Code Playgroud)