¡@

 ªþ¿ýB DOES/MAKE ªº©w¸q

¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w

¦pªG§Aªº²Å¦¡¨t²Î¤¤¨S¦³¡yDOER¡z©M¡yMAKE¡zªº©w¸q¡A³o­Óªþ¿ý´N¬O¥Î¨ÓÀ°§U§A«Ø¥ß¨Ã ¤F¸Ñ¥¦­Ìªº¡C¦]¬°³o¨Ç¬O»P¨t²Î¬ÛÃöªº¦r¡A§Ú¦b«á­±¦C¥X¤F¤@¨Ç¤£¦Pªº¹ê²{¤è¦¡¡A§Æ±æ ¨ä¤¤¦³§A¯à°÷¥Î¤Wªº¤@ºØ¡C¦pªG¨S¦³¡A¦Ó¥B³oùةҴ£¨Ñµ¹§Aªº¸ê®Æ¤]¤£¨¬¥HÅý¥¦­Ì¦b §Aªº¨t²Î¤¤°Ê°_¨Ó¡A¨º§A¤]³\¦³µÛ¤@­Ó«Ü¿W¯Sªº²Å¦¡¨t²Î¡C½Ð§A¥h§ä¨º­Ó¨t²Îªº»s³y°Ó À°¦£¡C ¥¦¤u§@¤è¦¡¬O³o¼Ëªº¡GDOER ¬O¤@­Ó©w¸q¦r¡A¥¦·|¦bµü¨å¤¤«Ø¥X¤@­Ó¦r¡]ºÙ¬°DOERªº «Ä¤l¡A¤SºÙ¬°DOER¦r¡^¡A³o­Ó¦rªº°Ñ¼Æ°ÏÄæ¦ì¡]¤@­Ócellªº¤j¤p¡^¦s©ñµÛ¤@­Ó¦V¶q¦a§}¡A ¥¦³Qªì³]¬°«üµÛ¤@­Ó¤°»ò¤]¤£°µªº¦r¡yNOTHING¡z¡C DOER ªº«Ä¤l·|°õ¦æ DOER ©w¸q¤¤ªº DOES> ³¡¥÷ªº½X¡A¦Ó³o¬q½X¥u°µ¤G¥ó¨Æ¡GŪ¨ú ³o­Ó¦V¶q¦a§}¡A¨Ã¥B©ñ¨ìªð¦^°ïÅ|¤W¡C²Å¦¡±µ¤U¨Ó´N·|°õ¦æ³o­Ó¦a§}©Ò«üµÛªº½X¡A¤] ´N¬O³Q³o­Ó¦V¶q©Ò«üµÛªº¥\¯à¡C³o´N¹³¬O¡]¦b83¼Ð·Ç¤¤¡^Áä¤J¡G

      ' NOTHING >BODY >R

ªº¤è¦¡¨Ó°õ¦æ¡yNOTHING¡z³o­Ó¦r¡C¡]³oºØ°õ¦æ¤è¦¡¥u¯à¨Ï¥Î¦b·íNOTHING¬O­Ó°ª¶¥¦rªº ±¡ªp¤U¡C¡^ ¤U­±¬O§Ú­ÌÁä¤J¡yDOER JOE¡z«á¡Aµü¨å¤º³o³¡¥÷ªº¹Ï¥Ü¡A

      DOER JOE
      ¢z¢w¢w¢s¢w¢w¢w¢w¢w¢w¢w¢s¢w¢w¢w¢w¢w¢w¢{
      ¢x    ¢xpoint to      ¢x pfa of     ¢x
      ¢xJOE ¢xDOES> of DOER ¢x NOTHING    ¢x
      ¢|¢w¢w¢r¢w¢w¢w¢w¢w¢w¢w¢r¢w¢w¢w¢w¢w¢w¢}
       ÀY³¡   °õ¦æ°ÏÄæ¦ì      °Ñ¼Æ°ÏÄæ¦ì

²{¦b¡A°²³]§Ú­Ì©w¸q

      : TEST   MAKE JOE  CR ;

¤]´N¬O¡A§Ú­Ì©w¸q¤F¤@­Ó¦r¡A¥¦¯à¨Ï JOE ­«·s«ü¦V¡A¥h°õ¦æ¡yCR¡zªº°Ê§@¡C ¤U­±¬O TEST ³o­Ó©w¸q¦bµü¨å¤¤ªº¹Ï¥Ü¡A

   ¢z¢w¢w¢s¢w¢w¢w¢w¢s¢w¢w¢s¢w¢w¢w¢s¢w¢w¢w¢s¢w¢w¢w¢{
   ¢x    ¢x cfa of ¢x    ¢xcfa of¢xcfa of¢xcfa of¢x
   ¢xTEST¢x (MAKE) ¢x 0  ¢xJOE   ¢xCR    ¢xEXIT  ¢x
   ¢|¢w¢w¢r¢w¢w¢w¢w¢r¢w¢w¢r¢w¢w¢w¢r¢w¢w¢w¢r¢w¢w¢w¢}
    ÀY³¡             adr1   adr2    adr3

Åý§Ú­Ì¥ýÀ˵ø MAKE ªºµ{¦¡½X¡C¦]¬°§Ú­Ì¬O¦b¤@­Ó«_¸¹©w¸q¤¤¨Ï¥Î MAKE ¡A©Ò¥H³o®É ªº STATE ¦b"¯u"ªºª¬ºA¡A¦]¦¹´N·|°õ¦æ¤U­±³o¬q¤ù»y¡G

      COMPILE  (MAKE)  HERE MARKER !  0 ,

§Ú­Ì¬Ý¥X MAKE ½s¤J¤F¤@­Ó°õ¦æ®É°Ïªº±`¦¡ (MAKE) ¤Î¤@­Ó 0¡C¡]µy«á§Ú­Ì¦A¸ÑÄÀ0ªº¥Î ³~¡A¤Î¬°¤°»ò­n±N¥¦ªº¦a§}¦s¨ìÅÜ¼Æ MARKER ¤º¡^¡C ²{¦bÅý§Ú­Ì¬Ý¬Ý¡A¦b°õ¦æ TEST ³o­Ó¦r®É¡A(MAKE) °µ¤F¤°»ò¡C

R> ±qªð¦^°ïÅ|¨ú±o¦a§}¡A¥¦´N¬O¦b (MAKE) ¤§«á¡A ¦s©ñµÛ0ªº¨º­Ó¦a§}adr1¡C DUP 2+ ¨ú±o (MAKE) ¤§«áªº²Ä¤G­Ó¦a§}¡A¤]´N¬O¦s©ñ JOE ªºCFA¤§³Badr2¡C DUP 2+ ¨ú±o (MAKE) ¤§«áªº²Ä¤T­Ó¦a§}adr3¡A¤]´N¬O§Ú­Ì©Ò ­n°õ¦æªº½Xªº°_©l³B¡C³o®Éªº°ïÅ|µù¸Ñ¬O ( adr1 adr2 adr3 -- ) SWAP @ >BODY ¥ý¨ú±o JOE ªº°õ¦æ°Ï¦a§}¡A¦AÂର°Ñ¼Æ°Ï¦a§}¡A¤] ´N¬O¦s©ñµÛ¦V¶qªº¦a¤è¡C ! ±N©Ò­n°õ¦æªº½X¡]CR¡^ªº¦a§}adr3µø¬°¤@­Ó¦V¶q¦s¤J ¡C²{¦b¡AJOE «üµÛ TEST ³o­Ó©w¸q¤¤ªº¬Y³B¡C·í§Ú­Ì Áä¤JJOE ®É¡A¨º¬q½X´N·|³Q°õ¦æ¡C @ ?DUP IF >R THEN Ū¨ú¦sµÛ0ªº¨º­Ó¦a§}¡C¦]¬°¬O0¡A©Ò¥H IF THEN ªº ¤ù»y¤£·|³Q°õ¦æ¡C

³o¬O³Ì°ò¥»ªº·§©À¡C¦ý¨º­Ó¦sµÛ0ªº¦a¤è¬O°µ¤°»ò¥Îªº¡H¬Oµ¹ ;AND ¨Ï¥Îªº¡C¦pªG§Ú­Ì §â TEST ªº©w¸q­×§ï¬°

      : TEST   MAKE JOE  CR ;AND  SPACE ;

·í°õ¦æ TEST ®É¡A·|¥ý¨Ï JOE «ü¦V CR¡A±µµÛ°õ¦æ SPACE ³o­Ó¦r¡C·sª©ªº TEST ¦bµü¨å ¤¤¬Ý°_¨Ó¹³³o¼Ë¡G

                      ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
                      ¢x                            ¡õ
   ¢z¢w¢w¢s¢w¢w¢w¢w¢s¢w¢w¢s¢w¢w¢w¢s¢w¢w¢w¢s¢w¢w¢w¢s¢w¢w¢w¢s¢w¢w¢w¢{
   ¢x    ¢x cfa of ¢xadr ¢xcfa of¢xcfa of¢xcfa of¢xcfa of¢xcfa of¢x
   ¢xTEST¢x (MAKE) ¢x    ¢xJOE   ¢xCR    ¢xEXIT  ¢xSPACE ¢xEXIT  ¢x
   ¢|¢w¢w¢r¢w¢w¢w¢w¢r¢w¢w¢r¢w¢w¢w¢r¢w¢w¢w¢r¢w¢w¢w¢r¢w¢w¢w¢r¢w¢w¢w¢}

¤U­±¬O ;AND ªº©w¸q¡G

      : ;AND   COMPILE EXIT  HERE MARKER @ ! ;   IMMEDIATE

¡y;AND¡z½s¤J¤F¤@­Ó¡yEXIT¡z¡A´N¹³¡y;¡z¤@¼Ë¡C ¦^·Q¤@¤U¡AMAKE ·|±N¤@­Ó¦a§}¦s¦bÅÜ¼Æ MARKER ¤º¡C±µ¤U¨Óªº ;AND ·|±N¨º²Ä¤G¬q ¥H¦r SPACE ¬°°_©lªº½Xªº¦a§}¡]¥Ñ HERE ¨ú±o¡^¦s¤J­è¤~¦sµÛ0ªº¨º­Ó¦ì¸m¤º¡C²{¦b¡A (MAKE) ¦³¤F¤@­Ó¯àÄ~Äò°õ¦æ¤U¥hªº«ü¼Ð¤F¡C¤ù»y

      IF  >R THEN

±N§â SPACE ©Ò¦bªº¦a§}©ñ¨ìªð¦^°ïÅ|¤W¡C¦]¦¹¡AMAKE ¨ì ;AND ªº³o¬q½X´N³Q¸õ¹L¡A¦Ó °õ¦æ·|¥Ñ SPACE ¦AÄ~Äò¡Aª½¨ì¤À¸¹¬°¤î¡C UNDO ³o­Ó¦r·|±N¤@­ÓDOER¦rªº¦æ¬°¦A«×Åܦ¨¤°»ò¤]¤£°µ¡C ³Ì«á­nª`·N¡G¦b¬Y¨Ç¨t²Î¡A§A¥i¯à·|¦³°ÝÃD¡C¦pªG§A¦b«_¸¹©w¸q¤§¥~¨Ï¥Î MAKE ¥h©w¸q¤@­Ó«e¦V°Ñ¦Ò¡A§A©Î³\¥i¯àµLªk§ä¨ì³Ì«á³Q©w¸q¥X¨Óªº¨º­Ó¦r¡C¨Ò¦p§A¼g

      : REFRAIN   DO-DAH  DO-DAH ;
      MAKE SONG  CHORUS  REFRAIN ;

§Aªº¨t²Î¤]³\·|»{¬° REFRAIN ¬O­Ó©|¥¼³Q©w¸qªº¦r¡C³o­Ó°ÝÃD¬O¦]¬° SMUDGE ªº¹B§@©Ò ³y¦¨¡C¸Ñ¨Mªº¤èªk¬O¡A¸ÕµÛ­«·s¦w±Æ©w¸qªº¶¶§Ç¡A©Î¬O±N MAKE ªº°Ê§@©ñ¨ì¤@­Ó«_¸¹©w¸q ¤¤¡A¦A¥h°õ¦æ³o­Ó©w¸q¡G

      : SETUP   MAKE SONG  CHORUS  REFRAIN ;   SETUP

¦bLMI¤½¥qªºPC/FORTH 2.0¨t²Îªº¹ê²{½X¤¤¡AUNSMUDGE ªº¥X²{´N¬O¬°¤F¸Ñ¨M³o­Ó°ÝÃD¡C ³Ì«á­±¦³¤@­Ó¨Ï¥ÎMAKE/DOERªº¨Ò¤l¡C¦b¸ü¤J³o­Ó¨Ò¤l¨ì¨t²Î¤§«á¡A¥ý°õ¦æ¤@¦¸ RECITAL¡C¦A°õ¦æ WHY? ³o­Ó¦r¡C¨C¦¸ WHY? ªº°õ¦æ¡A³£·|¦L¥X¤@­Ó¤£¦Pªº²z¥Ñ¡C

  \ FORTH83 Laxen/Perry/Harris ªºª©¥»
    : NOTHING ;
    : DOER   CREATE  ['] NOTHING  >BODY ,  DOES> @ >R ;
    VARIABLE MARKER
    : (MAKE)   R>  DUP 2+  DUP 2+  SWAP @  >BODY !
       @ ?DUP IF  >R THEN ;
    : MAKE   STATE @ IF  ( compiling)
       COMPILE (MAKE)  HERE MARKER !  0 ,
       ELSE  HERE  [COMPILE] '  >BODY !  [COMPILE] ]  THEN ;   IMMEDIATE
    : ;AND   COMPILE EXIT  HERE MARKER @ ! ;
    : UNDO   ['] NOTHING  >BODY  [COMPILE] '  >BODY ! ;
  \ FORTH83 LMI PC/FORTH 2.0 ªºª©¥»
    : NOTHING ;
    : DOER   CREATE  ['] NOTHING  >BODY ,  DOES> @ >R ;
    VARIABLE MARKER
    : (MAKE)   R>  DUP 2+  DUP 2+  SWAP @  >BODY !
       @ ?DUP IF  >R THEN ;
    : MAKE   STATE @ IF  ( compiling)
       COMPILE (MAKE)  HERE MARKER !  0 ,
       ELSE  HERE  [COMPILE] '  >BODY !  [COMPILE] ] UNSMUDGE
       THEN ;   IMMEDIATE
    : ;AND   COMPILE EXIT  HERE MARKER @ ! ;
    : UNDO   ['] NOTHING  >BODY  [COMPILE] '  >BODY ! ;
  \ ¤@­Ó¨Ò¤l
    DOER ANSWER
    : RECITAL
       CR ." Your daddy is standing on the table. Ask him 'WHY?' "
         MAKE ANSWER  ." To change the light bulb."
       BEGIN
       MAKE ANSWER  ." Because it's burned out."
       MAKE ANSWER  ." Because it was old."
       MAKE ANSWER  ." Because we put it there a long time age."
       MAKE ANSWER  ." Because it was dark!"
       MAKE ANSWER  ." Because it was night time."
       MAKE ANSWER  ." Stop saying WHY?"
       MAKE ANSWER  ." Because it's driving me crazy."
       MAKE ANSWER  ." Just let me change this light bulb!"
       FALSE UNTIL ;
    : WHY?   CR  ANSWER  QUIT ;

¡@