+ | SRV of host * int * int * int * string
+
+fun hostS (Literal s) = s ^ "."
+ | hostS Wildcard = "*."
+ | hostS Default = ""
+
+val host = fn (EApp ((EVar "literal", _), e), _) =>
+ Option.map Literal (Env.string e)
+ | (EVar "wildcard", _) =>
+ SOME Wildcard
+ | (EVar "default", _) =>
+ SOME Default
+ | _ => NONE
+
+val srv_host = fn (EApp ((EVar "srv_literal", _), e), _) =>
+ Option.map Literal (Env.string e)
+ | (EVar "srv_wildcard", _) =>
+ SOME Wildcard
+ | (EVar "srv_default", _) =>
+ SOME Default
+ | _ => NONE