Son aktivite 1 month ago

ewe.wul Ham Playground
1@ ewe block do { @ewe blocking thread }
2@ ewe block end ; @ewe blocking thread { }
3@ ewe push $id { @ewe $id }
4
5@ewe @ewe.dup ; @ewe.stack $ {
6 @ewe.stack ( $ $ )
7}
8
9@ewe @ewe.swap ; @ewe.stack ( $x $y ) {
10 @ewe.stack ( $y $x )
11}
12
13@ewe @ewe.drop ; @ewe.stack ( $x ) { }
14
15@ewe @ewe.nip ; @ewe.stack ( $ $x ) {
16 @ewe.stack $x
17}
18
19@ewe @ewe.call ; @ewe.stack $fn {
20 @ewe def $fn ;
21}
22
23@ewe @ewe.if ; @ewe.stack ( $true $ true ) {
24 @ewe def $true
25}
26
27@ewe @ewe.if ; @ewe.stack ( $ $false false ) {
28 @ewe def $false
29}
30
31@ewe @ewe.lt ; @ewe.stack ~( $x $y ) {
32 @ewe.stack $z ; @code [$z = tostring(tonumber($x) < tonumber($y))]
33}
34
35@ewe @ewe.eq ; @ewe.stack ~( $x $y ) {
36 @ewe.stack $z ; @code [$z = tostring(tonumber($x) == tonumber($y))]
37}
38
39@ewe @ewe.gt ; @ewe.stack ~( $x $y ) {
40 @ewe.stack $z ; @code [$z = tostring(tonumber($x) > tonumber($y))]
41}
42
43@ewe @ewe.and ; @ewe.stack ( true ture ) { @ewe.stack true }
44@ewe @ewe.and ; @ewe.stack ( $1 $2 ) { @ewe.stack false }
45
46@ewe @ewe.or ; @ewe.stack ( true $ ) { @ewe.stack true }
47@ewe @ewe.or ; @ewe.stack ( $ true ) { @ewe.stack true }
48@ewe @ewe.or ; @ewe.stack ( $ $ ) { @ewe.stack false }
49
50@ewe @ewe.not ; @ewe.stack true { @ewe.stack false }
51@ewe @ewe.not ; @ewe.stack false { @ewe.stack true }
52
53@ewe @ewe.sub ; @ewe.stack ~( $x $y ) {
54 @ewe.stack $z ; @code [$z = tostring($x - $y)]
55}
56
57@ewe @ewe.add ; @ewe.stack ~( $x $y ) {
58 @ewe.stack $z ; @code [$z = tostring($x + $y)]
59}
60
61@ewe @ewe.div ; @ewe.stack ~( $x $y ) {
62 @ewe.stack $z ; @code [$z = tostring($x / $y)]
63}
64
65@ewe @ewe.mod ; @ewe.stack ~( $x $y ) {
66 @ewe.stack $z ; @code [$z = tostring($x % $y)]
67}
68
69@ewe @ewe.mul ; @ewe.stack ~( $x $y ) {
70 @ewe.stack $z ; @code [$z = tostring($x * $y)]
71}
72
73@ewe @ewe.pop ; @ewe.stack $name {
74 @ewe pop $name
75}
76
77@ewe @ewe.push ; @ewe.stack $name {
78 @ewe push $name
79}
80
81@ewe @ewe.peek ; @ewe.stack $name {
82 @ewe peek $name
83}
84
85@ewe @ewe.block.main {
86 @ @ewe.blocking
87}
88
89@ewe @ewe.unblock.main ; @ @ewe.blocking { }
90
91@ewe @ewe.unblock.main { }
92
93
94@ewe ( $x ) { @ewe.stack $x }
95
96@ ewe do , $op {
97
98}
99
100@ ewe doing , $op {
101 @ ewe doing ; @ewe $op ;
102}
103
104@ ewe doing , ewe end ; @ewe blocking thread { }
105
106
lamb.wul Ham Playground
1{
2@lamb.id 1 ;
3@code [
4 local lamb = {}
5 lamb.objects = {}
6 lamb.groups = setmetatable({}, {__mode = "v"})
7]
8}
9
10@ewe push @lamb.id ; @ewe.stack $n {
11 @lamb.id $n
12}
13
14@ewe @lamb.new ; @lamb.id $id {
15 @lamb.id $id ;
16 @ ewe block do
17 , allocate new lamb
18 , increment id by 1
19 , ewe push $id
20 , ewe block end
21}
22
23@ewe @lamb.is ; @ewe.stack ( $class $obj ) {
24 @ewe.stack ( $obj ) ;
25 @code [lamb.objects[$obj].class = $class]
26}
27
28@ewe @lamb.set ; @ewe.stack ( $key $value $obj ) {
29 @ewe.stack ( $obj ) ;
30 @code [lamb.objects[$obj][$key] = $value]
31}
32
33@ewe @lamb.get ; @ewe.stack ( $key $obj ) {
34 @ewe.stack ( $value ) ;
35 @code [$value = lamb.objects[$obj][$key]]
36}
37
38@ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 4 ) {
39 @ewe $obj does $1 $2 $3 $4
40}
41
42@ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 $5 5 ) {
43 @ewe $obj does $1 $2 $3 $4 $5
44}
45
46@ allocate new lamb ; @lamb.id $n {
47 @lamb.id $n ;
48 @code [lamb.objects[$n] = {}]
49}
50
51@ increment id by 1 ; @lamb.id $n {
52 @ewe ( $n 1 @ewe.add [@lamb.id] @ewe.push )
53}
54
55
main.wul Ham Playground
1{
2 @ make player at 100 100
3 , move player by 20 50
4 , @lamb pprint
5}
6
7@ move player by $x $y {
8 @ewe ( #player @ewe.peek move by $x $y 4 @lamb.invoke ) ;
9}
10
11@ewe $self does move by $x $y {
12 @ewe (
13 @ewe.block.main
14 $self
15 @ewe.dup x @lamb.get $x @ewe.add x @lamb.set
16 @ewe.dup y @lamb.get $y @ewe.add y @lamb.set
17 @ewe.drop
18 @ewe.unblock.main
19 )
20}
21
22@ make player at $x $y {
23 @ewe (
24 @ewe.block.main
25 @lamb.new
26 Player @lamb.is
27 $x x @lamb.set
28 $y y @lamb.set
29 #player @ewe.push
30 @ewe.unblock.main
31 )
32}
33
34
35@ewe push #player ; @ewe.stack $id {
36 #player $id
37}
38
39@ewe peek #player ; #player $p {
40 #player $p ; @ewe ( $p )
41}
42
43@ @lamb pprint {
44 @code [require "pprint" (lamb.objects)]
45}