Hey,
e.g clojure 1.6:
nREPL server started on port 52315 on host 127.0.0.1 - nrepl://127.0.0.1:52315
REPL-y 0.3.5, nREPL 0.2.7
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_40-b26
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
user=> (zipmap [:a :b] [:c :d])
{:b :d, :a :c}
Whereas clojure 1.7 does:
nREPL server started on port 52193 on host 127.0.0.1 - nrepl://127.0.0.1:52193 REPL-y 0.3.5, nREPL 0.2.7
Clojure 1.7.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_40-b26
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
user=> (zipmap [:a :b] [:c :d])
{:a :c, :b :d}
As i'm using the keys function later on these values as a multimethod dispatch function, things break.
It's rather trivial to change my program with the new ordering, but i was wondering if the ordering of the keys of the returned map is part of the contract.
The tests break with these kinds of exceptions:
ERROR in (test-resizer) (MultiFn.java:156)
expected: (= [200 [200 200]] (run-resizer "size/200x200/rose-cmyk.tiff"))
20:31:05.179 [main] WARN net.umask.imageresizer.resizer - image not found for uri size/200x200/nonexisting
actual: java.lang.IllegalArgumentException: No method in multimethod 'scale' for dispatch value: (:width :height)
at clojure.lang.MultiFn.getFn (MultiFn.java:156)
clojure.lang.MultiFn.invoke (MultiFn.java:233)
I'm glad to hear your feedback.
Kr,
Jo