| 1 | type s = { i : int; }
|
|---|
| 2 | type fred = I of int | D of float | S of s
|
|---|
| 3 | type mary = I of int | D of int | S of int
|
|---|
| 4 | type weekday = Mon | Tue | Wed | Thu | Fri | Sat | Sun
|
|---|
| 5 | let day : weekday = Mon
|
|---|
| 6 | let take_class( d : weekday ) =
|
|---|
| 7 | if d <= Fri then (* Gregor *)
|
|---|
| 8 | Printf.printf "weekday\n"
|
|---|
| 9 | else if d >= Sat then (* Gregor *)
|
|---|
| 10 | Printf.printf "weekend\n";
|
|---|
| 11 | match d with
|
|---|
| 12 | Mon | Wed -> Printf.printf "CS442\n" |
|
|---|
| 13 | Tue | Thu -> Printf.printf "CS343\n" |
|
|---|
| 14 | Fri -> Printf.printf "Tutorial\n" |
|
|---|
| 15 | _ -> Printf.printf "Take a break\n"
|
|---|
| 16 |
|
|---|
| 17 | let _ = take_class( Mon ); take_class( Sat );
|
|---|
| 18 |
|
|---|
| 19 | type colour = Red | Green of string | Blue of int * float
|
|---|
| 20 | let c = Red
|
|---|
| 21 | let _ = match c with Red -> Printf.printf "Red, "
|
|---|
| 22 | let c = Green( "abc" )
|
|---|
| 23 | let _ = match c with Green g -> Printf.printf "%s, " g
|
|---|
| 24 | let c = Blue( 1, 1.5 )
|
|---|
| 25 | let _ = match c with Blue( i, f ) -> Printf.printf "%d %g\n" i f
|
|---|
| 26 |
|
|---|
| 27 | let check_colour(c: colour): string =
|
|---|
| 28 | if c < Green( "xyz" ) then (* Gregor *)
|
|---|
| 29 | Printf.printf "green\n";
|
|---|
| 30 | match c with
|
|---|
| 31 | Red -> "Red" |
|
|---|
| 32 | Green g -> g |
|
|---|
| 33 | Blue(i, f) -> string_of_int i ^ string_of_float f
|
|---|
| 34 | let _ = check_colour( Red ); check_colour( Green( "xyz" ) );
|
|---|
| 35 |
|
|---|
| 36 | type stringList = Empty | Pair of string * stringList
|
|---|
| 37 | let rec len_of_string_list(l: stringList): int =
|
|---|
| 38 | match l with
|
|---|
| 39 | Empty -> 0 |
|
|---|
| 40 | Pair(_ , r) -> 1 + len_of_string_list r
|
|---|
| 41 |
|
|---|
| 42 | let _ = for i = 1 to 10 do
|
|---|
| 43 | Printf.printf "%d, " i
|
|---|
| 44 | done
|
|---|
| 45 |
|
|---|
| 46 | (* Local Variables: *)
|
|---|
| 47 | (* tab-width: 4 *)
|
|---|
| 48 | (* compile-command: "ocaml test.ml" *)
|
|---|
| 49 | (* End: *)
|
|---|