:: [recur-quot] ( vals quot -- quot' ) [ vals first2 quot call vals second vals set-first vals set-second ] ; ! quot should be ( a[n-1] a[n] -- a[n+1] ) :: 2-recurrence ( n start-vals quot -- end-vals ) start-vals clone dup quot [recur-quot] [ n ] dip [ over 0 > ] [ [ 1 - ] [ dup call( -- ) ] bi* ] while 2drop ;