Bug fix: wrong simplifications of (assoc ... (assoc ...
This commit is contained in:
parent
5977fef261
commit
93f46582b3
2 changed files with 9 additions and 4 deletions
|
@ -5,9 +5,9 @@
|
|||
;;vector
|
||||
[(conj [] . ?x) (vector . ?x)]
|
||||
[(into [] ?coll) (vec ?coll)]
|
||||
[(assoc ?coll ?key (assoc (?key0 ?coll) ?key1 ?val)) (assoc-in ?coll [?key0 ?key1] ?val)]
|
||||
[(assoc ?coll ?key (assoc (?coll ?key0) ?key1 ?val)) (assoc-in ?coll [?key0 ?key1] ?val)]
|
||||
[(assoc ?coll ?key (assoc (get ?coll ?key0) ?key1 ?val)) (assoc-in ?coll [?key0 ?key1] ?val)]
|
||||
[(assoc ?coll ?key0 (assoc (?key0 ?coll) ?key1 ?val)) (assoc-in ?coll [?key0 ?key1] ?val)]
|
||||
[(assoc ?coll ?key0 (assoc (?coll ?key0) ?key1 ?val)) (assoc-in ?coll [?key0 ?key1] ?val)]
|
||||
[(assoc ?coll ?key0 (assoc (get ?coll ?key0) ?key1 ?val)) (assoc-in ?coll [?key0 ?key1] ?val)]
|
||||
[(assoc ?coll ?key (?fn (?key ?coll) . ?args)) (update-in ?coll [?key] ?fn . ?args)]
|
||||
[(assoc ?coll ?key (?fn (?coll ?key) . ?args)) (update-in ?coll [?key] ?fn . ?args)]
|
||||
[(assoc ?coll ?key (?fn (get ?coll ?key) . ?args)) (update-in ?coll [?key] ?fn . ?args)]
|
||||
|
|
|
@ -22,4 +22,9 @@
|
|||
'(update-in coll [k] f a b c) '(assoc coll k (f (coll k) a b c))
|
||||
'(update-in coll [k] f a b c) '(assoc coll k (f (get coll k) a b c))
|
||||
'(assoc-in coll [k1 k2] v) '(update-in coll [k1 k2] assoc v)
|
||||
'(repeatedly 10 (constantly :foo)) '(take 10 (repeatedly (constantly :foo)))))
|
||||
'(repeatedly 10 (constantly :foo)) '(take 10 (repeatedly (constantly :foo)))
|
||||
|
||||
;; some wrong simplifications happened in the past:
|
||||
nil '(assoc coll k (assoc (coll k0) k1 a))
|
||||
nil '(assoc coll k (assoc (get coll k0) k1 a))
|
||||
nil '(assoc coll k (assoc (k0 coll) k1 a))))
|
||||
|
|
Loading…
Reference in a new issue