March 2014 update
This commit is contained in:
parent
09687c4926
commit
a25938f123
1846 changed files with 21876 additions and 5203 deletions
|
|
@ -1,20 +1,28 @@
|
|||
\ short-circuit conditional syntax, from Wil Baden
|
||||
: COND 0 ; immediate
|
||||
: THENS BEGIN dup WHILE postpone THEN REPEAT DROP ; immediate
|
||||
: ORIF s" ?DUP 0= IF" evaluate ; immediate
|
||||
: ANDIF s" DUP IF DROP" evaluate ; immediate
|
||||
\ Short-circuit evaluation definitions from Wil Baden, with minor name changes
|
||||
: ENDIF postpone THEN ; immediate
|
||||
|
||||
: .bool IF ." true " ELSE ." false" THEN ;
|
||||
: A ." A=" dup .bool ;
|
||||
: B ." B=" dup .bool ;
|
||||
: COND 0 ; immediate
|
||||
: ENDIFS BEGIN DUP WHILE postpone ENDIF REPEAT DROP ; immediate
|
||||
: ORELSE s" ?DUP 0= IF" evaluate ; immediate
|
||||
: ANDIF s" DUP IF DROP" evaluate ; immediate
|
||||
|
||||
: .bool IF ." true " ELSE ." false " THEN ;
|
||||
: A ." A=" DUP .bool ;
|
||||
: B ." B=" DUP .bool ;
|
||||
|
||||
: test
|
||||
CR
|
||||
1 -1 DO 1 -1 DO
|
||||
CR I A drop space J B drop space
|
||||
." : ANDIF " COND I A ANDIF drop J B IF ." (BOTH)" THENS
|
||||
." , ORIF " COND I A ORIF drop J B 0= IF ." (NEITHER)" THENS
|
||||
COND I A ANDIF J B ENDIFS ." ANDIF=" .bool CR
|
||||
COND I A ORELSE J B ENDIFS ." ORELSE=" .bool CR
|
||||
LOOP LOOP ;
|
||||
|
||||
\ a more typical example
|
||||
: alnum? ( char -- ? )
|
||||
COND dup lower? ORIF dup upper? ORIF dup digit? THENS nip ;
|
||||
\ An alternative based on explicitly short-circuiting conditionals, Dave Keenan
|
||||
: END-PRIOR-IF 1 CS-ROLL postpone ENDIF ; immediate
|
||||
|
||||
: test
|
||||
CR
|
||||
1 -1 DO 1 -1 DO
|
||||
I A IF J B IF 1 ELSE END-PRIOR-IF 0 ENDIF ." ANDIF=" .bool CR
|
||||
I A 0= IF J B IF END-PRIOR-IF 1 ELSE 0 ENDIF ." ORELSE=" .bool CR
|
||||
LOOP LOOP ;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue