-extern type domain;
-extern val domain : domain -> Domain => [Root];
-
-extern type emailUser;
-extern type email;
-
-extern type aliasSource;
-extern val userSource : emailUser -> aliasSource;
-extern val defaultSource : aliasSource;
-extern val catchAllSource : aliasSource;
-
-extern type aliasTarget;
-extern val addressTarget : email -> aliasTarget;
-extern val addressesTarget : [email] -> aliasTarget;
-extern val dropTarget : aliasTarget;
-
-extern val aliasPrim : aliasSource -> aliasTarget -> [Domain];
-
-val alias = \user -> \email -> aliasPrim (userSource user) (addressTarget email);
-val aliasMulti = \user -> \emails -> aliasPrim (userSource user) (addressesTarget emails);
-val aliasDrop = \user -> aliasPrim (userSource user) dropTarget;
-
-val defaultAlias = \email -> aliasPrim defaultSource (addressTarget email);
-val catchAllAlias = \email -> aliasPrim catchAllSource (addressTarget email);
-
-domain "hcoop.net" with
- alias "schmeppo" "dlonker";
- aliasMulti "me" ["nowhere","smelly@yikes"];
- aliasDrop "yippo";
-
- defaultAlias "billy";
- catchAllAlias "bonkers"
-end
+domain "hcoop.net" with
+ alias "schmeppo" "dlonker";
+ aliasMulti "me" ["nowhere","smelly@yikes"];
+ aliasDrop "yippo";
+
+ defaultAlias "billy";
+ catchAllAlias "bonkers"
+end