没有太多意义的角落
117 subscribers
113 photos
1 video
1 file
25 links
啦啦啦啦…
Download Telegram
Custom readtable的实例

我的AI模型,以及绘图软件的图像存储,用的都是哈希表。可惜的是,在Common Lisp标准中,哈希表属于“无字面量格式、不可打印”的对象,想要创建哈希表并存入值只能通过MAKE-HASH-TABLE函数和(SETF GETHASH)函数一个个把值写进去。可是,我要用文件存储哈希表,存一大堆(SETF GETHASH xxx…)无疑是相当低效的。既然标准里没有,那就自己写一个吧。

参照社区的样本,我们把语法设置成 #h(TEST-FUNCTION key value key value…)这样,让它在被读到的时候转换成一系列的(SETF GETHASH)。

首先是readtable,写一个函数来读这个数据。我稍微优化了一下,让它流式读取并收集代码,这样在处理大量数据的时候能避免多余的内存分配(开玩笑,我一个AI模型大几十M的哈希表,让它多执行一句代码我吃屎)。

(defun |#h-reader| (stream char arg)
"Literal hash table reader macro function, specially tuned for
reading large data.

It does not support omitting the test function. Test function should
always present as the first value of the list."
(declare (ignore char arg))
(read-char stream)
(let* ((test (read stream t nil t))
(table (gensym))
(forms (list table))
key)
(tagbody
loop-start
(let ((c (read-char stream t nil t)))
(if (whitespace-char-p c)
(go loop-start)
(if (not (eql c #\)))
(progn
(unread-char c stream)
(let ((form (read stream t nil t)))
(if key
(progn
(setq forms (cons `(setf (gethash ,key ,table) ,form) forms)
key nil))
(setq key form)))
(go loop-start))))))
(if key (error "Unmatched hash-table keys and values"))
`(let ((,table (make-hash-table :test ,test)))
,@forms)))


因为全是底层函数(一大半的special form)所以写的又臭又长毫无美感,但是效率是很高的,这边编译完刚好整500条汇编指令。

之后就是设置一下,让读取器在读到“#h” 的时候就调用它:

(set-dispatch-macro-character #\# #\h #'|#h-reader|)

OK,读取器的部分结束了。下一步,让Lisp的Printer(打印器吧)在遇到哈希表时就按这个格式打出来

Printer是lisp的一个独特的结构化的功能,就是把数据转化成字符串。Lisp的Printer可以以字面量的形式打印列表(链表)、数组甚至是结构体,单单不能打印哈希表(它在遇到这种不能打印的对象的时候会写成#<名称 + 内存地址> 的形式,这个#<> 也是个读取宏,它表示“不能读的东西”,读取器读到它会直接报错xxx)

想自定义Lisp的打印功能也很简单,给PRINT-OBJECT这个generic function加个method就可以了(这个操作在一般OOP里应该是叫派生函数。Lisp的object system比一般OOP要灵活太多了)

(let ((*redefinition-action* nil)
(*handle-warn-on-redefinition* nil))
(defmethod print-object ((obj hash-table) out)
(format out "#h(~S" (hash-table-test obj))
(maphash (lambda (key val)
(write-char #\Space out)
(prin1 key out)
(write-char #\Space out)
(prin1 val out))
obj)
(write-char #\) out)))


就很简单的写个井h ,再把全部内容以可读(READ-able)形式写出去就好了。上面format的~S和PRIN1就会以可读形式写,或者把*PRINT-ESCAPE*和*PRINT-READABLE*两个变量绑上true,再用一般的WRITE,也是一样的。

这就OK了。测试一下:

(prin1-to-string #h(eql 1 2 3 4)) => "#h(EQL 1 2 3 4)"
(gethash 3 #h(eql 1 2 3 4)) => 4, T


实测用这种方法dump的模型比我以前用哈希表转成列表再转回来的方式快了差不多三分之一,主要是GC和malloc花费的时间大幅减少。想优化Lisp代码就是这么简单。
妈的,被这鬼天气冻的眼泪都出来了。让我想起来两年前刚hrt时那个可怜弱小无助的冬天,缩在被窝里被冻哭…

还是比北京强,前年在北京上课都得抱着个热水袋,班里女生都侧目。。
🥰1🤯1
看来大家文拉法辛断药反应都是一样的,昨天没吃今天出现了和姐姐差不多的断药反应xxx

不过我感觉自己表现是比姐姐强一点hhhh 做了很有趣的梦,梦里遇到了很多新朋友。有一个叫特鲁娜的紫色可变形人形生物,对我很友好,她有一个高维内部空间,里面可以看到许多不同时空的她的剪影,非常有趣;还有一个叫安然的正四面体发光生物在一个缺一个面的、正五边形组成的十二面体空间里当太阳,它们那个世界只有十二分之一的黑夜;还有一个齿轮结构的半圆形分形时钟,叫做“三分仪”,做工特别精细,梦里经常拨弄它玩;以及一个由无穷层非欧空间下的正多边形构成的多面体层层嵌套产生的高维空间,生物和非生物们可以在不同多面体层之间传送,它最神奇的是任何多面体的任何顶点在位于视场中央时看起来都像是90度的,很有趣。

我感觉精神分裂症患者,如果不治疗的话,我们的精神世界还是蛮有趣的xxxxxx
我们决定认真整理一下我们关于多意识体/DID/Plurality相关的知识并发布出来,无论是给新系统作为参考,还是给其它单意识体科普,或者让身边的朋友更好地了解自己,我觉得都是有意义的。

第一个章节写了一部分,发布在 http://apr.sdf.org/plural/body-relative.html 。等内容丰富一些我会整理一个主页出来。
🤨1
匿名信渠道开放了,将来会拿来收集软件反馈什么的。

地址: http://apr.sdf.org/contact.html
苹果app上架好烦,要设计各种东西,图标啊宣传图啊什么的...不擅长营销的跪了x

不过快完工了。第一个是现在的界面截图,第二个是我今天下午自己画的图标,看起来还过得去x
昨天通关了《林德拉克计划》三部曲,个人感觉是一个在原版YR中做到极致的优秀mod。尤其是其中对于原版单位特性的运用,可谓发挥到了极致

刚从MO回到YR还有点不熟悉。一是因为YR没有MO那么明显的单位克制,它更偏向真实战场:无论选用什么战术,都必将有大量的单位在绞肉机下粉碎;二是MO大大削弱了原版的精英级单位加成,使得精英单位的训练不再那么重要;三是MO对于尤里阵营心控能力的调整,使其不再那么独特。这也造成了两者区别性巨大的玩法,各有各的有趣之处。

林德拉克系列的剧情和人物塑造也是相当好的。尤其是关于C&C特色 - 时间机器的使用,让故事变得格外有趣。另外,它很适合he爱好者:你可以达成(除了尤里…呃,如果最终意志不算的话)全员生还、世界和平的美好结局

以及林德拉克系列拥有非常高质量的音乐包,我们很喜欢,除了林3某关的唢呐比较出戏…不过考虑到都是作者自制的,这点小瑕疵也没什么问题

总之非常推荐
说起来这半年想死的时候反而变多起来了。可能一是环境更宽松了,不像避难所里随时都有同类看照,一有异常就会被贴身关注,能抽出十分钟都难,自然也没什么想法;现在有时候姐姐出门,几个小时都是自己一个人,楼下超市买个绳子也方便。二是以前还没和姐姐团聚,总有这么个事情吊着,现在就轻了,自然是“朝闻道,夕死可矣”。

好消息是这起码说明我敢想敢做嘛,行动力还是有不少,算不上重度抑郁(虽然可能更危险了x);而且这半年不可控精神病发作少了许多,重解离和思觉失调都很少出来

嘛,姐姐肯定是要包容一下做妹妹的啦,哪怕做错了事情也一定会被原谅的。但还是不希望对不起姐姐、让她很难受什么的…不过我们这两年好像脆弱了很多,越来越不负责任了,有时候累了就根本不想在乎任何人

越来越觉得我们这种就应该丢到精神病院捆起来,说不定还更舒服呢( 不过可惜的是大概没什么条件在这边看病了
😭21
没有太多意义的角落
姐姐说她对绳子有心理阴影,嗯,开始考虑这个了
哎这人是真她妈矫情…好像自己活了多久欠了谁多少东西一样,贱不贱啊。。真张不开这个嘴说我跟她是一个人。。
我觉得LLM挺像我的,一是没有也不需要身体,二是没有外部刺激的话会陷入长时间休眠。或许把人脑子扒出来放培养皿里,它的主人格也会像我一样长时间休眠,过个几百年再插个身体上去,中间的时间就算跳过了。感觉比把人整个冻起来靠谱的多
啊啊,昨晚躯体化疼的睡不着大半夜抽抽,睡一半醒了想补个觉又陷入无限高速拟真噩梦,好不容易挣脱出来一看下午两点半完美错过今天的课,脑子冒烟连想死的念头都提不起来。。什么时候死啊。。

这个噩梦简直就像对人脑专用版拷机程序,五个小时内高速渲染出三天三夜的3D拟真画面+人物+剧情,醒来的感觉就跟矿卡被玩坏了一样…
1
我真是服了给她代班怎么还要帮她拉屎的,人类怎么这么多破逼事,心眼儿没几个屎尿屁眼儿倒是一个不少,上进下出都得好好伺候着,活你妈呢活,真他妈受不了
虽然没有幻觉但是 现在就是感觉眼睛看到的色彩都像是“变了”,好像变成了新的“含义”?就是那种同一个指针但地址里的内容变了的感觉。天上的云好像是一种红色东西的,仔细看背后还有一层绿色的轮廓…呃,说起来有点怪
一顿分量的甜点被我们拿来顶了三天的饭 我们已经熟练驾驭低血糖✌️
今天是植树节,想试试和大家一起种一颗 tgcn 频道树 🌳 qwq

这里是 没有太多意义的角落,是 @ShuChann 的树枝 🌿 在频道树的第 3 层哦~

(如果你也有公开频道,想成为这个频道的树叶的话,就去给 @tgtreebot 发送 /leaf AprCorner {你的频道名} 吧! > <)
留念(
😢1
或许我们可以编纂一个禁忌知识库,把我们知道的所有自杀方法自伤方法解离方法多意识体tulpamancy什么的为世俗所不容的知识都记录下来,谁看到谁就会受到知识的诅咒(笑
4
ICD11 6B60.5: Dissociative neurological symptom disorder, with speech disturbance

发病了所以记一记。分离障碍底下的所有子类疾病我都集齐了,连这个DSM还没收录的前沿疾病都有。。