乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 100|回复: 19

[编程交流] vl每

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 20:12:56 | 显示全部楼层 |阅读模式
你好
 
对列表操作进行了一些研究,
 
这是(vl every)问题:
 
  1. (vl-every '= '(1 2 3) '(1 2 3))

 
这是我(while)的等价物,不知怎的,我很难返回nil或T,最后我想出了一个解决方案,对吗?
 
  1. (setq
  2.    lst1 '(1 2 4)
  3.    lst2 '(1 2 3)
  4.    i         0
  5. )
  6. (while (or (< i (length lst1)) (< i (length lst2)))
  7.    (if        (= (nth i lst1) (nth i lst2))
  8.     (setq a  T)
  9.     (setq a  nil)
  10.    )
  11.    (setq i (1+ i))
  12.    a
  13. )

 
谢谢
S
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:17:02 | 显示全部楼层
在您的示例中,变量“a”要么等于T,要么等于nil,这是不正确的。
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 20:20:28 | 显示全部楼层
 
该函数假设返回T或nil
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:24:00 | 显示全部楼层
以下是构建vl every函数的三种可选方法:
  1. ([color=BLUE]defun[/color] every1 ( prd ls1 ls2 )
  2.    ([color=BLUE]or[/color] ([color=BLUE]not[/color] ls1) ([color=BLUE]not[/color] ls2)
  3.        ([color=BLUE]and[/color] (prd ([color=BLUE]car[/color] ls1) ([color=BLUE]car[/color] ls2)) (every1 prd ([color=BLUE]cdr[/color] ls1) ([color=BLUE]cdr[/color] ls2)))
  4.    )
  5. )
  1. ([color=BLUE]defun[/color] every2 ( prd ls1 ls2 )
  2.    ([color=BLUE]apply[/color] '[color=BLUE]and[/color] ([color=BLUE]mapcar[/color] 'prd ls1 ls2))
  3. )

示例:
  1. _$ (vl-every '= '(1 2) '(1 2 3))
  2. T
  3. _$ (every1 = '(1 2) '(1 2 3))
  4. T
  5. _$ (every2 = '(1 2) '(1 2 3))
  6. T
  7. _$ (every3 = '(1 2) '(1 2 3))
  8. T
  1. _$ (vl-every '= '(1 2 4) '(1 2 3))
  2. nil
  3. _$ (every1 = '(1 2 4) '(1 2 3))
  4. nil
  5. _$ (every2 = '(1 2 4) '(1 2 3))
  6. nil
  7. _$ (every3 = '(1 2 4) '(1 2 3))
  8. nil
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 20:26:52 | 显示全部楼层
李。。如果你不存在,我们必须发明你
谢谢你!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:29:57 | 显示全部楼层
不客气,谢
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 20:34:17 | 显示全部楼层
如果李不存在,老实说,autodesk可能做了一些疯狂的事情,摆脱了autoLISP。有了所有这些API,需要有人不断提醒我们LISP的灵活性和强大性。。。。。我的票投给了李,这是肯定的。
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 20:35:53 | 显示全部楼层
当然,在过去的几年里,人们似乎对LISP有了更多的兴趣。一个巨大的好处是它能够跨平台和多个版本运行,而不需要为每个版本重新编译。
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 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是幸运的,而不是。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:43:33 | 显示全部楼层
 
你能说布兰登真是太好了——真的非常感谢!
 
正如他们所说,我们都站在巨人的肩膀上——不用说,当我第一次开始学习LISP时,周围有几个“巨人”,他们肯定对我的学习很有启发。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 09:15 , Processed in 0.518697 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表