added a comment - - edited
Unfortunately it seems the type inference isn't good enough to deal with (map f coll), where f has more than one arity and coll triggers one other than the most specific.
(map + )
=> (LazySeq AnyInteger)
(map + [1.1]
=> constraint gen error
Workaround: assign f a less accurate type, probably one with just a single arity.
(map (ann-form + [Number -> Number]) [1.1])
=> (LazySeq Number)
The particular issue here can be fixed with:
(cf (fn [x]
(map (ann-form inc [Number -> Number])
[x 2 3]))
[Number -> (clojure.lang.LazySeq Number)])