Based on `condp` from Clojure(http://clojuredocs.org/clojure_core/1.2.0/clojure.core/condp), I've written the function `predSwitch`. It acts as the functional(=expression) version of the `switch` statement, and it also allows a custom predicate:
assert(2.predSwitch!"a < b"(
1, "less then 1",
5, "less then 5",
10, "less then 10",
"greater or equal to 10") == "less then 5");