Alex Sandro Queiroz e Silva wrote:
Hallo,
Cristian Baboi wrote:
On Tue, 26 Aug 2008 16:27:24 +0300, Christian Jaeger christian@pflanze.mine.nu wrote:
For the list of currently supported keywords, load this program: http://scheme.mine.nu/gambit/experimental/div/define-type-keywords.scm and run for example (gambit-define-type-keywords "/COMPILE/gambc-v4_2_6"). (Read it's sources to find out what it does ;).
(constant-constructor:
(not sure)
constructor:
Argument: the symbol (the name) of the constructor function
equality-skip: equality-test:
(not sure)
extender:
Argument: the symbol (the name) of the macro you want for extending this type.
id:
Argument: a symbol to identify the type (should have a random and long enough name). If omitted, the type is only valid during that particular program run and inside that program, i.e. you couldn't serialize data using object->u8vector and read it back in with u8vector->object. The philosophy is that the basename you're using for a type definition (the first argument to define-type) only serves as prefix for all the accessors, and not for identification of the type.
implementer: init:
(not sure)
macros:
No argument; if given, accessors are defined as macros instead of as procedures.
opaque:
(not sure)
predicate:
Argument: the name of the predicate.
prefix:
Argument: a prefix to be prepended.
printable:
Argument: none, if given, do not show the fields following this specification; can be given multiple times alternating with unprintable: iirc.
read-only: read-write:
Make the fields ro/rw I guess.
type-exhibitor:
(not sure)
unprintable:
See printable:
)
I've seen the id: keyword used a lot with UUIDs. What is it for?
There are several others I don't understand, but I guess I should not ask about them all here. :-)
(If you wanted to look at the Gambit sources, best start with the function which my function is scanning for keywords.)
Christian.