小编eav*_* db的帖子

Clojure前/后走路与从根的路径

我知道的

我熟悉clojure.walk/prewalk和clojure.walk/postwalk

我想要的是

我想要像clojure.walk/prewalk和clojure.walk/postwalk这样的东西 - 但我也想要到达节点所需的路径 - 而prewalk/postwalk只给我节点,没有实际路径.

所以,如果我们有一个结构

[ {:cat "Garfield", :dog "DogeCoin"} [:a :b {:site "so"}]]
Run Code Online (Sandbox Code Playgroud)

然后我想用args调用我的函数:

[] [ {:cat "Garfield", :dog "DogeCoin"} [:a :b {:site "so"}]]

[0] {:cat "Garfield", :dog "DogeCoin"}

[1] [:a :b {:site "so"}]

[0 :cat] "Garfield"

...
Run Code Online (Sandbox Code Playgroud)

题:

上面有内置的吗?处理函数接收节点和路径(从根节点)到节点的情况?

谢谢!

可能解决方案

(根据fl00r的建议)

(defn pathwalk [f cur-path node]
  (let [f1 #(pathwalk f (conj cur-path %1) %2)]
    (f cur-path node)
    (cond
      (map? node) (map #(apply f1 %) node)
      (or (vector? node) (list? node)) (keep-indexed …
Run Code Online (Sandbox Code Playgroud)

clojure

5
推荐指数
1
解决办法
279
查看次数

目的:“^{:key item}”

我正在阅读http://reagent-project.github.io/

那里的代码片段是:

(defn lister [items]
  [:ul
   (for [item items]
     ^{:key item} [:li "Item " item])])
Run Code Online (Sandbox Code Playgroud)

^{:key item} 的含义是什么,我们为什么要它?[文档是指使 Reflect 更快。]

clojure reactjs

3
推荐指数
1
解决办法
161
查看次数

clojure:减少:应用函数n次,保持中间结果

问题陈述

给定n,x,f:我想要输出表格:

[x, f(x), f(f(x)), f(f(f(x))), ..., f^{n-1}(x)]
Run Code Online (Sandbox Code Playgroud)

现有解决方案

这可以通过减少来完成

(reductions
  (fn [state _] (f state))
  state
  (range n))
Run Code Online (Sandbox Code Playgroud)

是否存在提供更短解决方案的原语?

clojure

1
推荐指数
1
解决办法
189
查看次数

解析Clojure

  1. 我知道edn/read-string

  2. 在Haskell中,我倾向于使用Parsec https://hackage.haskell.org/package/parsec

  3. 我需要解析像编程语言一样的Algo/Pascal.在Clojure中使用什么建议的库进行解析?

编辑:4.如果有一种方法可以通过core.logic方式执行此操作,其中"优先级"conde将指定选项(以及解决歧义的顺序).

clojure

-1
推荐指数
1
解决办法
680
查看次数

标签 统计

clojure ×4

reactjs ×1