Ultima attività 1 month ago

ewe.process.wul Raw Playground
1@processor @ewe ; @ewe @ewe.done { }
2
3@processor @ewe ;
4@ewe @ewe.become ; @ewe.stack $processor {
5 @processor @ewe ;
6 @processor switch to $processor ;
7}
8
9@processor @ewe ;
10@ewe @ewe.dup ; @ewe.stack $ {
11 @processor @ewe ;
12 @ewe.stack ( $ $ ) ;
13}
14
15@processor @ewe ;
16@ewe @ewe.swap ; @ewe.stack ( $x $y ) {
17 @processor @ewe ;
18 @ewe.stack ( $y $x ) ;
19}
20
21@processor @ewe ;
22@ewe @ewe.drop ; @ewe.stack ( $x ) {
23 @processor @ewe ;
24}
25
26@processor @ewe ;
27@ewe @ewe.nip ; @ewe.stack ( $ $x ) {
28 @processor @ewe ;
29 @ewe.stack $x ;
30}
31
32@processor @ewe ;
33@ewe @ewe.call ; @ewe.stack $fn {
34 @processor @ewe ;
35 @ewe def $fn ;
36}
37
38@processor @ewe ;
39@ewe @ewe.if ; @ewe.stack ( $true $ true ) {
40 @processor @ewe ;
41 @ewe def $true ;
42}
43
44@processor @ewe ;
45@ewe @ewe.if ; @ewe.stack ( $ $false false ) {
46 @processor @ewe ;
47 @ewe def $false ;
48}
49
50@processor @ewe ;
51@ewe @ewe.lt ; @ewe.stack ~( $x $y ) {
52 @processor @ewe ;
53 @ewe.stack $z ; @code [$z = tostring(tonumber($x) < tonumber($y))] ;
54}
55
56@processor @ewe ;
57@ewe @ewe.eq ; @ewe.stack ~( $x $y ) {
58 @processor @ewe ;
59 @ewe.stack $z ; @code [$z = tostring(tonumber($x) == tonumber($y))] ;
60}
61
62@processor @ewe ;
63@ewe @ewe.gt ; @ewe.stack ~( $x $y ) {
64 @processor @ewe ;
65 @ewe.stack $z ; @code [$z = tostring(tonumber($x) > tonumber($y))] ;
66}
67
68@processor @ewe ; @ewe @ewe.and ; @ewe.stack ( true ture ) {
69 @processor @ewe ;
70 @ewe.stack true ;
71}
72@processor @ewe ; @ewe @ewe.and ; @ewe.stack ( $1 $2 ) { @ewe.stack false ; }
73
74@processor @ewe ; @ewe @ewe.or ; @ewe.stack ( true $ ) { @ewe.stack true ; }
75@processor @ewe ; @ewe @ewe.or ; @ewe.stack ( $ true ) { @ewe.stack true ; }
76@processor @ewe ; @ewe @ewe.or ; @ewe.stack ( $ $ ) { @ewe.stack false ; }
77
78@processor @ewe ; @ewe @ewe.not ; @ewe.stack true { @ewe.stack false ; }
79@processor @ewe ; @ewe @ewe.not ; @ewe.stack false { @ewe.stack true ; }
80
81@processor @ewe ;
82@ewe @ewe.sub ; @ewe.stack ~( $x $y ) {
83 @processor @ewe ;
84 @ewe.stack $z ; @code [$z = tostring($x - $y)] ;
85}
86
87@processor @ewe ;
88@ewe @ewe.add ; @ewe.stack ~( $x $y ) {
89 @processor @ewe ;
90 @ewe.stack $z ; @code [$z = tostring($x + $y)] ;
91}
92
93@processor @ewe ;
94@ewe @ewe.div ; @ewe.stack ~( $x $y ) {
95 @processor @ewe ;
96 @ewe.stack $z ; @code [$z = tostring($x / $y)] ;
97}
98
99@processor @ewe ;
100@ewe @ewe.mod ; @ewe.stack ~( $x $y ) {
101 @processor @ewe ;
102 @ewe.stack $z ; @code [$z = tostring($x % $y)] ;
103}
104
105@processor @ewe ;
106@ewe @ewe.mul ; @ewe.stack ~( $x $y ) {
107 @processor @ewe ;
108 @ewe.stack $z ; @code [$z = tostring($x * $y)] ;
109}
110
111@processor @ewe ;
112@ewe @ewe.pop ; @ewe.stack $name {
113 @processor @ewe ;
114 @ewe pop $name ;
115}
116
117@processor @ewe ;
118@ewe @ewe.push ; @ewe.stack $name {
119 @processor @ewe ;
120 @ewe push $name ;
121}
122
123@processor @ewe ;
124@ewe @ewe.peek ; @ewe.stack $name {
125 @processor @ewe ;
126 @ewe peek $name ;
127}
128
129@processor @ewe ;
130@ewe ( $x ) {
131 @processor @ewe ;
132 @ewe.stack $x ;
133}
134
135@processor @ ; @ ewe push $id {
136 @processor @ ;
137 @ewe $id ;
138}
139
lamb.process.wul Raw Playground
1{
2 @lamb.id 1 ;
3 @code [
4 local lamb = {}
5 lamb.objects = {}
6 lamb.groups = setmetatable({}, {__mode = "v"})
7 ] ;
8}
9
10@processor @ewe ;
11@ewe push @lamb.id ; @ewe.stack $n {
12 @processor @ewe ;
13 @lamb.id $n ;
14}
15
16@processor @ewe ;
17@ewe @lamb.new ; @lamb.id $id {
18 @processor @ewe ; @process switch to @ ;
19 @lamb.id $id ;
20 @ allocate new lamb
21 , increment id by 1
22 , ewe push $id
23 , done ;
24}
25
26@processor @ewe ;
27@ewe @lamb.is ; @ewe.stack ( $class $obj ) {
28 @processor @ewe ;
29 @ewe.stack ( $obj ) ;
30 @code [lamb.objects[$obj].class = $class] ;
31}
32
33@processor @ewe ;
34@ewe @lamb.set ; @ewe.stack ( $key $value $obj ) {
35 @processor @ewe ;
36 @ewe.stack ( $obj ) ;
37 @code [lamb.objects[$obj][$key] = $value] ;
38}
39
40@processor @ewe ;
41@ewe @lamb.get ; @ewe.stack ( $key $obj ) {
42 @processor @ewe ;
43 @ewe.stack ( $value ) ;
44 @code [$value = lamb.objects[$obj][$key]] ;
45}
46
47@processor @ewe ;
48@ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 4 ) {
49 @processor @ewe ;
50 @ewe $obj does $1 $2 $3 $4 ;
51}
52
53@processor @ewe ;
54@ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 $5 5 ) {
55 @processor @ewe ;
56 @ewe $obj does $1 $2 $3 $4 $5 ;
57}
58
59@processor @ ;
60@ allocate new lamb ; @lamb.id $n {
61 @processor @ ;
62 @lamb.id $n ;
63 @code [lamb.objects[$n] = {}] ;
64}
65
66@processor @ ;
67@ increment id by 1 ; @lamb.id $n {
68 @processor @ ; @process switch to @ewe ;
69 @ewe ( $n 1 @ewe.add [@lamb.id] @ewe.push @ewe.done ) ;
70}
main.processor.wul Raw Playground
1{
2 @ make player at 100 100
3 , move player by 20 50
4 , @lamb pprint
5}
6
7@processor @ ;
8@ move player by $x $y {
9 @processor @ ; @process switch to @ewe ;
10 @ewe ( #player @ewe.peek move by $x $y 4 @lamb.invoke @ewe.done ) ;
11}
12
13@processor @ ;
14@ make player at $x $y {
15 @processor @ ; @process switch to @ewe ;
16 @ewe (
17 @lamb.new
18 Player @lamb.is
19 $x x @lamb.set
20 $y y @lamb.set
21 #player @ewe.push @ewe.done
22 )
23}
24
25@processor @ ;
26@ @lamb pprint {
27 @processor @ ;
28 @code [require "pprint" (lamb.objects)]
29}
30
31@processor @ewe ;
32@ewe $self does move by $x $y {
33 @processor @ewe ;
34 @ewe (
35 $self
36 @ewe.dup x @lamb.get $x @ewe.add x @lamb.set
37 @ewe.dup y @lamb.get $y @ewe.add y @lamb.set
38 @ewe.drop
39 ) ;
40}
41
42@processor @ewe ;
43@ewe push #player ; @ewe.stack $id {
44 @processor @ewe ;
45 #player $id ;
46}
47
48@processor @ewe ;
49@ewe peek #player ; #player $p {
50 @processor @ewe ;
51 #player $p ; @ewe ( $p )
52}
53
54
process.wul Raw Playground
1{ @processor @ }
2@process switch to $who ; @processor $id {
3 @processor ( $who $id )
4}
5
6@ done ; @processor @ { }