unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* There is no SCAN (introducing Compan)
@ 2016-09-18  7:38 Panicz Maciej Godek
  2016-09-18 14:17 ` Pascal J. Bourguignon
  2016-09-23 13:11 ` Amirouche Boubekki
  0 siblings, 2 replies; 4+ messages in thread
From: Panicz Maciej Godek @ 2016-09-18  7:38 UTC (permalink / raw)
  To: guile-user@gnu.org

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: There is no SCAN (introducing Compan)
  2016-09-18  7:38 There is no SCAN (introducing Compan) Panicz Maciej Godek
@ 2016-09-18 14:17 ` Pascal J. Bourguignon
  2016-09-18 18:41   ` Panicz Maciej Godek
  2016-09-23 13:11 ` Amirouche Boubekki
  1 sibling, 1 reply; 4+ messages in thread
From: Pascal J. Bourguignon @ 2016-09-18 14:17 UTC (permalink / raw)
  To: guile-user

Panicz Maciej Godek <godek.maciek@gmail.com> writes:

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

Unfortunately, it's specific to guile.

Wouldn't it be better to have a system that could be used to distribute
scheme libraries, including portable libraries and portability layers?

Granted, we may want to support r5rs, r6rs and r7rs libraries (perhaps
some libraries can run on all those versions; after all, most r4rs
libraries also ran on r5rs), in addition to the various common or main
scheme implementations.

I guess some basis for such a system could be quicklisp (
http://quicklisp.org https://github.com/quicklisp ), which would have to
be ported to scheme from Common Lisp (and yet, some parts such as
infrastructure quicklisp-dist or quicklisp-controller wouldn't have to
be translated, or only much later).


-- 
__Pascal Bourguignon__                 http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: There is no SCAN (introducing Compan)
  2016-09-18 14:17 ` Pascal J. Bourguignon
@ 2016-09-18 18:41   ` Panicz Maciej Godek
  0 siblings, 0 replies; 4+ messages in thread
From: Panicz Maciej Godek @ 2016-09-18 18:41 UTC (permalink / raw)
  To: Pascal J. Bourguignon; +Cc: guile-user@gnu.org

2016-09-18 16:17 GMT+02:00 Pascal J. Bourguignon <pjb@informatimago.com>:

> Panicz Maciej Godek <godek.maciek@gmail.com> writes:
>
> > Therefore, I wrote Compan, which is meant to be a "Community Package
> > Manager" for Guile.
>
> Unfortunately, it's specific to guile.
>
> I admit that I wrote that little module to solve my own problems -- I've
had various modules scattered around various repositories, and I was
dragging certain files from project to project, making slight modifications
between subsequent versions. It is not a part of "some greater idea", but I
believe that it somehow reflects the 'Zeitgeist du jour', so to speak.

Wouldn't it be better to have a system that could be used to distribute
> scheme libraries, including portable libraries and portability layers?
>
>
This surely sounds like a lot of work, but honestly I can't think of any
immediate benefit.

Granted, we may want to support r5rs, r6rs and r7rs libraries (perhaps
> some libraries can run on all those versions; after all, most r4rs
> libraries also ran on r5rs), in addition to the various common or main
> scheme implementations.
>
> I guess some basis for such a system could be quicklisp (
> http://quicklisp.org https://github.com/quicklisp ), which would have to
> be ported to scheme from Common Lisp (and yet, some parts such as
> infrastructure quicklisp-dist or quicklisp-controller wouldn't have to
> be translated, or only much later).


My impression is that the fundamental difference between Scheme and Common
Lisp is that Common Lisp tries to be practical before everything else,
while Scheme is essentially theoretical or conceptual or experimental.
Maybe R6RS was a leap towards practical systems, but I think that it's the
reason why the community resisted to accept it. Guile is also practical,
but in a different way: it is tightly integrated with C and UNIX.

I think that if there is any hope for a centralized repository with Scheme
modules, it would have to resemble wikipedia rather than CPAN -- the
modules would have to be "written for people to read, and only incidentally
for machines to execute".

Regards,
M.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: There is no SCAN (introducing Compan)
  2016-09-18  7:38 There is no SCAN (introducing Compan) Panicz Maciej Godek
  2016-09-18 14:17 ` Pascal J. Bourguignon
@ 2016-09-23 13:11 ` Amirouche Boubekki
  1 sibling, 0 replies; 4+ messages in thread
From: Amirouche Boubekki @ 2016-09-23 13:11 UTC (permalink / raw)
  To: Panicz Maciej Godek; +Cc: guile-user, guile-user

On 2016-09-18 09:38, Panicz Maciej Godek wrote:

[...]

> 
> 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

Interesting. Thanks for sharing.

-- 
Amirouche ~ amz3 ~ http://www.hyperdev.fr



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-09-23 13:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-18  7:38 There is no SCAN (introducing Compan) Panicz Maciej Godek
2016-09-18 14:17 ` Pascal J. Bourguignon
2016-09-18 18:41   ` Panicz Maciej Godek
2016-09-23 13:11 ` Amirouche Boubekki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).