\ spiles.forth -------------------------------- \ "No Weighting" from Starting Forth Chapter 12 0 VALUE density 0 VALUE tan(theta) 0 VALUE id : " [CHAR] " WORD DUP C@ 1+ ALLOT ; ( -- c-addr ) : MATERIAL ( 'string density tan[theta] -- ) CREATE , , , DOES> DUP @ TO tan(theta) CELL+ DUP @ TO density CELL+ @ TO id ; : .SUBSTANCE id COUNT TYPE ; : FOOT 10 * ; ( feet -- scaled-height ) : INCH 100 12 */ 5 + 10 / + ; ( scaled-height -- scaled-height' ) : /TAN 1000 tan(theta) */ ; ( n -- n' ) : PILE ( scaled-height -- ) DUP DUP 10 */ 1000 */ 355 339 */ /TAN /TAN density 200 */ ." = " . ." tons of " .SUBSTANCE ; \ table of materials ( string-address density tan[theta] ) " cement" 131 700 MATERIAL cement " loose gravel" 93 649 MATERIAL loose-gravel " packed gravel" 100 700 MATERIAL packed-gravel " dry sand" 90 754 MATERIAL dry-sand " wet sand" 118 900 MATERIAL wet-sand " clay" 120 727 MATERIAL clay