【发布时间】:2014-12-27 04:12:51
【问题描述】:
在 elisp 中,像 {'a':1, 'b':2} 这样的 python 字典的等价物是什么?
再说一遍,elisp 有没有 map-reduce api?
【问题讨论】:
在 elisp 中,像 {'a':1, 'b':2} 这样的 python 字典的等价物是什么?
再说一遍,elisp 有没有 map-reduce api?
【问题讨论】:
除了关联列表(算法复杂度对小表还可以,对大表不行),还有哈希表,你可以用make-hash-table和puthash构造,或者如果你更喜欢立即数,你可以写他们是#s(hash-table data a 1 b 2)。
【讨论】:
Association lists 是 elisp 中最常用的关联容器。它只是一个像((key . value)) 这样的键值对单元格的列表。可以使用assoc函数获取key对应的value,rassoc获取key对应的value。
Elisp 带有内置函数 mapcar,它可以映射,但是 AFAIK 没有好的 fold 工具。您可以使用提供的任何循环工具来模拟它。但是,更好的解决方案是使用 cl-lib 并进入 CommonLisp 领域。特别是it suppliescl-mapcar 和cl-reduce。
【讨论】:
assoc 是有意义的,因为它将密钥与equal 进行比较。另一方面,assq 与 eq 比较,这要求它们是内存中完全相同的对象。