为什么clojure会返回1N而不是1?
问题描述:
;; ------------------------- DICE COEFFS ------------------------
(defn dice-set-coeff [a b]
(* (/ (count (clojure.set/intersection a b))
(+ (count a) (count b)))
2))
(defn dice-lst-coeff [a b]
(dice-set-coeff (set a) (set b)))
;; ------------------------- BIGRAMS ----------------------------
(defn now-nxt [xs]
"im sure there is a better way to write this"
(map #(list %1 %2) xs (rest xs)))
(defn bigram [xs]
(list now-nxt xs))
(defn dice-string-bigram [a b]
(dice-lst-coeff (bigram a) (bigram b)))
为什么我在结果中得到1N?
tst.core> (dice-string-bigram "hello" "hello")
1N
tst.core> (dice-string-bigram "hello" "helap")
1/2
tst.core> (dice-string-bigram "hello" "howdy")
0
tst.core> (== (dice-string-bigram "hello" "hello") 1)
true
答
重:“我确定有一个更好的方式来写这个”
1N是reader和REPL用于BigInts的语法。
其中一个调用返回bigint。
重:“我确定有一个更好的方式来写这个”
user> (now-nxt a)
((\h \e) (\e \l) (\l \l) (\l \o))
user> (partition 2 1 a)
((\h \e) (\e \l) (\l \l) (\l \o))
布里尔,只需要知道我一直在寻找!谢谢 – beoliver 2012-07-22 21:06:22
回复:'now-nxt'谢谢。 – beoliver 2012-07-22 22:14:32