2013/1/16 Chris Müller ruunsmail@gmail.com
Thanks, that helped very much !
Am 10.01.2013 12:40, schrieb Álvaro Castro-Castilla:
Hi!
I'll try to help you with some answers:
- One solution would be to use Blackhole, it handles the location. If you
don't the best solution is to use the ~~ syntax: (load "~~yourlib/yourmodule") This will expand to your current Gambit installation directory. In my case, this would be /usr/local/Gambit-C/yourlib/yourmodule.scm
- Well, the place for learning Gambit usage is the documentation in the
web, AFAIK. There are also some other explanations in the wiki.
- Use Blackhole, it will both give you a module system and a macro
expander (for syntax-rules and syntactic closures). Snow was primarily intended to be a cross-implementation module system, for portable libraries, but I think it wasn't very successful as it seems unmaintained. Probably due to R6RS irruption. I have my own system, which is not really a module system, but a way to handle packages and automate tasks. In the near future I'll try to merge it with Blackhole.
I've managed to to get it work and start using it.
- Try with pretty printing: (pp object). Another useful procedure would be
OBJECT->STRING
Is it also possible to set a custom format for an object? (similar to http://srfi.schemers.org/srfi-28/srfi-28.html)
Anything is possible: I believe there's not hooks for this in the system already, because when someone wants custom formatted output it's generally more suitable for the user to implement this from scratch, though you can add any hooks you want.
e.g. i'm currently looking for a (number->string ...) conversion, where i
can set the number of digits after the decimal point within the string.
You can patch Gambit to make this happen. Preferably you add a parameter i.e. |make-parameter| value to Gambit's code where you specify this setting, and then make the routine - number->string I guess - pick it up.
So,
; Global scope - default behavior (number->string 5.2) ; => "5.2"
; Global scope - chris/number->string:fixed-decimals set to 5 ** Generally don't do it this way! ** (chris/number->string:fixed-decimals 5.2) ; => "5.20000"
; Parameterized scope with chris/number->string:fixed-decimals set to 3. (but like this) (parameterize ((chris/number->string:fixed-decimals 3)) (number->string 5.2)) ; => "5.200"
; Global scope - of course it's back the same i.e. (chris/number->string:fixed-decimals 5.2) ; => "5.20000"
More generally, this kind of thing would be done with a formatting library. I believe it remains for one tuned for Gambit yet to come into existence - there's a SchemeFmt library, something like this, out there that's cross-scheme, perhaps it could be adapted. Someone on the ML by the name Tanya I believe got it running on Gambit.
Feel free to share any patches you produce with the ML.
- In my opinion, one of the strongest points of this implementation is its
FFI capabilities. There are Cairo bindings in the dumping grounds of the web. I have also made my own, updated to Cairo 1.12. C bindings are _relatively_ straightforward. Objective-C seems to be as well, although I don't have experience with this (there are some helper macros in the dumping grounds as well). But I don't see why you would have any problems with Glib/GTK/Cairo. You'll have to figure a way to express the functionality of Glib's C macros.
I hope I clarified some things.
Best regards,
Álvaro
Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list