最基本的类型是 int, 操作符只有 +
现在想实现 f, 支持 f + 3 / f + f 的操作
由于动态类型, 比如 py, js 实现起来太简单了, 这里拿 rust 写.
最后效果:
由于用 Box / Arc / Rc 都需要写一堆 Clone, 为了美观, 直接操作 Box into_raw, 用指针就能直接 Copy 了, 封一个函数
Lambda 结构体当容器.
实现 identity 作为 Default
附加一个构造 + 调用
下面高潮来了, 因为 f + f 和 f + 3 不是同一个 Add, 所以分别写
给 Add self type 写
给 f : T → T 的 T 写
其实这里实现了相等 rank 和 sub rank 的算符.

于是我们就实现了 f x = x, f + 3 和 f + f 的代码.

但是在这种构造下, 我们如何实现 f f 呢

答案是

一个小问题, 这里 apply 和 call 对应了不同的类型, 如何用”重载”统一, 留作思考.
 
附 godbolt link
 
以及感谢 claude 3.5 sonnet (New) 的指点
 
Loading...
Steven Lynn
Steven Lynn
喂马、劈柴、周游世界
最新发布
我与 Dify 的半年
2025-3-9
我的2022年终小结
2024-11-9
记录雅思考试经历与一点学习心得
2024-11-9
Hackergame 2024 思路小结
2024-11-9
黑客松、日本、入职:我的2024下半年的总结
2024-11-9
NotionNext:基于Notion和NextJS的开源博客
2024-11-9