growl/std.grr
2026-01-23 18:43:16 -03:00

32 lines
664 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 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];
}