小编Fin*_*inn的帖子

带有转义逗号的clojure csv

我试图用带有转义的逗号解析clojure中的csv字符串,并且没有引用像这样的字段

"test1\,test2,test3"
Run Code Online (Sandbox Code Playgroud)

我试过这个库:

  • [org.clojure/data.csv"0.1.2"]
  • [cljcsv"1.3.1"]
  • [clojure-csv/clojure-csv"2.0.0-alpha1"]

但他们似乎都没有能够正确认识到这一点,因为["test1,test2" "test3"] 有人知道一个可以做到这一点的图书馆吗?

提前致谢

csv parsing clojure

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

两个clojure地图引用作为彼此的元素

我在refs中有两个映射,并希望在一个事务中将它们相互关联.

我的功能看起来像这样:

(defn assoc-two
  [one two]
  (let [newone (assoc @one :two two)
        newtwo (assoc @two :one one)]
    (ref-set one newone)
    (ref-set two newtwo)))
Run Code Online (Sandbox Code Playgroud)

现在我这样打电话assoc-two:

(dosync (assoc-two (ref {}) (ref {})))
Run Code Online (Sandbox Code Playgroud)

我现在得到和StackOverflowError.

我也试过这个:

(defn alter-two
  [one two]
  (alter one assoc :two two)
  (alter two assoc :one one))
Run Code Online (Sandbox Code Playgroud)

有没有这样做的方式one有一个条目参考two,反之亦然,仍然在一个交易中?

clojure circular-reference refs

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

在clojure宏中使用序列

我正在读取yaml文件中的数据,这会产生如下数据:

{:test1 (1 2 3)}
Run Code Online (Sandbox Code Playgroud)

我可以查找密钥:test1并获得clojure.lang.LazySeq元素1 2 3.但是当我想在宏中使用这些数据时,它会扩展为函数调用而不是引用列表.

例如:

(defmacro mmerge
  [map1 map2]
  `(assoc ~(merge map1 map2) :merged true))

(mmerge {:test1 (1 2 3)} {:test2 (4 5 6)})
Run Code Online (Sandbox Code Playgroud)

这扩展到:

(clojure.core/assoc {:test2 (4 5 6), :test1 (1 2 3)} :merged true)
Run Code Online (Sandbox Code Playgroud)

是否有可能以某种方式让这个工作?

提前致谢

macros clojure

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

标签 统计

clojure ×3

circular-reference ×1

csv ×1

macros ×1

parsing ×1

refs ×1