samifox 发表于 2022-7-5 20:12:56

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

Tharwat 发表于 2022-7-5 20:17:02

在您的示例中,变量“a”要么等于T,要么等于nil,这是不正确的。

samifox 发表于 2022-7-5 20:20:28

 
该函数假设返回T或nil

Lee Mac 发表于 2022-7-5 20:24:00

以下是构建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

samifox 发表于 2022-7-5 20:26:52

李。。如果你不存在,我们必须发明你
谢谢你!

Lee Mac 发表于 2022-7-5 20:29:57

不客气,谢

Bhull1985 发表于 2022-7-5 20:34:17

如果李不存在,老实说,autodesk可能做了一些疯狂的事情,摆脱了autoLISP。有了所有这些API,需要有人不断提醒我们LISP的灵活性和强大性。。。。。我的票投给了李,这是肯定的。

Snownut 发表于 2022-7-5 20:35:53

当然,在过去的几年里,人们似乎对LISP有了更多的兴趣。一个巨大的好处是它能够跨平台和多个版本运行,而不需要为每个版本重新编译。

Bhull1985 发表于 2022-7-5 20:39:56

再次重申,我认为李(不仅是,而且是巨大的)对这一利益负责。
我可以证明这样一个事实,如果有一位杰出的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是幸运的,而不是。。。

Lee Mac 发表于 2022-7-5 20:43:33

 
你能说布兰登真是太好了——真的非常感谢!
 
正如他们所说,我们都站在巨人的肩膀上——不用说,当我第一次开始学习LISP时,周围有几个“巨人”,他们肯定对我的学习很有启发。
页: [1] 2
查看完整版本: vl每