User: DonHopkins

  • Created: 3868 days ago
  • Karma: 23545
  •     \ don@donhopkins.com
    
        FORTH ?KNOW IF HONK ELSE FORTH LEARN THEN
    
        : C(-; LICK SMILE NOSE WINK ;
    
        \ FORTH PAPER TAPE PUNCHER:
    
        : PT# ( L --- L/2 )
          DUP 1 AND IF 
            ASCII @ 
          ELSE BL THEN
          HOLD
          2/
        ;
    
        : PT. ( N --- )
          <# PT# PT# PT# 
             ASCII . HOLD
             PT# PT# PT# PT#
          #> TYPE
        ;
    
        : CUT
          ." -----------" CR
        ;
    
        : PTAPE
          CUT
          BEGIN
            KEY ?DUP WHILE
            DUP ." |" PT. ." |"  SPACE EMIT CR
          REPEAT
          CUT
        ;
    
    Lisp -vs- Forth -vs- PostScript:

        ; Lisp:
        (defun caar (x) (car (car x)))
        (defun caaar (x) (car (car (car x))))
        (defun caaaar (x) (car (car (car (car x)))))
    
        \ Forth:
        : droop drop drop ;
        : drooop drop drop drop ;
        : droooop drop drop drop drop ;
    
        % PostScript:
        /poop { pop pop } def
        /pooop { pop pop pop } def
        /poooop { pop pop pop pop } def