def print { file/stdout file/write } def when { [] if } def keep { over [call] dip } def bi { [keep] dip call } def times { if: over 0 = [drop drop] [swap over >r >r call r> 1 - r> times]; } def fizzbuzz? { [3 % 0 =] [5 % 0 =] bi or } def fizz { when: 3 % 0 = ["Fizz" print]; } def buzz { when: 5 % 0 = ["Buzz" print]; } def fizzbuzz1 { if: fizzbuzz? [ [fizz] keep buzz "\n" print ] [ . ]; } def fizzbuzz { 0 swap times: [ 1 + dup [fizzbuzz1] keep ]; drop } 30 fizzbuzz