Haskell: abstract implementation of typed and untyped web routing