This is the mail archive of the
guile@cygnus.com
mailing list for the Guile project.
Re: records
Jim Blandy <jimb@red-bean.com> writes:
> Mikael is better suited to answer your specific question than I am,
> but my understanding is that all of the existing record proposals can
> basically be implemented on top of GOOPS in one way or another, and
> thereby interoperate nicely.
Well, I suppose this means that I should say something.
If I've counted them correctly there currently seems to be four
record-like representations in(/with) Guile now:
1 structs
2 procedural record interface
3 GOOPS objects
4 slib structs
Q: Which is most "canonical"?
1 As I said previously, the structs will be replaced, so they are
not canonical.
4 There is currently no plan to support slib structs
But,
3 Even though there is the possibility that people finally realize
that a CLOS-style object system isn't The Right Way to go, there is
still enough people whose minds are CLOS-tuned to guarantee a long
life of GOOPS.
2 The procedural record interface will very probably also have a long
life because it is an essential part of SLIB and we have no reason
not to be compatible here. (When the new module system arrives we
will start a process of dividing Guile into modules. There will
then be some bindings which will be considered part of a core Guile
language, and other "lesser" bindings. There is no guarantee now
that the procedural record interface will be part of the *core*
language (which is supposed to spread to other implementations), but
you can be fairly certain that it will be supported also in the
future.)
So, while there is no really good "canonical" candidate yet, I suggest
that you use the procedural interface if you don't want to be
dependent on the, currently, separately distributed guile-oops
package, and use GOOPS otherwise. (GOOPS *is* stable. Do you think
Christian and I would write something unstable? Why would we want to
do anything like that? ;-)
Concerning the near future, my guess is that we'll end up in either of
two alternatives:
1 All record-like interfaces (SRFI-9, procedural interface, GOOPS)
based on a new common low-level representation.
2 As in 1, but GOOPS using its own low-level representation.
Of course, *if* GOOPS will be integrated into the core, new
alternatives will arrise.