乐筑天下

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

[编程交流] 玩mapcar和lambda

[复制链接]
rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:00:23 | 显示全部楼层
 
 
让我们吃掉错误并编写很棒的代码:-)
回复

使用道具 举报

18

主题

111

帖子

93

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:02:58 | 显示全部楼层
 
如果我能成为“你们中的一员”那就太好了
我知道还有很多东西需要学习,我真的要感谢你们每一个人的帮助,把我推向正确的方向。
我记得我自己在这里提到过将AutoCAD视为数据库,所以我做到了
在那之后很多??变成灯泡lol(不是我看到的灯xD)
毕竟,我希望找到一份软件工程师的工作(在我达到这个水平之前还有很长的路要走)
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 16:07:20 | 显示全部楼层
我认为任何人只要有足够的练习,都可以达到他所需要的——就像我举的例子一样,没有李的那么优雅。。。但有些人会根据他们的个人背景和内在联系,对一些事情有更好的深入理解。我记得当Grrr刚开始Lisp程序时,我向他展示了如何处理选择集。他说我是一个SelSet处理神,但现在Grrr能够处理反应堆,这是我从未掌握过的。我很注重视觉,也许这就是为什么;当我们使用函数时,我们可以可视化它们返回的内容,而对于反应堆,我们只是没有得到可视化的线索。通过观察函数求值的不同步骤,我学到了什么。是什么让李的走近让我大吃一惊,让我的脑海里亮起了几盏灯
  1. (apply 'mapcar (cons 'list '[color="blue"](("ent1" " ent2" "ent3")("ent11" "ent22" "ent33")("ent111" "ent222" "ent333"))[/color]))

这是在下面的部分吗
  1. (cons 'list '(("ent1" " ent2" "ent3")("ent11" "ent22" "ent33")("ent111" "ent222" "ent333")))

它将列表字推到原始列表中,作为返回的汽车
因此,可以在列表上使用apply mapcar作为一个函数。(我必须承认,我无法真正理解为什么需要申请,以及为什么在没有申请的情况下它在特定情况下不起作用。我猜是因为必须首先评估缺点列表部分?为什么它对我来说很模糊。^^)。我可能已经能够创造出那个解决方案,但它可能是由尝试和错误引导的,而不是由控制和理解引导的。每当我创建函数时,我都会进行“通用”处理以获得基线,并帮助我“可视化”需要实现的内容,即不同的步骤,然后尝试使用mapcar/lambda/优化和/或使用更复杂但简洁的函数来“自动化”这些步骤。通常,对于每个处理,我需要编写2到4个函数,然后对其进行性能基准测试,以确定最终使用哪一个。当有人对学习绩效感兴趣时,Benchmark是迄今为止最好的老师。我仍然觉得我不久前才学会走路,当我设法保持平衡时,李就像乌塞恩·博尔特一样绕着我跑
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:10:24 | 显示全部楼层
 
我也记得,你在那里提供了相当长的答案。
事实上,我记得大家在这个论坛上的帮助(主要来自李·麦克和塔瓦,以及比加尔和罗伊)。
比格尔教我编程函数,Rlx曾经创建一个线程来显示他的一个程序。。当我尝试它时,我发现了一些错误,所以他开始解释如何去bug。
我已经记不清李和塔瓦帮了我多少次了。
我仍然没有声称我什么都知道,所以我可能会再次提出“愚蠢的问题或发现”。
 
 
 
一旦你掌握了,反应堆就没那么可怕了。。
我甚至不明白一些“初级Lisper”是如何决定处理反应堆的,这些反应堆的lisp编码知识比你少得多。(寻找用户“AfterTouch”)
它们只是LISP的一个不同方面。
 
 
 
看起来你从李那里得到了一个“发现”,尽管这不是他第一次透露这项技术。。
在这里,他向我介绍了它。
在这里,他描述了正在发生的事情。
在这里,他推了一个lambda函数,以便从(列表p1 p2)中找到一个中点。
示例6来自他的mapcar“n”lambda教程。
 
 
 
我们都在学习,(我仍在向你们学习——最近从Rlx和RJP的代码中学习)。
关键是保持一个低自我,只是问。。如果我必须创建另一个线程,比如“如何使用progn?”,我一点也不在乎。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:15:02 | 显示全部楼层
 
目录很好!
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:18:18 | 显示全部楼层
 
谢谢李,这是你的帮助下我能做的最起码的事情。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:23:59 | 显示全部楼层
 
非常有用,谢谢你们!李做的,Grrr偷的,哈哈。
 
当我没有得到什么东西时,我会做数字活检,比如:
 
  1. defun tst ( / l1 l2 l3)
  2. (setq l1 '(1 2 3) l2 '(11 12 13) l3 '(21 22 23) l4 (list l1 l2 l3))
  3. (apply 'list l1)                 ; -> (1 2 3)
  4. (apply 'list (list l1 l2 l3))    ; -> ((1 2 3) (11 12 13) (21 22 23))
  5. (apply 'mapcar (list l1 l2 l3))  ; -> error: bad function: 1
  6. (apply '+ l1)                    ; -> 6
  7. (apply '+ (list l1 l2 l3))       ; -> error: bad argument type: numberp: (1 2 3)
  8. (apply 'mapcar (cons '+ l4))     ; -> (33 36 39)
  9. (apply 'mapcar (cons 'list l4))  ; -> ((1 11 21) (2 12 22) (3 13 23))
  10. )
  11. (tst)

 
然后我通常会像啊啊,现在咬是有意义的!
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:25:24 | 显示全部楼层
我记得这也是李解释的
  1. (apply 'mapcar (cons 'list l4))
  2. (mapcar 'list l1 l2 l3 )
  3. ;; -> ((1 11 21) (2 12 22) (3 13 23))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 03:15 , Processed in 2.094653 second(s), 66 queries .

© 2020-2025 乐筑天下

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