var student=func(n,a){
    return {
        print_info:func println(n,' ',a),
        set_age:   func(age) a=age,
        get_age:   func return a,
        set_name:  func(name) n=name,
        get_name:  func return n
    };
}
var s=student('valk',24);
s.print_info();
println(s.get_age(),' ',s.get_name());
s.set_age(20);
s.set_name('aluo');
s.print_info();
println(s.get_age(),' ',s.get_name());
s.set_age(20);
s.set_name('Sidi Liang');
s.print_info();
println(s.get_age(),' ',s.get_name());
# flightgear nasal-console cannot use this kind of object initializing
var m=func(){
    var (_1,_2)=(0,1);
    return {
        a:func(){
            print(_1,' ',_2,'\n');
        },
        b:func(x){
            _1=x;
        },
        c:func(x){
            _2=x;
        },
        d:func(x){
            return func{
                print(_1,' ',_2,' ',x,'\n');
            };
        },
        g:func(x){
            var y=x;
            return func{
                print(_1,' ',_2,' ',x,' ',y,'\n');
            }
        },
        h:func(){
            return func(x){
                _1=x;
            }
        }
    };
}();

m.a(); # 0 1
m.b(2048);
m.c(1024);
var a=m.d(-1);
var b=m.g(1);
a(); # 2048 1024 -1
b(); # 2048 1024 1 1

m.h()(2147483647);
m.a();# 2147483647 1024