home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / EFFO / pd6.lzh / TST / blocks.tst < prev    next >
Text File  |  1989-12-21  |  762b  |  43 lines

  1. .( Loading Blocks test...) cr
  2.  
  3. #include blocks.f83
  4.  
  5. locals blocks
  6.  
  7. .( 1: Define a code block for "nip") cr 
  8.  
  9. block[ swap drop ]; constant nip
  10.  
  11. 1 2 nip call . cr
  12.  
  13.  
  14. .( 2: Define a code block in a colon definition and call it) cr
  15.  
  16. : foo block[ 5 + 3 * ]; call ;
  17.  
  18. 6 foo . cr
  19.  
  20.  
  21. .( 3: Make a colon definition return a code block depending on parameter) cr
  22.  
  23. : fie if block[ 5 + ]; else block[ 8 + ]; then ;
  24.  
  25. 5 true fie call . cr
  26.  
  27.  
  28. .( 4: Show that blocks can return blocks as values) cr
  29.  
  30. 5 false block[ if block[ 5 + ]; else block[ 8 + ]; then ]; call call . cr
  31.  
  32.  
  33. .( 5: Define a generalized factorial function block) cr
  34.  
  35. block[ { x y z } x 0> if x 1- y z y call x * else z call then ]; constant fum
  36.  
  37. : fac ( n -- n! ) fum block[ 1 ]; fum call ;
  38.  
  39. 5 fac . cr
  40.  
  41. forth only
  42.  
  43.