/[svn]/tests/overloading.cd
ViewVC logotype

Contents of /tests/overloading.cd

Parent Directory Parent Directory | Revision Log Revision Log


Revision 84 - (show annotations)
Tue Jul 10 17:04:50 2007 UTC (5 years, 10 months ago) by abate
File size: 864 byte(s)
[r2002-11-08 13:43:23 by cvscast] Empty log message

Original author: cvscast
Date: 2002-11-08 13:43:23+00:00
1 type Person = FPerson | MPerson;;
2 type FPerson = <person gender = ['F'] >[ Name Children ];;
3 type MPerson = <person gender="M">[ Name Children];;
4 type Children = <children>[Person*];;
5 type Name = <name>[ PCDATA ];;
6
7 type Man = <man>[ Name Sons Daughters ];;
8 type Woman = <woman>[ Name Sons Daughters ];;
9 type Sons = <sons>[ Man* ];;
10 type Daughters = <daughters>[ Woman* ];;
11
12 let fun sort (MPerson -> Man ; FPerson -> Woman)
13 <person gender=g>[ n <children>[(mc::MPerson | fc::FPerson)*] ] ->
14 let tag = match g with "F" -> `woman | "M" -> `man in
15 let s = map mc with x -> sort x in
16 let d = map fc with x -> sort x in
17 <(tag)>[ n <sons>s <daughters>d ]
18 in
19 let base : Person =
20 <person gender="F">[
21 <name>"Veronique"
22 <children>[
23 <person gender="F">[
24 <name>"Ilaria"
25 <children>[]
26 ]
27 ]
28 ]
29 in sort 3;;

CVS Admin">CVS Admin
ViewVC Help
Powered by ViewVC 1.1.5