function user.appendproj(m:bat[:oid], l:bat[:any_1], r:bat[:any_1]):bat[:any_1];↵ a:bat[:any_1] := bat.new(nil:any_1); a1:bat[:any_1] := bat.append(a, l); a2:bat[:any_1] := bat.append(a1, r); r:bat[:any_1] := algebra.projection(m, a2);↵ return r;↵ end user.appendproj;↵ function user.appendprojdbl(m:bat[:oid], l:bat[:dbl], r:bat[:dbl]):bat[:dbl]; a:bat[:dbl] := bat.new(nil:dbl); a1:bat[:dbl] := bat.append(a, l); a2:bat[:dbl] := bat.append(a1, r); r:bat[:dbl] := algebra.projection(m, a2);↵ return r;↵ end user.appendprojdbl;↵ function user.appendprojstr(m:bat[:oid], l:bat[:str], r:bat[:str]):bat[:str]; a:bat[:str] := bat.new(nil:str); a1:bat[:str] := bat.append(a, l); a2:bat[:str] := bat.append(a1, r); r:bat[:str] := algebra.projection(m, a2);↵ return r;↵ end user.appendprojstr;↵ function user.appendprojint(m:bat[:oid], l:bat[:int], r:bat[:int]):bat[:int]; a:bat[:int] := bat.new(nil:int); a1:bat[:int] := bat.append(a, l); a2:bat[:int] := bat.append(a1, r); r:bat[:int] := algebra.projection(m, a2);↵ return r;↵ end user.appendprojint;↵ function user.appendprojoid(m:bat[:oid], l:bat[:oid], r:bat[:oid]):bat[:oid]; a:bat[:oid] := bat.new(nil:oid); a1:bat[:oid] := bat.append(a, l); a2:bat[:oid] := bat.append(a1, r); r:bat[:oid] := algebra.projection(m, a2);↵ return r;↵ end user.appendprojoid;↵ m := bat.new(nil:oid); l := bat.new(nil:dbl); r := bat.new(nil:dbl); res := appendprojdbl(m, l, r); io.print(res);