> I am trying to understand the usage of module interfaces (i.e. > DEFINE-INTERFACE and (interface: INTERFACE-NAME) in export lists). At first > glance they seemed like a good thing--but having experimented a bit with > them, I'm not sure I really see the point. As far as I can tell, all that > interfaces do is provide a convenient way to enable or disable groups of > exported definitions at compile time (i.e., the time when the exporting > module is compiled). If so, it seems like a feature that adds significant > complexity in return for a very marginal benefit. But perhaps I'm missing > something? I would be interested to see an example of a practical > application for these interfaces.
The complexity is not what I'd call significant - just a straightforward (and non-exportable) naming of export lists. Actually, this is rather pathetic and could even be removed without too many people complaining. But if you write functors and lots of functor-instantiations, it can be convenient not to name each and every export at each instantiation. See also "tests/functor-tests.scm" in the git repository (or the source tarball): if the interface of "QUEUE" would be large, repeating it in every variant would become tiresome and error-prone. I hope this clears things up a bit. cheers, felix _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
