view tests/functorMania.ur @ 2209:0ca11d57c175

Cleans up interface (it's now a command line option) and renames project to "sqlcache" in the all-one-word style. Still has issues to do with concurrency, retrying transactions, and foreign function calls that either rely on state or have side effects.
author Ziv Scully <ziv@mit.edu>
date Sat, 31 May 2014 03:08:16 -0400
parents 210fb3dfc483
children
line wrap: on
line source
functor F1(M : sig type t end) = struct
    type t = M.t
    fun g () : M.t = g ()
    fun f () = g ()
end
functor F2(M : sig type t end) = F1(M)
functor F3(M : sig type t end) = F2(M)

functor F4(M : sig end) = F1(struct type t = int end)
functor F5(M : sig end) = F2(struct type t = int end)
functor F6(M : sig end) = F3(struct type t = int end)

functor F7(M : sig end) = F1(struct type t = string end)
functor F8(M : sig end) = F2(struct type t = string end)
functor F9(M : sig end) = F3(struct type t = string end)

structure M1 = F1(struct type t = string end)
structure M2 = F2(struct type t = string end)
structure M3 = F3(struct type t = string end)

structure M4 = F4(struct  end)
structure M5 = F5(struct end)
structure M6 = F6(struct end)

structure M7 = F7(struct end)
structure M8 = F8(struct end)
structure M9 = F9(struct end)

fun loop x : unit = loop (M1.f (), M2.f (), M3.f (),
                          M4.f (), M5.f (), M6.f (),
                          M7.f (), M8.f (), M9.f ())

fun main () : transaction page =
    x <- error <xml/>;
    u <- return (loop x);
    return <xml/>