请教双mapcar的用法
请教各位朋友一个问题。关于MAPCAR 的关系。(defun T12 (l / x)(mapcar ;;11
'(lambda (a)
(mapcar;;2
'(lambda (b)
(setq x (cons (abs (- b a)) x))
);;'(lambda (b)
(setq l (cdr l))
);;2
);;'(lambda (a)
l
);;11
(vl-sort x '<)
)和
(apply '(lambda (x y z) (* x (- y z)) ) '(5 20 14) )//30
前面的(defun T12 (l / x)里面MAPCAR分开用的妙处是什么啊!。。
(lambda (x y z) 这个好理解
先谢谢了!
看着晕,可能是为了减少代码量 鱼与熊掌 发表于 2015-1-29 00:12 static/image/common/back.gif
看着晕,可能是为了减少代码量
多谢关照! 本帖最后由 longcashman 于 2015-1-29 10:41 编辑
就是表中每个数字对其余数字求差的绝对值
(5 8 1)
第一个mapcar 分别对581运算
第二个mapcar a=5 b分别= 8 1; a=8 b= 1
最后排序把重复的结果去掉
用在需要---表中每个元素与其余元素分别运算的时候
把(vl-sort ...)这行注释掉就可以看到运算的过程 如果不是写代码的人,容易晕。分行写容易读 longcashman 发表于 2015-1-29 10:30 static/image/common/back.gif
就是表中每个数字对其余数字求差的绝对值
(5 8 1)
第一个mapcar 分别对581运算
谢谢指点!但是2个mapcar这样嵌套。不太理解。慢慢去理解。
相当于这个
(defun tt (l / x)
(while l
(setq a (car l))
(setq l (cdr l))
(foreach b l
(setq x (cons (abs (- b a)) x)))) (vl-sort x '<)) longcashman 发表于 2015-1-29 11:10 static/image/common/back.gif
相当于这个
(defun tt (l / x)
(while l
再次感谢光临!基本理解了
页:
[1]