GET-CURRENT
VOCABULARY points
points DEFINITIONS
ALSO
: x ( p -- x ) @ ;
: y ( p -- y ) CELL+ @ ;
: draw ( p -- ) DUP x SWAP y CR ." Draw point" ." x=" . ." y=" . PREVIOUS ;
PREVIOUS
SET-CURRENT
GET-CURRENT
VOCABULARY circles
circles DEFINITIONS
ALSO
: x ( p -- x ) @ ;
: y ( p -- y ) CELL+ @ ;
: radius ( p -- radius ) CELL+ CELL+ @ ;
: draw ( p -- ) DUP x OVER y ROT radius CR ." Draw circle x=" . ." y=" . ." radius= " . PREVIOUS ;
PREVIOUS
SET-CURRENT
: POINT ( x y -- p ) CREATE , , DOES> ALSO points ;
: CIRCLE ( x y radius -- p ) CREATE , , , DOES> ALSO circles ;
10 20 POINT p
30 40 50 CIRCLE c
p draw \ draw point
c draw \ draw circles
: draw_point p [ ALSO points ] draw [ PREVIOUS ] ;
: draw_circle c [ ALSO circles ] draw [ PREVIOUS ] ;
draw_point
draw_circle
R0VULUNVUlJFTlQKVk9DQUJVTEFSWSAgcG9pbnRzCnBvaW50cyBERUZJTklUSU9OUwpBTFNPCjogeCAoIHAgLS0gIHggKSBAICA7CjogeSAoIHAgLS0geSApIENFTEwrIEAgOwo6IGRyYXcgKCBwIC0tICkgRFVQIHggIFNXQVAgIHkgICBDUiAgLiIgRHJhdyBwb2ludCIgIC4iIHg9IiAgLiAgLiIgeT0iICAuICBQUkVWSU9VUyA7ClBSRVZJT1VTICAKU0VULUNVUlJFTlQKCkdFVC1DVVJSRU5UClZPQ0FCVUxBUlkgY2lyY2xlcwpjaXJjbGVzIERFRklOSVRJT05TCkFMU08KOiB4ICggcCAtLSB4ICkgQCA7CjogeSAoIHAgLS0geSApIENFTEwrIEAgOwo6IHJhZGl1cyAoIHAgLS0gcmFkaXVzICkgQ0VMTCsgQ0VMTCsgQCA7CjogZHJhdyAoIHAgLS0gKSBEVVAgeCBPVkVSIHkgIFJPVCByYWRpdXMgIENSICAuIiBEcmF3IGNpcmNsZSB4PSIgLiAuIiB5PSIgLiAuIiByYWRpdXM9ICIgLiAgUFJFVklPVVMgOwpQUkVWSU9VUyAKU0VULUNVUlJFTlQKCjogUE9JTlQgKCB4IHkgLS0gcCApIENSRUFURSAsICwgRE9FUz4gQUxTTyBwb2ludHMgOwo6IENJUkNMRSAoIHggeSByYWRpdXMgLS0gcCApIENSRUFURSAsICwgLCBET0VTPiBBTFNPIGNpcmNsZXMgOwoKMTAgMjAgUE9JTlQgIHAKMzAgNDAgNTAgQ0lSQ0xFIGMKCnAgZHJhdyBcIGRyYXcgcG9pbnQKYyBkcmF3IFwgZHJhdyBjaXJjbGVzCgo6IGRyYXdfcG9pbnQgcCBbIEFMU08gcG9pbnRzIF0gZHJhdyBbIFBSRVZJT1VTIF0gOwo6IGRyYXdfY2lyY2xlIGMgWyBBTFNPIGNpcmNsZXMgXSBkcmF3IFsgUFJFVklPVVMgXSA7CmRyYXdfcG9pbnQKZHJhd19jaXJjbGUK