: dup 1 = if; dup 1- * ; : factorial dup 0 = [ 1+ ] [ ] if ;