17 lines
449 B
Forth
17 lines
449 B
Forth
: each-char[ ( c-addr u -- )
|
|
postpone BOUNDS postpone ?DO
|
|
postpone I postpone C@ ; immediate
|
|
|
|
\ interim code: ( c -- )
|
|
|
|
: ]each-char ( -- )
|
|
postpone LOOP ; immediate
|
|
|
|
: type-lowercase ( c-addr u -- )
|
|
each-char[ dup lowercase? if emit else drop then ]each-char ;
|
|
|
|
: upcase ( 'string' -- 'STRING' )
|
|
2dup each-char[ char-upcase i c! ]each-char ;
|
|
|
|
: count-lowercase ( c-addr u -- n )
|
|
0 -rot each-char[ lowercase? if 1+ then ]each-char ;
|