Details
-
Type:
Defect
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Declined
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
Description
Head-tail pattern matching only seems to work with vectors.
Commit: https://github.com/clojure/core.match/commit/9f4919d855be09a1b32f9e5563ac1c3f5bace642
The following code falls through. (macroexpand appended)
(let [x '(1 2 3)]
(match [x]
[[a & as]] :a))
(try (clojure.core/cond (clojure.core/instance? clojure.lang.IPersistentVector x) (try (clojure.core/let [x_left__3201 (clojure.core/subvec x 0 1)] (clojure.core/cond (clojure.core/and (clojure.core/instance? clojure.lang.IPersistentVector x_left__3201) (clojure.core/= (clojure.core/count x_left__3201) 1)) (clojure.core/let [a (clojure.core/nth x_left__3201 0) as (clojure.core/subvec x 1)] :a) :else (throw clojure.core.match.core/backtrack))) (catch java.lang.Exception e__2436__auto__ (throw clojure.core.match.core/backtrack))) :else (throw clojure.core.match.core/backtrack)) (catch java.lang.Exception e__2437__auto__ (throw clojure.core.match.core/backtrack)))
Activity
David Nolen
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Status | Open [ 1 ] | Resolved [ 5 ] |
| Resolution | Declined [ 2 ] |
This is the expected behavior. If you want to match seqs you have to use the seq pattern syntax.