On 2013-04-29, at 2:35 PM, Bradley Lucier lucier@math.purdue.edu wrote:
On 04/29/2013 01:48 PM, Jason Felice wrote:
I was wondering if anyone's thought about doing this. Also, if it's really as hard as making every primitive (except, course, promise?, promise-forced? and friends) check and force every parameter, or if there are any neat implementation tricks, especially if there's something which can be used in gambit (like error-handler, but that seems gross. Also, incomplete and messy).
Try configuring gambit with "--enable-auto-forcing". I've never tried it, and I don't know whether it works.
Indeed Gambit can be configured so that strict primitives do auto-forcing of promises. Just recompile Gambit with:
./configure --enable-auto-forcing make bootclean make
Then you'll be able to do this:
% gsi/gsi Gambit v4.6.7
(define a (delay (begin (pp 'forcing-a) 11))) (define b (delay (begin (pp 'forcing-b) 22))) (+ a b)
forcing-a forcing-b 33
(+ a b)
33
I just double-checked that it works.
Marc