-
Notifications
You must be signed in to change notification settings - Fork 0
/
std.zf
46 lines (46 loc) · 1023 Bytes
/
std.zf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
: 1+ 1 + ;
: 1- 1 - ;
: 2* 2 * ;
: 2/ 2 / ;
: <> = inv ;
: 0= 0 = ;
: 0<> 0 <> ;
: 0> 0 > ;
: 0< 0 < ;
: over >r dup r> swap ;
: rot >r swap r> swap ;
: tuck swap over ;
: 2dup over over ;
: 2drop drop drop ;
: ? @ . cr ;
: r@ r> dup >r ;
: +! dup @ rot + swap ! ;
: max dup rot dup rot > _if swap drop else drop _then ;
: min dup rot dup rot < _if swap drop else drop _then ;
: var create 1 allot ;
: , here 1 allot ! ;
\ test test test
\ test test test
: const create , does> @ ;
: iter-impl r> rot rot swap >r >r >r ;
: i r> r> dup >r swap >r ;
: THEN postpone _if ; immediate
: ELSE postpone else ; immediate
: IF postpone _then ; immediate
: if postpone _if ; immediate
: if-so-then postpone _if ; immediate
: endif postpone _then ; immediate
: then postpone _then ; immediate
: array ( n -- )
create dup , allot
does>
over 1 < _if
drop drop
else
2dup @ > _if
drop drop
else
over + swap drop
_then
_then
;