vl每
你好对列表操作进行了一些研究,
这是(vl every)问题:
(vl-every '= '(1 2 3) '(1 2 3))
这是我(while)的等价物,不知怎的,我很难返回nil或T,最后我想出了一个解决方案,对吗?
(setq
lst1 '(1 2 4)
lst2 '(1 2 3)
i 0
)
(while (or (< i (length lst1)) (< i (length lst2)))
(if (= (nth i lst1) (nth i lst2))
(setq aT)
(setq anil)
)
(setq i (1+ i))
a
)
谢谢
S 在您的示例中,变量“a”要么等于T,要么等于nil,这是不正确的。
该函数假设返回T或nil 以下是构建vl every函数的三种可选方法:
(defun every1 ( prd ls1 ls2 )
(or (not ls1) (not ls2)
(and (prd (car ls1) (car ls2)) (every1 prd (cdr ls1) (cdr ls2)))
)
)
(defun every2 ( prd ls1 ls2 )
(apply 'and (mapcar 'prd ls1 ls2))
)
示例:
_$ (vl-every '= '(1 2) '(1 2 3))
T
_$ (every1 = '(1 2) '(1 2 3))
T
_$ (every2 = '(1 2) '(1 2 3))
T
_$ (every3 = '(1 2) '(1 2 3))
T
_$ (vl-every '= '(1 2 4) '(1 2 3))
nil
_$ (every1 = '(1 2 4) '(1 2 3))
nil
_$ (every2 = '(1 2 4) '(1 2 3))
nil
_$ (every3 = '(1 2 4) '(1 2 3))
nil 李。。如果你不存在,我们必须发明你
谢谢你! 不客气,谢 如果李不存在,老实说,autodesk可能做了一些疯狂的事情,摆脱了autoLISP。有了所有这些API,需要有人不断提醒我们LISP的灵活性和强大性。。。。。我的票投给了李,这是肯定的。 当然,在过去的几年里,人们似乎对LISP有了更多的兴趣。一个巨大的好处是它能够跨平台和多个版本运行,而不需要为每个版本重新编译。 再次重申,我认为李(不仅是,而且是巨大的)对这一利益负责。
我可以证明这样一个事实,如果有一位杰出的JavaScript程序员在论坛上发帖,让autocad做任何他想做的事情。。。。。。。然后我可能会选择Java作为首选API(当然假设它是一个可行的选项,但这只是为了便于讨论),但李在过去的很多年里至少吸引了我自己使用autoLISP,我非常怀疑我是唯一一个。
他展示了如何使用lisp或Vlisp完成任何事情,简洁且快速,令人惊讶的是,在一些例程中,只需几行代码就能完成多少工作。。。。
基本上,我想说的是,如果我们生活在一个没有李·麦克的宇宙中,而autocad论坛从来没有看到过他的任何帖子,我不确定我现在是否会Lisp程序。
荡漾着人,荡漾着波浪。
让一件好事永存一直是我努力做的事。。。。。不破产不修复它,有点像思考(虽然改进不是修复)。。。互联网的运作方式。。。李能够向全世界展示lisp是一种强大的野兽,并不断向我们展示它是如何做到的。。。。。。。好吧,如果不是李,或者说其他一些研究Java或其他语言的大师,autodesk可能已经放弃了LISP,因为它太古老了。我知道这很牵强,但关键是,我们都很幸运,能在同一时间拥有如此聪明的头脑(或者至少我是这样认为的)
我并不想从其他大师那里得到任何东西,因为他们也非常令人难以置信。Henrique MS、Msasu、Marko、cldh_jh、Kerry、pBe、MP、Irneb等你知道你是谁。。。。。这些大师中有许多人Lisp程序的时间比李长,但我不确定还有谁比他更突出。我能想到的唯一一个接近他的人是JTB在JTB world,因为他有一个相当受欢迎和访问过的网站,展示他的Lisp程序的方式和李一样,虽然有不同的意图。但对每个人来说,他们自己和。。。
tldr,我们很幸运地有了lee lisping,而不是使用另一种语言进行编码。。。。autoLISP是幸运的,而不是。。。
你能说布兰登真是太好了——真的非常感谢!
正如他们所说,我们都站在巨人的肩膀上——不用说,当我第一次开始学习LISP时,周围有几个“巨人”,他们肯定对我的学习很有启发。
页:
[1]
2