Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module type Sign = sig
- module type S
- end
- module type Nat =
- functor (S : Sign) -> functor (X : S.S) ->
- functor (F : (functor (M : S.S) -> S.S)) -> S.S
- module Zero : Nat =
- functor (S : Sign) -> functor (X : S.S) ->
- functor (F : (functor (M : S.S) -> S.S)) -> X
- module Succ (N : Nat) : Nat =
- functor (S : Sign) -> functor (X : S.S) ->
- functor (F : (functor (M : S.S) -> S.S)) -> N(S)(F(X))(F)
- module One : Nat = Succ(Zero)
- module type Fun = functor (N : Nat ) -> Nat
- module NatS = struct
- module type S = Nat
- end
- module Aux (F : Fun) (N : Nat) : Nat = N(NatS)(F(One))(F)
- module FunS = struct
- module type S = Fun
- end
- module A (N : Nat) = N(FunS)(Succ)(Aux)
- module Ack (N : Nat) : Nat = A(N)(N)
- module Four : Nat = Succ(Succ(Succ(One)))
- let () = print_endline "Hello"
- module M = Ack(Four)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement