#include 'Moo.moo'. ################################################################# ## MAIN ################################################################# ## TODO: use #define to define a class or use #class to define a class. ## use #extend to extend a class ## using #class for both feels confusing. extend Apex { } extend SmallInteger { method getTrue: anInteger { ^anInteger + 9999. } method inc { ^self + 1. } } class TestObject(Object) { dcl(#class) Q R. dcl(#classinst) t1 t2. } class MyObject(TestObject) { dcl(#class) C B A. method getTrue { ^true. } method getTrue: anInteger { ^ anInteger } method getFalse { ^false } method a { ^ 10 } method b { ^ 20 } method c { ^ 30 } method(#class) a: a b: b c: c { ^ a + b + c. } method(#class) main { | p p2 | 'START OF MAIN' dump. ##p := [ :a :b :c :d | a dump. b dump. (c + d) dump. ^10. ] newProcessWith: #(abc def 10 20). p := [ :a :b :c :d | a dump. b dump. (c + d) dump. ] newProcessWith: #(abc def 10 20). p2 := [ :a :b :c :d | a dump. b dump. a dump. b dump. (c + d) dump. ^10000 ] newProcessWith: #( AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 1000000000000000 299999999999999999999999999999999999999999 ). p resume. p2 resume. 'MIDDLE OF MAIN' dump. Processor activeProcess terminate. ##p terminate. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. ## p resume. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. 'END OF MAIN' dump. } }