明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybird

[【高飞鸟】] LISP陷阱与缺陷

    [复制链接]
发表于 2022-10-20 15:12:43 | 显示全部楼层
标记收藏,谢谢大佬无私分享
发表于 2022-10-21 07:56:34 | 显示全部楼层
本帖最后由 baitang36 于 2022-10-21 07:59 编辑

"要说明的是,对于赋值为整数类型,lisp视作为立即数,即使你用内部方式改变了某个值,复制的符号的值并不会发生改变。
也就是说(setq a 3) ,(setq b a) 当你即使用内部方法修改a的数值,b的数值依然不变。"
对于小整数,数值小于1G,高大侠的说法是正确的,但对于大整数,数值大于1G,它也会变成引用。
小整数在内存中直接存储2n+1,它是直接存放在符号的值中的,比如(setq a 1),1这个数值变成3放到符号a的value中。


lsp使用引用带来的好处也是有的,比较两个字符串是否相等,只需要看是不是指向了同一个字符串,而不需要逐个字节去对比,速度飞快。
发表于 2022-10-21 11:07:43 | 显示全部楼层
本帖最后由 ivde 于 2022-10-21 11:08 编辑
baitang36 发表于 2022-9-11 16:32
lisp有点歧视汉字,用保留函数计算hash值时,并未把汉字计算在内。因此你改了汉字并不会影响hash值。

autolisp 是 ANSI,不是UNICODE
vl-string->list
vl-list->string
发表于 2022-11-15 12:29:34 | 显示全部楼层
大神威武,感谢分享
发表于 2022-12-4 16:21:50 | 显示全部楼层
谢谢大佬的分享!!!!
发表于 2022-12-4 16:53:44 | 显示全部楼层
学习了 感谢大佬分享
发表于 2022-12-13 23:26:31 | 显示全部楼层
全是干货,收获很大,感谢大佬解惑。果断收藏防雷。
发表于 2023-3-28 08:35:57 | 显示全部楼层
  1. ;; (IntSort '(2 6 2 4 5 7 5)) → (2 2 4 5 5 6 7)
  2. (defun IntSort(lst)(mapcar'(lambda(x)(nth x lst))(vl-sort-i lst'<)))
发表于 2023-4-9 07:04:06 | 显示全部楼层
感谢大佬,又学到了一招
发表于 2023-5-5 09:19:43 | 显示全部楼层
研究的真是深入啊。小白先看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:52 , Processed in 0.159973 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表