{ @lamb.id 1 ; @code [ local lamb = {} lamb.objects = {} lamb.groups = setmetatable({}, {__mode = "v"}) ] ; } @processor @ewe ; @ewe push @lamb.id ; @ewe.stack $n { @processor @ewe ; @lamb.id $n ; } @processor @ewe ; @ewe @lamb.new ; @lamb.id $id { @processor @ewe ; @process switch to @ ; @lamb.id $id ; @ allocate new lamb , increment id by 1 , ewe push $id , done ; } @processor @ewe ; @ewe @lamb.is ; @ewe.stack ( $class $obj ) { @processor @ewe ; @ewe.stack ( $obj ) ; @code [lamb.objects[$obj].class = $class] ; } @processor @ewe ; @ewe @lamb.set ; @ewe.stack ( $key $value $obj ) { @processor @ewe ; @ewe.stack ( $obj ) ; @code [lamb.objects[$obj][$key] = $value] ; } @processor @ewe ; @ewe @lamb.get ; @ewe.stack ( $key $obj ) { @processor @ewe ; @ewe.stack ( $value ) ; @code [$value = lamb.objects[$obj][$key]] ; } @processor @ewe ; @ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 4 ) { @processor @ewe ; @ewe $obj does $1 $2 $3 $4 ; } @processor @ewe ; @ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 $5 5 ) { @processor @ewe ; @ewe $obj does $1 $2 $3 $4 $5 ; } @processor @ ; @ allocate new lamb ; @lamb.id $n { @processor @ ; @lamb.id $n ; @code [lamb.objects[$n] = {}] ; } @processor @ ; @ increment id by 1 ; @lamb.id $n { @processor @ ; @process switch to @ewe ; @ewe ( $n 1 @ewe.add [@lamb.id] @ewe.push @ewe.done ) ; }