33 lines
703 B
Text
33 lines
703 B
Text
def print { stdout fprint }
|
|
def println { stdout fprint "\n" stdout fprint }
|
|
def nl { "\n" stdout fprint }
|
|
|
|
def eprint { stderr fprint }
|
|
def eprintln { stderr fprint "\n" stderr fprint }
|
|
|
|
def when { [] if }
|
|
def unless { swap when }
|
|
|
|
def dip { swap [] curry compose call }
|
|
def 2dip { swap [dip] dip }
|
|
def 3dip { swap [2dip] dip }
|
|
|
|
def keep { over [call] dip }
|
|
def 2keep { [2dup] dip 2dip }
|
|
def 3keep { [dup 2over dig] dip 3dip }
|
|
|
|
def bi { [keep] dip call }
|
|
def tri { [[keep] dip keep] dip call }
|
|
|
|
def times {
|
|
if: over 0 =
|
|
[drop drop]
|
|
[swap over >r >r call r> 1 - r> times];
|
|
}
|
|
|
|
def while {
|
|
swap dup bury >r >r
|
|
if: call dup
|
|
[r> dup >r call r> r> swap while]
|
|
[drop r> drop r> drop];
|
|
}
|