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.