longcashman 发表于 2014-4-1 11:58:19

重慶崽兒 发表于 2014-1-25 22:22 static/image/common/back.gif
(apply ’function list)
参数



第一个问题
mapcar 的参数是( 函数 一系列表)
(min (l1)(l2)(l3)(l4))就是这样的形式

第二个问题
mapcar最让初学者迷惑的地方是因为范例容易让人误解
$ (mapcar '(lambda (x)(+ x 3) )'(10 20 30) ) =>(13 23 33)
如果再加一个范例
$ (mapcar '(lambda (x)(+ x y) )'(10 20 30) '(1 23))=> (11 22 33)
就也许更清楚了
因为mapcar是把所有表的相同位置的元素取出来作为参数交给函数运算然后返回每次结果构成的新表
上例就是(list (+ 10 3)(+ 20 3)(+ 30 3))
而AUDESK的范例容易让人误会仅仅是把表中的每个元素做为参数,交给函数运算然后返回结果构成的表

所以这个(mapcar 'min '(1 0 0) '(2 2 1) '(1 2 1) '(3 4 0))
就是(list (min 1 2 1 3)(min 0 2 2 4) (min 0 1 1 0))=>(1 0 0)

重慶崽兒 发表于 2014-4-1 22:05:35

longcashman 发表于 2014-4-1 11:58 static/image/common/back.gif
第一个问题
mapcar 的参数是( 函数 一系列表)
(min (l1)(l2)(l3)(l4))就是这样的形式


我只想说,太感谢大大您了,“相同位置”这四个字真是精髓!
现在明白了,要是某个子表里面不是3个元素,比如:(mapcar 'min '(1 0 0 0) '(2 2 0 0) '(1 2 0) '(3 4 0))
他还是只会提取相同位置的元素来交给函数吧,也就是只提取前3个。明白了,感谢大大!

CLOCK 发表于 2015-5-2 14:49:26

longcashman 发表于 2014-4-1 11:58 static/image/common/back.gif
第一个问题
mapcar 的参数是( 函数 一系列表)
(min (l1)(l2)(l3)(l4))就是这样的形式


我也是写了1年后才自己体会到这个函数的真正含义的,官方的例子确实太坑爹了。

CLOCK 发表于 2015-5-2 15:01:50

longcashman 发表于 2014-4-1 11:58 static/image/common/back.gif
第一个问题
mapcar 的参数是( 函数 一系列表)
(min (l1)(l2)(l3)(l4))就是这样的形式


$ (mapcar '(lambda (x)(+ x y) )'(10 20 30) '(1 23))=> (11 22 33)
这个例子也不对吧

CLOCK 发表于 2015-5-2 15:05:03

有木有把lambda apply mapcar 各种用法的帖子啊,记得以前哪看到过的(估计有2年左右了),由浅入深的都有。现在找不到了。。。

前生 发表于 2015-5-2 19:38:31

有时简单的是很繁杂的,有时候,看起来繁杂的,其实是简单的。

Kye 发表于 2015-5-9 13:49:47

longcashman 发表于 2014-4-1 11:58 static/image/common/back.gif
第一个问题
mapcar 的参数是( 函数 一系列表)
(min (l1)(l2)(l3)(l4))就是这样的形式


对mapcar 分析的太到位了 谢谢老师

dingtiedt 发表于 2015-9-2 16:07:44

CLOCK 发表于 2015-5-2 15:01 static/image/common/back.gif
$ (mapcar '(lambda (x)(+ x y) )'(10 20 30) '(1 23))=> (11 22 33)
这个例子也不对吧

(mapcar '(lambda (x y)(+ x y) )'(10 20 30) '(1 2 3))

llsheng_73 发表于 2015-9-2 17:03:23

CLOCK 发表于 2015-5-2 15:05 http://bbs.mjtd.com/static/image/common/back.gif
有木有把lambda apply mapcar 各种用法的帖子啊,记得以前哪看到过的(估计有2年左右了),由浅入深的都有。 ...

(defun GetExtents (pts)
(mapcar'(lambda(x)(apply'mapcar(cons x pts)))'(min max))
)
把楼主的改了一下

伪书虫86 发表于 2015-9-3 21:21:16

这个境界太高了,,,学习了
页: 1 [2] 3
查看完整版本: apply和mapcar的用法