Commit | Line | Data |
---|---|---|
629a34f6 AC |
1 | extern type domain; |
2 | extern val domain : domain -> Domain => [Root]; | |
3 | ||
4 | extern type emailUser; | |
5 | extern type email; | |
6 | ||
7 | extern type aliasSource; | |
8 | extern val userSource : emailUser -> aliasSource; | |
9 | extern val defaultSource : aliasSource; | |
10 | extern val catchAllSource : aliasSource; | |
11 | ||
12 | extern type aliasTarget; | |
13 | extern val addressTarget : email -> aliasTarget; | |
14 | extern val addressesTarget : [email] -> aliasTarget; | |
15 | extern val dropTarget : aliasTarget; | |
16 | ||
17 | extern val aliasPrim : aliasSource -> aliasTarget -> [Domain]; | |
18 | ||
19 | val alias = \user -> \email -> aliasPrim (userSource user) (addressTarget email); | |
20 | val aliasMulti = \user -> \emails -> aliasPrim (userSource user) (addressesTarget emails); | |
21 | val aliasDrop = \user -> aliasPrim (userSource user) dropTarget; | |
22 | ||
23 | val defaultAlias = \email -> aliasPrim defaultSource (addressTarget email); | |
24 | val catchAllAlias = \email -> aliasPrim catchAllSource (addressTarget email); | |
a3698041 AC |
25 | |
26 | domain "hcoop.net" with | |
629a34f6 AC |
27 | alias "schmeppo" "dlonker"; |
28 | aliasMulti "me" ["nowhere","smelly@yikes"]; | |
29 | aliasDrop "yippo"; | |
a3698041 | 30 | |
629a34f6 AC |
31 | defaultAlias "billy"; |
32 | catchAllAlias "bonkers" | |
a3698041 | 33 | end |