It _seems_ like this is not the intended behavior, but here's what I am seeing locally: These print different things, but that's not a big problem: ``` clojure (mc/validate [:and [:catn ["a" :int] ["b" :keyword]] [:fn (fn [x] (prn x) true)]] [3 :x]) ;; prints: [3 :x] ;; => true (mc/parse [:and [:catn ["a" :int] ["b" :keyword]] [:fn (fn [x] (prn x) true)]] [3 :x]) ;; prints: {"a" 3, "b" :x} ;; => {"a" 3, "b" :x} ``` The problem I'm hitting is when we actually try to _validate_ these things with the attached :fn schema: ``` clojure (mc/validate [:and [:catn ["a" :int] ["b" :keyword]] [:fn vector?]] [3 :x]) ;; true (mc/parse [:and [:catn ["a" :int] ["b" :keyword]] [:fn vector?]] [3 :x]) ;; => :malli.core/invalid 😢 ``` I sort of can work around it by checking for e.g. (if it's a map with these keys, then it passes validation). but that's not really ideal.