[racket] Vast performance differences with minute syntactic differences

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Thu Oct 4 19:46:36 EDT 2012

On Thu, Oct 4, 2012 at 7:01 PM, J. Ian Johnson <ianj at ccs.neu.edu> wrote:
> By almost exactly I mean
> (let () (set-add res v))
> versus
> (let ([res res])
>  (set-add (let ([v v])
>              (set-add res (let () v)))))

These seem importantly different, in that:

(set-add v (set-add res v))


(set-add res v)

are totally different values, and the former only works if both `v`
and `res` are sets.

If you want to determine the behavior of the compiler, which is what
matters for differences like extra `let` bindings, 'raco decompile' is
the best tool.
sam th
samth at ccs.neu.edu

Posted on the users mailing list.