This page contains a collection of routing cookbooks.
var matching on multiple types
You can use the AltVar Either alternative to allow a var that can match on different types:
do get ("hello" <//> var) $ \(v :: AltVar Int T.Text) ->
case v of
AvLeft number -> text (T.pack (show (1 + number)))
AvRight str -> text str
In this example, /hello/1 would show 2, and /hello/alex would return alex.