type s = { i : int; } type fred = I of int | D of float | S of s type mary = I of int | D of int | S of int type weekday = Mon | Tue | Wed | Thu | Fri | Sat | Sun let day : weekday = Mon let take_class( d : weekday ) = if d <= Fri then (* Gregor *) Printf.printf "weekday\n" else if d >= Sat then (* Gregor *) Printf.printf "weekend\n"; match d with Mon | Wed -> Printf.printf "CS442\n" | Tue | Thu -> Printf.printf "CS343\n" | Fri -> Printf.printf "Tutorial\n" | _ -> Printf.printf "Take a break\n" let _ = take_class( Mon ); take_class( Sat ); type colour = Red | Green of string | Blue of int * float let c = Red let _ = match c with Red -> Printf.printf "Red, " let c = Green( "abc" ) let _ = match c with Green g -> Printf.printf "%s, " g let c = Blue( 1, 1.5 ) let _ = match c with Blue( i, f ) -> Printf.printf "%d %g\n" i f let check_colour(c: colour): string = if c < Green( "xyz" ) then (* Gregor *) Printf.printf "green\n"; match c with Red -> "Red" | Green g -> g | Blue(i, f) -> string_of_int i ^ string_of_float f let _ = check_colour( Red ); check_colour( Green( "xyz" ) ); type stringList = Empty | Pair of string * stringList let rec len_of_string_list(l: stringList): int = match l with Empty -> 0 | Pair(_ , r) -> 1 + len_of_string_list r let _ = for i = 1 to 10 do Printf.printf "%d, " i done (* Local Variables: *) (* tab-width: 4 *) (* compile-command: "ocaml test.ml" *) (* End: *)