You need to enable JavaScript to run this app. 咨询其他Lisp/类Lisp中与Clojure assoc/assoc-in对等的函数名及跨Lisp对照资源
优惠活动
大模型
产品
解决方案
定价
更多

咨询其他Lisp/类Lisp中与Clojure assoc/assoc-in对等的函数名及跨Lisp对照资源

不同Lisp/类Lisp语言对等assoc、assoc-in功能的命名

单层级键值关联(对应assoc核心语义)

  • Common Lisp:无原生通用不可变键值关联函数,原生场景通常通过setf搭配对应容器的访问器完成写入,比如操作属性表搭配getf、操作数组搭配aref;社区公共库Alexandria提供的通用集合写入函数,按容器类型分别命名为alist-set、plist-set
  • Racket(Scheme主流实现):哈希容器单层级值更新的对应函数命名为hash-set,带!后缀的hash-set!表示原地修改的可变版本
  • Janet:单层级表写入的核心函数命名为put,同时兼容多参数传入的深层路径写入逻辑
  • Hy(Python宿主的Lisp方言):完全沿用Clojure命名习惯,通过assoc实现单层级字典值写入

深层路径值更新(对应assoc-in核心语义)

这类功能的跨语言命名本身就存在不少参考Clojure设计的案例,比如JS端函数式库Ramda就将对标assoc-in的实现命名为assocPath。各Lisp/类Lisp语言的对应实现命名差异较大:

  • Common Lisp:无原生对标实现,社区通用实现多采用pathwrite、set-path的命名逻辑,部分第三方框架为降低Clojure迁移成本,会直接复用assoc-in的原生命名
  • Racket:可变场景下通过hash-set*!完成多层嵌套哈希的批量路径写入,不可变链式更新场景的对应函数为hash-update/in
  • Janet:复用单层级的put函数,传入连续多段嵌套键时自动触发深层写入逻辑,无独立的深层更新函数命名
  • Fennel(Lua宿主的Lisp方言):深层路径更新的核心函数命名为tset,支持直接传入嵌套键路径完成值写入
跨Lisp功能对照的参考资源

可用于跨语言相似功能命名差异查阅、同名函数行为对比的「罗塞塔石碑」类参考资源主要有几类:

  • Lisp Cookbook:按编程场景分类收录各主流Lisp方言的常用实现,会专门标注不同语言下同语义功能的命名差异、同名函数的行为偏差
  • Rosetta Code 平台的Lisp分类板块:按通用编程任务索引各Lisp方言的实现方式,可快速定位同一场景下的不同设计思路、命名习惯
  • 各Lisp方言的官方迁移指南:比如Clojure到Common Lisp、Racket到Janet的官方迁移文档,会专门汇总Clojure核心API(包括assoc、assoc-in系列)对应的本地实现命名、参数规则、副作用差异
  • 跨语言社区维护的Clojure核心API对照表:这类文档由函数式编程社区自发整理,覆盖其他Lisp方言、多语言函数式库中对标Clojure核心API的命名、参数顺序、行为差异,是很多团队制定跨语言函数式命名标准的核心参考

内容的提问来源于stack exchange,提问作者Suni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 16:06:07