我的我啊 发表于 2014-9-22 10:42:05

(defun sub () (mapcar '(lambda(x y) (defun x nil (princ y))) lst lst))

求助
(defun sub () (mapcar '(lambda(x y) (defun x nil (princ y))) lst1 lst2))
可以实现吗?如果能
其中的x应该是什么类型的数据呢

ll_j 发表于 2014-9-22 11:03:45

不行。
defun和setq的第一个参数是固定的符号名,不可以使用变量。
式: (mapcar '(lambda(x y) (defun x nil (princ y))) (list 'a 'b) '(1 2)) 返回:(X X),这里的X是无意义的。
set函数的第一个参数可以是变量,比如:
(mapcar '(lambda(x y) (set x (lambda(y) (1+ y)))) (list 'a 'b) '(1 2))
返回:
(#<SUBR @1a904988 -lambda-> #<SUBR @1a904988 -lambda->)
定义了两个函数a和b:
命令: (a 3)
4
命令: (b 3)
4


我的我啊 发表于 2014-9-22 16:41:00

ll_j 发表于 2014-9-22 11:03 static/image/common/back.gif
不行。
defun和setq的第一个参数是固定的符号名,不可以使用变量。
式: (mapcar '(lambda(x y) (defun x ...

好吧,本想偷个懒,直接定义出直接使用的c:tt类型的函数名。看来是做不到了

ivde 发表于 2014-9-22 18:06:04

(defun sub ()
(mapcar '(lambda (x y)
             (eval (append '(defun)
                           (list x)
                           '(nil)
                           (list (list 'princ y))
                           '((princ))
                   )
             )
           )
          '(a b)
          '(1 2 3)
)
(princ)
)

我的我啊 发表于 2014-9-23 09:17:29

ivde 发表于 2014-9-22 18:06 static/image/common/back.gif
(defun sub ()
(mapcar '(lambda (x y)
             (eval (append '(defun)


成功!膜拜

guankuiwu 发表于 2021-2-14 19:18:57

没看明白啊
页: [1]
查看完整版本: (defun sub () (mapcar '(lambda(x y) (defun x nil (princ y))) lst lst))