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