Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
13
Task/Variadic-function/OCaml/variadic-function-5.ocaml
Normal file
13
Task/Variadic-function/OCaml/variadic-function-5.ocaml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
type ('f,'g) t =
|
||||
| Z : ('f,'f) t
|
||||
| S : 'a -> (('a -> 'f), ('f,'g) t -> 'g) t
|
||||
|
||||
let rec apply: type f g. f -> (f,g) t -> g =
|
||||
fun k t -> match t with
|
||||
| Z -> k (* type g = f *)
|
||||
| S x -> apply (k x) (* type g = (f,g) t -> g *)
|
||||
|
||||
let (!) x = S x (* prefix *)
|
||||
|
||||
(* top level *)
|
||||
# apply List.map !(fun x -> x+1) ![1;2;3] Z
|
||||
Loading…
Add table
Add a link
Reference in a new issue