Factorial in Factor
Example for versions
Factor 0.94
The first line lists the necessary dictionaries: formatting
(printf
), kernel
(dup
), math
(arithmetical operators) and sequences
(iota
).
Next the definition of factorial
word follows which replaces an integer n
with its factorial on the top of the stack. To do this, it constructs an array of numbers from 0 to n — 1
(word iota
) and folds it with 1
using quotation [ 1 + * ]
(increment and multiply) and combinator reduce
.
The main program constructs a list of numbers from 0 to 16 (iota
again) and for each of them (combinator each
) applies the quotation which calculates the factorial and outputs the result in required format.
Standard dictionary math.combinatorics
contains word factorial
defined exactly like this.
USING: formatting kernel math sequences ;
IN: factorial-example
: factorial ( n -- n! )
iota 1 [ 1 + * ] reduce ;
17 iota
[ dup factorial "%d! = %d\n" printf ] each
Comments
]]>blog comments powered by Disqus
]]>