I just downloaded gambc40b9 (haven't even built it; Linux binaries seem to work), and I have some dumb questions about Gambit. I have a fair amount of DrScheme code, which runs very slow, and I'm a bit tired of PLT right now, although I profited a lot from their teaching approach. I thought I'd port to Gambit for a speed increase. So:
Mostly I'm doing mod 2 linear algebra. That is, all my numbers are either 0 or 1. Isn't there some way to take advantage of that?
Does Gambit have a case sensitive mode? I didn't see anything like this in the info files, but maybe there's an easy way to get it.
Has anyone worked out ports of various DrScheme things, such as the local construction? Here's one dumb example:
(define (merge-1 shortlist longlist less-than?) ;; (listof x)^2 (x x -> boolean) -> (listof x) ;; to merge a short list into a longer list, deleting repetitions, using less-than?. ;; (merge-1 '(4 8 9) '(1 2 3 5 6 7 9 10 11) <) => (1 2 3 4 5 6 7 8 10) (local ((define (phi a B X less-than?) ;; x (listof x)^2 (x x -> boolean) -> (listof x) ;; to send a X B to (x_1 ... x_r a (mu B (x_{r+1} ... ))) if x_r < a < x_{r+1} (if (empty? X) (cons a B) (let ([x_1 (first X)]) (if (equal? a x_1) (merge-1 B (rest X) less-than?) (if (less-than? a x_1) (cons a (merge-1 B X less-than?)) (cons x_1 (phi a B (rest X) less-than?)))))))) (if (empty? shortlist) longlist (phi (first shortlist) (rest shortlist) longlist less-than?))))
I could turn all my local's into letrec's of course. There's other DrScheme stuff I use, like their quicksort & mergesort, I imagine there's already (faster) Gambit versions of these