"f" is hardcoded here.
This seems to do funny things with :f fields in records. Investigating.
Do you have a test to show it? I think I've pushed a fix (3bee3bd), but would like to add a test for regression.
typed.core=> (defconstrainedrecord A [f]
"" [(number? f)])
typed.core=> (assoc (->A 1) :f 2)
#<ClassCastException java.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.IFn>