bundle Default { class Test { @f : static : (Int) ~ Int; @g : static : (Int) ~ Int; function : Main(args : String[]) ~ Nil { compose := Composer(F(Int) ~ Int, G(Int) ~ Int); compose(13)->PrintLine(); } function : F(a : Int) ~ Int { return a + 14; } function : G(a : Int) ~ Int { return a + 15; } function : Compose(x : Int) ~ Int { return @f(@g(x)); } function : Composer(f : (Int) ~ Int, g : (Int) ~ Int) ~ (Int) ~ Int { @f := f; @g := g; return Compose(Int) ~ Int; } } }