Probably everybody's heard about the Comprehensive Perl Archive Network, or
CPAN. From the pragmatic standpoint, it seems to be adding a lot of value
to the programming system, because it allows to avoid reinventing the
wheel, and many popular programming systems manage to develop their
counterparts of CPAN.

However, it seems that while there are similar repositories around some
Scheme implementations (e.g. Chicken), and there have been some attempts to
inceive that idea to Guile (vide guildhall) and to Scheme in general (vide
Scheme NOW, or SNOW), they didn't seem to succeed -- such thing as Scheme
Comprehensive Archive Network doesn't exist.

My guess is that the reason for that is that the Scheme culture and the
Scheme programmers often focus on understanding, and they often prefer to
create their own libraries (or even language implementations) rather than
re-use existing ones. Therefore the idea of a centralized repository
doesn't go well with Scheme, just as the idea of a "single/main
implementation" fails to work.

However, presently there's plenty of decentralized repositories and their
servers available on the Internet, like Github or Bitbucket, and chances
are that many people keep their modules there (I do).

Therefore, I wrote Compan, which is meant to be a "Community Package
Manager" for Guile.

In short, it allows to load modules from remote repositories. Once you
(use-modules (compan)), provided that all the prerequisites are satisfied,
you can use the "load-modules" macro, that clones the desired repository,
adjusts load paths and imports the appropriate modules -- for example:

(load-modules ("https://bitbucket.org/panicz/dogma"; (lib)))

The (compan) module is around 100 lines of Guile code (GPL3) that can be
found here:
https://github.com/panicz/compan

(but I'd love to see a similar functionality present in the Guile's core
module system one day)

Happy hacking,
Panicz

Reply via email to