13 lines
394 B
OCaml
13 lines
394 B
OCaml
type 'a variadic =
|
|
| Z : unit variadic
|
|
| S : 'a variadic -> (string -> 'a) variadic
|
|
|
|
let rec print : type a. a variadic -> a = function
|
|
| Z -> ()
|
|
| S v -> fun x -> Format.printf "%s\n" x; print v
|
|
|
|
let () =
|
|
print Z; (* no arguments *)
|
|
print (S Z) "hello"; (* one argument *)
|
|
print (S (S (S Z))) "how" "are" "you" (* three arguments *)
|