My function works for cases where the objects sent in are the correct type. It appears the daveho solution creates very similar structures; however, it appears that the number? function gets evaluated such that the :a and "a" are never sent into the predicates.