On Apr 7, 2005, at 10:55 PM, ben@fuhok.net wrote:
I attached some fixes that I fished out of the rather noisy diff. I think I got most of them. The majority aren't really for `bugs', at least not serious ones. They mostly correct wrong function names in your error macros.
I noted some discrepancy in argument order between the srfi-14 text and Olin's reference implementation. For those functions that take a string and a `criterion', the srfi (usually) lists the order as `string' `criterion', but the reference implementation often switches them around. The functions string-every and string-any are exceptions: the spec orders their arguments as `criterion' `string'.
I flipped several arguments around to match the srfi spec instead of the reference implementation.
Wow, you caught a lot of problems, thanks.
I've included below the diffs between the implementation I sent before and this one; I hope I caught all the things you pointed out. Also, I've included a tar file with all the .scm files again. Put them in a directory srfis at the same level as lib/gsi/gsc in the gambit directory and compile with
[zakon2-iro-umontreal-ca:~/programs/gambc40b12/srfis] bjlucier% gsc Gambit Version 4.0 beta 12
(compile-file "srfis" '(check))
#t
(load "srfis")
"/Users/bjlucier/programs/gambc40b12/srfis/srfis.o6"
By the way, once it's compiled, it can be loaded into the interpreter without any problems. I imagine that srfis will eventually be gambit-runtime quality code, highly optimized but with complete error checks, so I don't see any problem assuming that they will be compiled before being loaded into either the interpreter or the compiler.
There are still a number of places where I just call error directly to deal with errors. That strategy is not optimal, for reasons that I laid out in my previous e-mail. Marc, you want to chime in here and tell us how to do it properly?
At any rate, perhaps we can use this strategy: Assume that we're compiling all SRFIs in a directory srfis in the Gambit directory as I suggested, and work at incrementally improving this code rather than starting with a new one.
Brad