package Ġdev . will band ers . rh ov as . x . stdlib Ċ Ċ import Ġdev . will band ers . rh ov as . x . interpreter . Environment Ċ Ċ fun Ġdef List ( env : ĠEnvironment , Ġtype : ĠEnvironment . Type ) Ġ{ ĊĠĠĠ Ġtype . def Prop (" size ", ĊĠĠĠĠĠĠĠ Ġ{ Ġenv . init (" Integer ", Ġ( it [ 0 ] Ġas ĠList < Environment . Object >). size ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġthrow ĠException (" List . size Ġis Ġread Ġonly .") Ġ}, ĊĠĠĠ Ġ) ĊĠĠĠ Ġtype . def M th d (" [] ", Ġ 1 ) Ġ{ Ġit [ 0 ]. req M th d (" get ", Ġ 1 ). invoke ( it ) Ġ} ĊĠĠĠ Ġtype . def M th d (" get ", Ġ 1 ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ]. value Ġas ĠList < Environment . Object >) [( args [ 1 ]. value Ġas ĠInt )] ĊĠĠĠ Ġ} ĊĠĠĠ Ġtype . def M th d (" [] =", Ġ 2 ) Ġ{ Ġit [ 0 ]. req M th d (" set ", Ġ 2 ). invoke ( it ) Ġ} ĊĠĠĠ Ġtype . def M th d (" set ", Ġ 2 ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ]. value Ġas ĠMutable List < Environment . Object >) [ args [ 1 ]. value Ġas ĠInt ] Ġ= Ġargs [ 2 ]; ĊĠĠĠĠĠĠĠ Ġenv . init (" Null ", Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtype . def M th d ("+ ", Ġ 1 ) Ġ{ Ġit [ 0 ]. req M th d (" concat ", Ġ 1 ). invoke ( it ) Ġ} ĊĠĠĠ Ġtype . def M th d (" concat ", Ġ 1 ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġenv . init (" List ", Ġ( args [ 0 ]. value Ġas ĠList < Environment . Object >) Ġ+ Ġ( args [ 1 ]. value Ġas ĠList < Environment . Object > )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtype . def M th d (" iterate ", Ġ 1 ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġlambda Ġ= Ġargs [ 1 ]. value Ġas ĠEnvironment . Function ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ]. value Ġas ĠList < Environment . Object >). forEach Ġ{ Ġlambda . invoke ( listOf ( it )) Ġ} ĊĠĠĠĠĠĠĠ Ġenv . init (" Null ", Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtype . def M th d (" map ", Ġ 1 ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġlambda Ġ= Ġargs [ 1 ]. value Ġas ĠEnvironment . Function ĊĠĠĠĠĠĠĠ Ġenv . init (" List ", Ġ( args [ 0 ]. value Ġas ĠList < Environment . Object >). map Ġ{ Ġlambda . invoke ( listOf ( it )) Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtype . def M th d (" filter ", Ġ 1 ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġlambda Ġ= Ġargs [ 1 ]. value Ġas ĠEnvironment . Function ĊĠĠĠĠĠĠĠ Ġenv . init (" List ", Ġ( args [ 0 ]. value Ġas ĠList < Environment . Object >). filter Ġ{ Ġlambda . invoke ( listOf ( it )). value Ġas ĠBoolean Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtype . def M th d (" ==", Ġ 1 ) Ġ{ Ġit [ 0 ]. req M th d (" equals ", Ġ 1 ). invoke ( it )} ĊĠĠĠ Ġtype . def M th d (" equals ", Ġ 1 ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġargs [ 0 ]. value Ġas ĠList < Environment . Object > ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġargs [ 0 ]. value Ġas ĠList < Environment . Object > ĊĠĠĠĠĠĠĠ Ġenv . init (" Boolean ", Ġleft . size Ġ== Ġright . size Ġ&& Ġleft . zip ( right ). all Ġ{ Ġit . first . req M th d (" ==", Ġ 1 ). invoke ( listOf ( it . first , Ġit . second )). value Ġas ĠBoolean Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtype . def M th d (" toString ", Ġ 0 ) Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġenv . init (" String ", Ġ( args [ 0 ]. value Ġas ĠList < Environment . Object >). map Ġ{ Ġit . req M th d (" toString ", Ġ 0 ). invoke ( listOf ( it )). value Ġas ĠString Ġ}. toString ()) ĊĠĠĠ Ġ} Ċ } Ċ