unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* Re: :export vs. define-public
  2002-09-05  0:41 :export vs. define-public Tom Lord
@ 2002-09-05  0:33 ` Thomas Bushnell, BSG
  2002-09-05  0:59   ` cvs access broken? Tom Lord
  2002-09-05  1:02   ` :export vs. define-public Tom Lord
  2002-09-05 16:25 ` Eric E Moore
  1 sibling, 2 replies; 12+ messages in thread
From: Thomas Bushnell, BSG @ 2002-09-05  0:33 UTC (permalink / raw)
  Cc: guile-devel

Tom Lord <lord@regexps.com> writes:

> Those two approaches (:export vs. define-public) to public v. private
> module contours are isomorphic, so what's the big deal?

There is no big deal.  What makes you think there is?  Only
define-public is documented.  :export is not, nor is the more local
(export ...) form that Marius recently mentioned.

> Historically, I suspect that some module system changes made after the
> Cygnus releases were motivated in part because they made the Guile
> module system look more like S48 or some other famous schemes.  And as
> we all know, those other systems reek of the scent of perfection (or
> at least, a perfection-style cologne).  But that's just speculation,
> on my part.  I'm aware that module system changes were originally
> argued (vaguely) for in terms of support for compilation.

I like perfection.  I have access to many many "just do it, screw
perfection" systems.  I'm tired of them.  



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* :export vs. define-public
@ 2002-09-05  0:41 Tom Lord
  2002-09-05  0:33 ` Thomas Bushnell, BSG
  2002-09-05 16:25 ` Eric E Moore
  0 siblings, 2 replies; 12+ messages in thread
From: Tom Lord @ 2002-09-05  0:41 UTC (permalink / raw)




Those two approaches (:export vs. define-public) to public v. private
module contours are isomorphic, so what's the big deal?

`define-public' supports "locality of editting": everything you need
to know about a definition is collected right there under your editor
cursor.  There's no need to remember to change some other part of the
file.

Extension languages should optimize for interactive use.  Thus,
locality of editting is an important consideration.

Historically, I suspect that some module system changes made after the
Cygnus releases were motivated in part because they made the Guile
module system look more like S48 or some other famous schemes.  And as
we all know, those other systems reek of the scent of perfection (or
at least, a perfection-style cologne).  But that's just speculation,
on my part.  I'm aware that module system changes were originally
argued (vaguely) for in terms of support for compilation.

mentioning-part-of-the-list-of-things-i-don't-like-about-guile-other
than-#f/()-but-that-might-be-usefully-rethought, 

-t




_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* Re: :export vs. define-public
  2002-09-05  1:02   ` :export vs. define-public Tom Lord
@ 2002-09-05  0:55     ` Thomas Bushnell, BSG
  2002-09-05  1:09       ` Tom Lord
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Bushnell, BSG @ 2002-09-05  0:55 UTC (permalink / raw)
  Cc: guile-devel

Tom Lord <lord@regexps.com> writes:

> 	>> Those two approaches (:export vs. define-public) to public v. private
> 	>> module contours are isomorphic, so what's the big deal?
> 
> 	> There is no big deal.  What makes you think there is?  
> 
> Well, somebody felt strongly enough about the issue to make the change
> from define-public to :export.   In 1.5.6, at least, code in `ice-9'
> uses :export.

define-public is still there too.



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* cvs access broken?
  2002-09-05  0:33 ` Thomas Bushnell, BSG
@ 2002-09-05  0:59   ` Tom Lord
  2002-09-05 18:01     ` Marius Vollmer
  2002-09-05  1:02   ` :export vs. define-public Tom Lord
  1 sibling, 1 reply; 12+ messages in thread
From: Tom Lord @ 2002-09-05  0:59 UTC (permalink / raw)



Following the instructions posted on savanah:

	  % cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/guile login
	  CVS password: anoncvs
	  cvs [login aborted]: authorization failed: server subversions.gnu.org rejected access


so....what's up?

-t


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* Re: :export vs. define-public
  2002-09-05  0:33 ` Thomas Bushnell, BSG
  2002-09-05  0:59   ` cvs access broken? Tom Lord
@ 2002-09-05  1:02   ` Tom Lord
  2002-09-05  0:55     ` Thomas Bushnell, BSG
  1 sibling, 1 reply; 12+ messages in thread
From: Tom Lord @ 2002-09-05  1:02 UTC (permalink / raw)




	>> Those two approaches (:export vs. define-public) to public v. private
	>> module contours are isomorphic, so what's the big deal?

	> There is no big deal.  What makes you think there is?  

Well, somebody felt strongly enough about the issue to make the change
from define-public to :export.   In 1.5.6, at least, code in `ice-9'
uses :export.

-t



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* Re: :export vs. define-public
  2002-09-05  0:55     ` Thomas Bushnell, BSG
@ 2002-09-05  1:09       ` Tom Lord
  2002-09-05  1:12         ` Thomas Bushnell, BSG
  0 siblings, 1 reply; 12+ messages in thread
From: Tom Lord @ 2002-09-05  1:09 UTC (permalink / raw)




       > define-public is still there too.


Having both seems like an invitation to subtle errors.

-t


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* Re: :export vs. define-public
  2002-09-05  1:09       ` Tom Lord
@ 2002-09-05  1:12         ` Thomas Bushnell, BSG
  2002-09-05  2:05           ` Tom Lord
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Bushnell, BSG @ 2002-09-05  1:12 UTC (permalink / raw)
  Cc: guile-devel

Tom Lord <lord@regexps.com> writes:

>        > define-public is still there too.
> 
> 
> Having both seems like an invitation to subtle errors.

Ah!  So after your plea that it's really irrelevant, it turns out that
you think only one should exist.  Seems like a mistake to me.  As you
rightly point out, they represent different styles of module design,
and there's no particular reason we should support only one.

The solution to subtle errors is bugfixing.  The semantics, at least,
are quite clear.


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* Re: :export vs. define-public
  2002-09-05  1:12         ` Thomas Bushnell, BSG
@ 2002-09-05  2:05           ` Tom Lord
  0 siblings, 0 replies; 12+ messages in thread
From: Tom Lord @ 2002-09-05  2:05 UTC (permalink / raw)
  Cc: tb



Oooo -- what a zinger.



-t


   Cc: guile-devel@gnu.org
   X-Reply-Permission: Posted or emailed replies to this message constitute
		    permission for an emailed response.
   X-PGP-Fingerprint: 1F0A1E51  63 28 EB DA E6 44 E5 5E  EC F3 04 26 4E BF 1A 92
   X-Zippy-Says: They don't hire PERSONAL PINHEADS, Mr. Toad!
   From: tb@becket.net (Thomas Bushnell, BSG)
   Date: 04 Sep 2002 18:12:32 -0700
   User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
   Content-Type: text/plain; charset=us-ascii
   X-UIDL: "fW!!D:O"!2?;"!RLC!!

   Tom Lord <lord@regexps.com> writes:

   >        > define-public is still there too.
   > 
   > 
   > Having both seems like an invitation to subtle errors.

   Ah!  So after your plea that it's really irrelevant, it turns out that
   you think only one should exist.  Seems like a mistake to me.  As you
   rightly point out, they represent different styles of module design,
   and there's no particular reason we should support only one.

   The solution to subtle errors is bugfixing.  The semantics, at least,
   are quite clear.




_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* Re: :export vs. define-public
  2002-09-05  0:41 :export vs. define-public Tom Lord
  2002-09-05  0:33 ` Thomas Bushnell, BSG
@ 2002-09-05 16:25 ` Eric E Moore
  2002-09-05 17:38   ` Rob Browning
  1 sibling, 1 reply; 12+ messages in thread
From: Eric E Moore @ 2002-09-05 16:25 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 685 bytes --]

Tom Lord <lord@regexps.com> writes:

> Those two approaches (:export vs. define-public) to public v. private
> module contours are isomorphic, so what's the big deal?

:export makes it considerably easier to port scheme code across
multiple implememntations, since the code to deal with the module
systems, which are regrettably non-standard, can be kept separate from
the R5RS code.  If scheme had an official module system, it might not
need :export.  'till guile has a good compiler, I'd like to see it
possible to port code easily.  (I suppose one could write a
define-public macro for schemes that lack one, but it's still nice to
have :export)

-- 
Eric E. Moore

[-- Attachment #2: Type: application/pgp-signature, Size: 184 bytes --]

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

* Re: :export vs. define-public
  2002-09-05 16:25 ` Eric E Moore
@ 2002-09-05 17:38   ` Rob Browning
  2002-09-05 17:54     ` Eric E Moore
  0 siblings, 1 reply; 12+ messages in thread
From: Rob Browning @ 2002-09-05 17:38 UTC (permalink / raw)
  Cc: guile-devel

Eric E Moore <e.e.moore@sheffield.ac.uk> writes:

> :export makes it considerably easier to port scheme code across
> multiple implememntations, since the code to deal with the module
> systems, which are regrettably non-standard, can be kept separate from
> the R5RS code.  If scheme had an official module system, it might not
> need :export.  'till guile has a good compiler, I'd like to see it
> possible to port code easily.  (I suppose one could write a
> define-public macro for schemes that lack one, but it's still nice to
> have :export)

Actually, I tend to like (export foo) better, but either way I agree,
:export and (export foo) make it possible to have a common source file
that you share between different scheme implementations.  The module
system specific bits can go in a stub file that loads the shared file,
or the sys-specific and shared files can be stuck together via cat at
build time.  While this isn't particularly important for me at the
moment, it has been handy in the past.

Another argument in favor of :export, and (export foo), depending on
how you use them, is that they can be used to centralize the
information about a given module's public exports.  That's something
I've found helpful in the past, but I'm sure which type of locality
you prefer depends on the person.

Personally, I have no problem with the availability of three different
export methods: (export foo), :export, and define-public, though I
actually prefer both (export foo) and :export over define-public since
they keep the module system bits independent of function definition,
and since I also prefer module "signature locality" to "locality of
editing" in this case.

FWIW I tend to use a set of (export foo) declarations at the top of
the file most of the time these days.  I believe (export foo) also
made code generation in g-wrap a little easier since I didn't have to
worry about placement as much, but that's not a big deal either.

-- 
Rob Browning
rlb @defaultvalue.org, @linuxdevel.com, and @debian.org
Previously @cs.utexas.edu
GPG=1C58 8B2C FB5E 3F64 EA5C  64AE 78FE E5FE F0CB A0AD


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

* Re: :export vs. define-public
  2002-09-05 17:38   ` Rob Browning
@ 2002-09-05 17:54     ` Eric E Moore
  0 siblings, 0 replies; 12+ messages in thread
From: Eric E Moore @ 2002-09-05 17:54 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 556 bytes --]

Rob Browning <rlb@defaultvalue.org> writes:

> Eric E Moore <e.e.moore@sheffield.ac.uk> writes:
> Actually, I tend to like (export foo) better, but either way I agree,
> :export and (export foo) make it possible to have a common source file
> that you share between different scheme implementations.  

I like (export foo) better too.  Just the original thread was
:export vs define-public.  Since :export and (export) serve similar
purposes, I'd be happy to see one of the two go, but would like to see
at least one kept.

-- 
Eric E. Moore

[-- Attachment #2: Type: application/pgp-signature, Size: 184 bytes --]

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

* Re: cvs access broken?
  2002-09-05  0:59   ` cvs access broken? Tom Lord
@ 2002-09-05 18:01     ` Marius Vollmer
  0 siblings, 0 replies; 12+ messages in thread
From: Marius Vollmer @ 2002-09-05 18:01 UTC (permalink / raw)
  Cc: guile-devel

Tom Lord <lord@regexps.com> writes:

> Following the instructions posted on savanah:
> 
> 	  % cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/guile login
> 	  CVS password: anoncvs
> 	  cvs [login aborted]: authorization failed: server subversions.gnu.org rejected access
> 
> 
> so....what's up?

You need to supply the empty password.

-- 
GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3  331E FAF8 226A D5D4 E405


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


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

end of thread, other threads:[~2002-09-05 18:01 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-09-05  0:41 :export vs. define-public Tom Lord
2002-09-05  0:33 ` Thomas Bushnell, BSG
2002-09-05  0:59   ` cvs access broken? Tom Lord
2002-09-05 18:01     ` Marius Vollmer
2002-09-05  1:02   ` :export vs. define-public Tom Lord
2002-09-05  0:55     ` Thomas Bushnell, BSG
2002-09-05  1:09       ` Tom Lord
2002-09-05  1:12         ` Thomas Bushnell, BSG
2002-09-05  2:05           ` Tom Lord
2002-09-05 16:25 ` Eric E Moore
2002-09-05 17:38   ` Rob Browning
2002-09-05 17:54     ` Eric E Moore

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