At Tue, 9 Apr 2013 14:02:27 +0200, Laurent wrote:
> But if you write all 10 cases, aren't the lists constructed anyway before
> calling `*'?

Applying `*' to N arguments doesn't construct a list of N arguments.
There's a continuation frame that accumulates the N arguments, but in a
way that tends to be much more efficient for the purposes of
constructing a function call.


For `(partial-factorial 0 1000000)', the difference doesn't matter,
since the 100000 or so bignum multiplications dominate. But I'd write

     (for/fold ([v 1]) ([p (in-range (+ m 1) (+ n 1))])
       (* v p))

or even

     (for/product ([p (in-range (+ m 1) (+ n 1))]) p)

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to