0xM*_*xMG 8 clojure trie zipper
如何为嵌套地图表示的TRIE创建Clojure拉链,键是字母.
像这样的东西:
{\b {\a {\n {\a {\n {\a {'$ '$}}}}}} \a {\n {\a {'$ '$}}}}
Run Code Online (Sandbox Code Playgroud)
代表一个带有2个单词'banana'和'ana'的trie.(如有必要,可以在地图中进行一些更改..)
我试图map? vals assoc将3个函数分别传递给拉链.但它似乎没有工作..
我应该使用哪三种功能?
基于拉链,insert-into-trie的外观如何?
cgr*_*and 14
map? vals #(zipmap (keys %1) %2) 会做但不支持插入/删除子项(因为子项只是值,您不知道要删除/添加哪个键).
在map-zipper下面不支持的插入/取出,因为节点[KV]双(除了其为图中的根目录).
(defn map-zipper [m]
(z/zipper
(fn [x] (or (map? x) (map? (nth x 1))))
(fn [x] (seq (if (map? x) x (nth x 1))))
(fn [x children]
(if (map? x)
(into {} children)
(assoc x 1 (into {} children))))
m))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1525 次 |
| 最近记录: |