unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* First look at Guile Std Library available
@ 2004-01-02  5:21 Richard Todd
  2004-01-02  9:29 ` Dale Mellor
                   ` (2 more replies)
  0 siblings, 3 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-02  5:21 UTC (permalink / raw)



[-- Attachment #1.1: Type: text/plain, Size: 2758 bytes --]

I haven't heard back about my savannah project yet (probably a
combination of the security work and the holidays), but I don't want
to do too much more work without some feedback.  So I've put the work
I've done so far on my website.

http://www.vzavenue.net/~rwtodd5128/index.html

There's enough there now that you can get a sense of what I'm wanting
to do (and the rather large amount of work left to do).  Now would be
the best possible time to get your input in and help make this project
as useful to the guile community as possible.

The .info file has almost all the modules documented, and there is
passable coverage in the unit tests.  You should be able to 'make
check' before you 'make install' to run the unit tests.  

Modules currently in the project, about 1/2 lifted from other sources,
about 1/2 I wrote over the last couple weeks:

* container queue::             Queues, Stacks, and Deques
* logging logger::              Logging mechanism
* logging port-log::            A log handler that outputs to ports
* logging rotating-log::        A log handler for rotating text file logs
* math minima::                 Finding minimum values of functions
* math primes::                 Functions dealing with prime numbers
* os process::                  Manipulating and creating process chains
* search basic::                Classic searching algorithms
* string completion::           Facilities for things like TAB-completion
* string soundex::              Soundex Algorithm
* string transform::            Transformations of strings
* string wrap::                 String wrapping and filling functions
* term ansi-color::             Colors text with ANSI sequences

(not documented yet)
* unit-test guileUnit           Unit test framework

...plus a couple more that aren't quite there yet 

There are plenty of things to fill in, and help would be appreciated.  If you have
a few hours one weekend, pull out your 'numerical recipes' book and make a scheme
version of some algorithms.  Every time someone does this and contributes it to the
library, the entire guile community gets more efficient.

Larger Things I'm working on/investigating now:------------------------------
* List Comprehensions, porting from Swindle Scheme library (having trouble
  due to implementation differences)

* Regexps that can work on ports.  This is needed to do things like work across
  a buffer-gap.  (is there anything else this would be useful for?? oh
  well, it's needed)

* Lexer Generator -- need this to complement (parse lalr), which I have yet to put into the 
  library either.  Bigloo seems to have a nice one that I may be able to port

Richard Todd
richardt at vzavenue dot net

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-02  5:21 First look at Guile Std Library available Richard Todd
@ 2004-01-02  9:29 ` Dale Mellor
  2004-01-03  1:03   ` Richard Todd
  2004-01-03 16:38 ` Thien-Thi Nguyen
  2004-01-04 20:34 ` Arno Peters
  2 siblings, 1 reply; 60+ messages in thread
From: Dale Mellor @ 2004-01-02  9:29 UTC (permalink / raw)


>>>>> "Richard" == Richard Todd <richardt@vzavenue.net> writes:

    Richard> Modules currently in the project, about 1/2 lifted from other
    Richard> sources, about 1/2 I wrote over the last couple weeks:

    Richard> * container queue:: Queues, Stacks, and Deques * logging logger::
    Richard> Logging mechanism * logging port-log:: A log handler that outputs
    Richard> to ports * logging rotating-log:: A log handler for rotating text
    Richard> file logs * math minima:: Finding minimum values of functions *
    Richard> math primes:: Functions dealing with prime numbers * os process::
    Richard> Manipulating and creating process chains * search basic:: Classic
    Richard> searching algorithms * string completion:: Facilities for things
    Richard> like TAB-completion * string soundex:: Soundex Algorithm * string
    Richard> transform:: Transformations of strings * string wrap:: String
    Richard> wrapping and filling functions * term ansi-color:: Colors text with
    Richard> ANSI sequences


   This is just a knee-jerk reaction I got on reading the e-mail, but without
looking into your work in any detail, and is probably more useful as a talking
point amongst the Guile community than a direct comment.

    The collection of modules seems to be something of a hodge-podge of utility
libraries (just because PERL and Python do it this way doesn't mean we have to),
and overlaps with other stuff we already have (notably ice-9 and slib). I think
that we should move towards developing some 'standard' libraries as separate,
community-managed projects.

- a low-level wrapper around libc (simple procedure definitions which reflect
    those in libc, much of which is already in ice-9, and a lot of the rest is
    hardwired in Guile anyway - it just needs documenting in one place)

- a library which provides UNIX functionality presented in a lispish programming
    paradigm (this should be Guile's workhorse UNIX interface, and is
    essentially a wrapper around the above library). Maybe add in here such
    things as string completion, ANSI colours, soundex...

- a library of lispish containers, iterators and algorithms (akin to the C++
    STL; much of which is slib)

- a library of mathematical algorithms (akin to the good ol' NAG routines; these
    will probably be better written in C and exposed to Guile through a thin
    wrapper)

                                   My two cents for the day,
                                                Dale

http://rdmp.org:20202
---------------------------------------------------------------------
Despite the brusque/curmudgeonly/terse nature of my e-mails I am
really a nice guy and wish you well.


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


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

* Re: First look at Guile Std Library available
  2004-01-02  9:29 ` Dale Mellor
@ 2004-01-03  1:03   ` Richard Todd
  2004-01-03  2:25     ` Andreas Rottmann
  2004-01-03 14:36     ` Dale Mellor
  0 siblings, 2 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-03  1:03 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 3785 bytes --]

Thanks for the comments--I'll try to elaborate on my goals here,
although that may make you even more sure that I'm going in the wrong
direction! :) Please let me know.


On Fri, Jan 02, 2004 at 10:29:29AM +0100, Dale Mellor wrote:
>     The collection of modules seems to be something of a hodge-podge of utility
> libraries (just because PERL and Python do it this way doesn't mean we have to),
> and overlaps with other stuff we already have (notably ice-9 and slib). I think
> that we should move towards developing some 'standard' libraries as separate,
> community-managed projects.

I'm open to all suggestions on ways we can improve on the perl/python
approach.  (Note that other scheme implementations have libs like
this, also).  I've started there because:
  1) It is an existing, successful, and popular approach
  2) I can leverage the design of their modules to get farther, faster
  3) Guile currently doesn't have _any_ approach, as far as I can tell

As for the overlap, one of the problems I'm trying to address is that
ice-9 and SLIB are hodge-podges themselves, in my view.  SLIB overlaps
guile-core and ice-9, and doesn't use guile's native module system
either.  I want to incorporate a lot of both of them (several of the
parts I have so far are in fact derived from SLIB), but put them in a
framework of modules that are cohesive and documented.  I want to
produce _the_ basic set of guile modules, that allow development to
start with a largish base of stable, documented functionality
supporting it.

The hodge-podginess of what I've put out there so far is readily
apparent because it's so preliminary--there's just not much there yet.
Of course, you might be saying that once we've filled it out that it'll
just be a much more comprehensive hodge-podge :)


> - a low-level wrapper around libc (simple procedure definitions which reflect
>     those in libc, much of which is already in ice-9, and a lot of the rest is
>     hardwired in Guile anyway - it just needs documenting in one place)

Although it's a topic for much later, I don't think that all that
stuff _should_ be hard-wired in guile itself.  And even when it's not,
a single flat (ice-9 xxx) namespace for modules leaves something to be
desired (though my C++/Perl/Python/etc background my be shaping an
opinion other guile folks don't share..let me know).  Then, as you
say, there's that pesky documentation issue.



> - a library which provides UNIX functionality presented in a lispish programming
>     paradigm (this should be Guile's workhorse UNIX interface, and is
>     essentially a wrapper around the above library). Maybe add in here such
>     things as string completion, ANSI colours, soundex...

Do you have any further ideas on what this would look like?  Does it
already exist somewhere?



> - a library of lispish containers, iterators and algorithms (akin to the C++
>     STL; much of which is slib)
> - a library of mathematical algorithms (akin to the good ol' NAG routines; these
>     will probably be better written in C and exposed to Guile through a thin
>     wrapper)

I have places (container xxxx), (math xxxx) in my hierarchy waiting
to be filled in with these.

In addition to the list you gave, I think things like the ability to
parse/manipulate stadard data formats (emails, PNG files, AU files,
MID files, etc) would be a good fit.  I also would like to see a
database interface get in, which allows for plugins to various DB
products.  Yes, perl did that already (so did bigloo), but I don't see
why that makes it wrong for guile.  Missing modules of this type are
what keep pulling me away from guile when it comes time to do 'real'
work.  I can only marvel at tail-recursion and closures for so
long... :)


Richard Todd
richardt at vzavenue dot net

[-- Attachment #1.2: Type: application/pgp-signature, Size: 189 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-03  1:03   ` Richard Todd
@ 2004-01-03  2:25     ` Andreas Rottmann
  2004-01-03 15:00       ` Dale Mellor
  2004-01-03 14:36     ` Dale Mellor
  1 sibling, 1 reply; 60+ messages in thread
From: Andreas Rottmann @ 2004-01-03  2:25 UTC (permalink / raw)
  Cc: guile-user

Richard Todd <richardt@vzavenue.net> writes:

> I have places (container xxxx), (math xxxx) in my hierarchy waiting
> to be filled in with these.
>
> In addition to the list you gave, I think things like the ability to
> parse/manipulate stadard data formats (emails, PNG files, AU files,
> MID files, etc) would be a good fit.  I also would like to see a
> database interface get in, which allows for plugins to various DB
> products.  
>
I have a preliminary libgda binding in my archive (see [0], module
guile-gtk--rotty--0.1) which (or rather does libgda) fullfills the
above predicate.

[0] http://stud3.tuwien.ac.at/~e9926584/Software.html#gnuarch

> Yes, perl did that already (so did bigloo), but I don't see
> why that makes it wrong for guile.  Missing modules of this type are
> what keep pulling me away from guile when it comes time to do 'real'
> work.  I can only marvel at tail-recursion and closures for so
> long... :)
>
I can also agree that a comprehensive library, diverse in functionalty
is something that guile misses. At least for the GObject[1] based APIs
(which include most of GNOME), it's really little effort to initiate a
binding with guile-gobject[2], so given a little more documentation to
lower the entry barrier, it may be feasible to get good GNOME API
coverage.

[1] http://developer.gnome.org/doc/API/2.0/gobject/index.html
[2] http://www.gnu.org/software/guile-gtk/docs/guile-gobject/

Cheers, Andy

DISCLAMER: This mail was written late and under the influence of alcohol
and other substances such as nicotine and tar.
-- 
Andreas Rottmann         | Rotty@ICQ      | 118634484@ICQ | a.rottmann@gmx.at
http://yi.org/rotty      | GnuPG Key: http://yi.org/rotty/gpg.asc
Fingerprint              | DFB4 4EB4 78A4 5EEE 6219  F228 F92F CFC5 01FD 5B62

Latein ist das humanoide Äquivalent zu Fortran.
   -- Alexander Bartolich in at.linux


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


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

* Re: First look at Guile Std Library available
  2004-01-03  1:03   ` Richard Todd
  2004-01-03  2:25     ` Andreas Rottmann
@ 2004-01-03 14:36     ` Dale Mellor
  2004-01-03 22:42       ` Richard Todd
  1 sibling, 1 reply; 60+ messages in thread
From: Dale Mellor @ 2004-01-03 14:36 UTC (permalink / raw)
  Cc: guile-user

>>>>> "RT" == Richard Todd <richardt@vzavenue.net> writes:

    RT> On Fri, Jan 02, 2004 at 10:29:29AM +0100, Dale Mellor wrote:

    >> The collection of modules seems to be something of a hodge-podge of
    >> utility libraries (just because PERL and Python do it this way doesn't
    >> mean we have to), and overlaps with other stuff we already have (notably
    >> ice-9 and slib). I think that we should move towards developing some
    >> 'standard' libraries as separate, community-managed projects.

    RT> I'm open to all suggestions on ways we can improve on the perl/python
    RT> approach.  (Note that other scheme implementations have libs like this,
    RT> also).  I've started there because: 1) It is an existing, successful,
    RT> and popular approach 2) I can leverage the design of their modules to
    RT> get farther, faster 3) Guile currently doesn't have _any_ approach, as
    RT> far as I can tell

    That's all good. I guess I was arguing that Guile should have an
approach, and as that's what you're creating, I'm all in favour.


    RT> As for the overlap, one of the problems I'm trying to address is that
    RT> ice-9 and SLIB are hodge-podges themselves, in my view.  SLIB overlaps
    RT> guile-core and ice-9, and doesn't use guile's native module system
    RT> either.  I want to incorporate a lot of both of them (several of the
    RT> parts I have so far are in fact derived from SLIB), but put them in a
    RT> framework of modules that are cohesive and documented.  I want to
    RT> produce _the_ basic set of guile modules, that allow development to
    RT> start with a largish base of stable, documented functionality supporting
    RT> it.

    RT> The hodge-podginess of what I've put out there so far is readily
    RT> apparent because it's so preliminary--there's just not much there yet.
    RT> Of course, you might be saying that once we've filled it out that it'll
    RT> just be a much more comprehensive hodge-podge :)

    Point taken.


    >> - a low-level wrapper around libc (simple procedure definitions which
    >> reflect those in libc, much of which is already in ice-9, and a lot of
    >> the rest is hardwired in Guile anyway - it just needs documenting in one
    >> place)

    RT> Although it's a topic for much later, I don't think that all that stuff
    RT> _should_ be hard-wired in guile itself.  And even when it's not, a
    RT> single flat (ice-9 xxx) namespace for modules leaves something to be
    RT> desired (though my C++/Perl/Python/etc background my be shaping an
    RT> opinion other guile folks don't share..let me know).  Then, as you say,
    RT> there's that pesky documentation issue.

    We agree there.


    >> - a library which provides UNIX functionality presented in a lispish
    >> programming paradigm (this should be Guile's workhorse UNIX interface,
    >> and is essentially a wrapper around the above library). Maybe add in here
    >> such things as string completion, ANSI colours, soundex...

    RT> Do you have any further ideas on what this would look like?  Does it
    RT> already exist somewhere?

    Some examples off the top of my head (I'm in knee-jerk mode again ;-) ):

    In the low-level library may be functions like (fork), (exec string). In
a higher lispish library we might have (fork-with-pipe parent-proc
child-proc), where parent-proc and child-proc are procedures which take no
arguments and have their inputs and outputs set to talk to each other down a
pipe or socket. Another one might be (fork-child parent-proc child-proc)
where parent-proc is a procedure which takes one argument and this is passed
the PID of the child, and child-proc is a procedure of no arguments (or
maybe one which gets the PID of the parent). As far as I know it does not
already exist, it just occurs to me that whenever I use Guile's
(primitive-fork) and such like, I find myself forced into a more procedural
programming paradigm, with lots of (let ..)'s and (set! ..)'s. On the other
hand, imagine a world where a web server can spawn child helpers when the
load gets high just by recursion... Maybe the threads stuff could also get a
similar interface, thus abstracting the whole concept of sub-jobs.

   Another example is logging. The low-level library should contain (openlog
..)  (syslog ..) and (closelog ..), but a higher-level library should
provide in addition something like (with-output-to-syslog facility priority
proc).

   I guess in the long run we need an approach which allows people to
contribute facilities like these as they become needed, rather than trying
to design the whole high-level library up front. For my part, I am in need
of a syslog interface for my mcron project, and if I write it like I
mentioned above, I'll let you have the source so you can decide whether or
not you want to incorporate it into your library (I still haven't got round
to actually looking at your own efforts, yet).


    >> - a library of lispish containers, iterators and algorithms (akin to the
    >> C++ STL; much of which is slib) - a library of mathematical algorithms
    >> (akin to the good ol' NAG routines; these will probably be better written
    >> in C and exposed to Guile through a thin wrapper)

    RT> I have places (container xxxx), (math xxxx) in my hierarchy waiting to
    RT> be filled in with these.

    RT> In addition to the list you gave, I think things like the ability to
    RT> parse/manipulate stadard data formats (emails, PNG files, AU files, MID
    RT> files, etc) would be a good fit.  I also would like to see a database
    RT> interface get in, which allows for plugins to various DB products.  Yes,
    RT> perl did that already (so did bigloo), but I don't see why that makes it
    RT> wrong for guile.  Missing modules of this type are what keep pulling me
    RT> away from guile when it comes time to do 'real' work.  I can only marvel
    RT> at tail-recursion and closures for so long... :)

    I was not arguing against Perl or Python's approach, just making the
point that we don't have to be constrained by it. I am in agreement with all
you say above. Keep up the good work and hopefully the community will pull
together behind you on this.


    Reading the above passage gave me another knee-jerk reaction,
though. Rather than calling your modules (container xxxx) and (math xxxx), I
think I would prefer (std container xxxx) and (std math xxxx).


                                             Dale

http://rdmp.org:20202
---------------------------------------------------------------------
Despite the brusque/curmudgeonly/terse nature of my e-mails I am
really a nice guy and wish you well.


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


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

* Re: First look at Guile Std Library available
  2004-01-03  2:25     ` Andreas Rottmann
@ 2004-01-03 15:00       ` Dale Mellor
  0 siblings, 0 replies; 60+ messages in thread
From: Dale Mellor @ 2004-01-03 15:00 UTC (permalink / raw)
  Cc: guile-user

>>>>> "Andreas" == Andreas Rottmann <a.rottmann@gmx.at> writes:

    Andreas> I can also agree that a comprehensive library, diverse in
    Andreas> functionalty is something that guile misses. At least for the
    Andreas> GObject[1] based APIs (which include most of GNOME), it's really
    Andreas> little effort to initiate a binding with guile-gobject[2], so given
    Andreas> a little more documentation to lower the entry barrier, it may be
    Andreas> feasible to get good GNOME API coverage.

   Okay, I'm out-voted - go for the monolith.


                                                       Dale

DISCLAIMER: This mail was written early in the morning and under the influence
of bacon and other substances such as Shreddies and milk.


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


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

* Re: First look at Guile Std Library available
  2004-01-02  5:21 First look at Guile Std Library available Richard Todd
  2004-01-02  9:29 ` Dale Mellor
@ 2004-01-03 16:38 ` Thien-Thi Nguyen
  2004-01-03 16:48   ` Nic Ferrier
                     ` (2 more replies)
  2004-01-04 20:34 ` Arno Peters
  2 siblings, 3 replies; 60+ messages in thread
From: Thien-Thi Nguyen @ 2004-01-03 16:38 UTC (permalink / raw)
  Cc: guile-user

   From: Richard Todd <richardt@vzavenue.net>
   Date: Thu, 1 Jan 2004 23:21:28 -0600

   Every time someone does this and contributes it to the
   library, the entire guile community gets more efficient.

this is debatable.  a numerical recipe derived from slib (for example)
has potential to suffer bit-rot when slib is enhanced.  i see that slib
now has a module system of sorts; maybe you could codify the derivation
methodology (steps to translate code from "slib module" format to "guile
module" format) so that it could be applied to each slib release, to
reduce your project's maintenance burden.

thi


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


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

* Re: First look at Guile Std Library available
  2004-01-03 16:38 ` Thien-Thi Nguyen
@ 2004-01-03 16:48   ` Nic Ferrier
  2004-01-03 22:18     ` Richard Todd
  2004-01-03 18:19   ` Clinton Ebadi
  2004-01-03 22:52   ` Richard Todd
  2 siblings, 1 reply; 60+ messages in thread
From: Nic Ferrier @ 2004-01-03 16:48 UTC (permalink / raw)
  Cc: guile-user

Or, you could just contribute your code to slib.


-- 
Nic Ferrier
http://www.tapsellferrier.co.uk



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


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

* Re: First look at Guile Std Library available
  2004-01-03 16:38 ` Thien-Thi Nguyen
  2004-01-03 16:48   ` Nic Ferrier
@ 2004-01-03 18:19   ` Clinton Ebadi
  2004-01-03 20:12     ` Thien-Thi Nguyen
  2004-01-04  2:02     ` Richard Todd
  2004-01-03 22:52   ` Richard Todd
  2 siblings, 2 replies; 60+ messages in thread
From: Clinton Ebadi @ 2004-01-03 18:19 UTC (permalink / raw)
  Cc: guile-user

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Saturday 03 January 2004 11:38, Thien-Thi Nguyen wrote:
>    From: Richard Todd <richardt@vzavenue.net>
>    Date: Thu, 1 Jan 2004 23:21:28 -0600
>
>    Every time someone does this and contributes it to the
>    library, the entire guile community gets more efficient.
>
> this is debatable.  a numerical recipe derived from slib (for example)
> has potential to suffer bit-rot when slib is enhanced.  i see that slib
> now has a module system of sorts; maybe you could codify the derivation
> methodology (steps to translate code from "slib module" format to "guile
> module" format) so that it could be applied to each slib release, to
> reduce your project's maintenance burden.

Grep the slib sources for all instances of "provide" and then generate a new 
file "std/slib/symbol-that-is-provided.scm" that does a (use-modules (ice-9 
slib)), does a (require 'symbol-that-is-provided) and then exports all the 
symbols in the current model to the outside world 

(set-module-uses! %module-public-interface
                  (list (nested-ref the-root-module '(app modules std slib 
symbol-that-is-provided))))

Then rewrite the doc schmooz stuff to generate the portions of the manual you 
need.
- -- 
http://unknownlamer.org
AIM:unknownlamer IRC:unknown_lamer@freenode#hprog
I use Free Software because I value freedom over features.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQE/9wfNdgGh8PQDV0sRAocfAKDOb4EhcNEZi+uDnpREKSGJ4r0mhACdFYTb
B/CbjV277ftTwj3yojM9DVs=
=g1EZ
-----END PGP SIGNATURE-----


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


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

* Re: First look at Guile Std Library available
  2004-01-03 18:19   ` Clinton Ebadi
@ 2004-01-03 20:12     ` Thien-Thi Nguyen
  2004-01-04  2:02     ` Richard Todd
  1 sibling, 0 replies; 60+ messages in thread
From: Thien-Thi Nguyen @ 2004-01-03 20:12 UTC (permalink / raw)
  Cc: guile-user

   From: Clinton Ebadi <clinton@unknownlamer.org>
   Date: Sat, 3 Jan 2004 13:19:49 -0500

   Grep the slib sources for all instances of "provide" [...]

have you actually tried this?

regardless, slib has other reflective capabilities nowadays anyway.

thi


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


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

* Re: First look at Guile Std Library available
  2004-01-03 16:48   ` Nic Ferrier
@ 2004-01-03 22:18     ` Richard Todd
  2004-01-04  1:49       ` Thien-Thi Nguyen
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Todd @ 2004-01-03 22:18 UTC (permalink / raw)
  Cc: guile-user, ttn


[-- Attachment #1.1: Type: text/plain, Size: 2586 bytes --]

On Sat, Jan 03, 2004 at 04:48:40PM +0000, Nic Ferrier wrote:
> Or, you could just contribute your code to slib.
> 

(sorry for the long-winded respose..I kind of get carried away.  I
don't think your suggestion is a bad one--it needs more consideration,
and I look forward to hearing other opinions on this matter)

That said, my thought process went like this:

The SLIB suggestion could apply to any other scheme implementation,
and yet other schemes all have libraries of their own.  I wonder why
no one has suggested that I just contribute it all to ice-9?  I would
give much the same response:

I read somewhere (have no idea if it's true, but still..) that, years
back, sales of books in America skyrocketed.  Not because the books
were better.  Not because more people were literate.  But because book
publishers paid house builders to build bookcases into new homes.  Now
people had all these bookshelves and needed to fill them!

That's what I'm trying to do for guile.  I (with some help, I hope!)
am building a large hierarchy that's calling out to be filled in.
It's built from the start to be huge.  Furthermore, it's not some
bridge to a generic library with some single-namespace'd 'require'
mechanism...it's written in guile, for guile users.  Just as people
don't buy books to fill other people's bookshelves, it seems to me
that people aren't writing much guile code to enhance SLIB.  I hope
they will want to get new code into a guile standard library.
Especially if it is organized and documented.

My hope is this helps validate guile as a powerful tool and not a toy.

This is gonna sound harsh, but if a new guile user wants to write an
extension to some program that sends emails, what do they do?  They
can search guile's core and find they can build their own smtp/rfc2822
system on top of tcp/ip.  No, thonks.  They can look through ICE-9
(once they figure out that this thing called 'ice-9' is guile's
library of modules, which isn't immediately obvious--trust me) and
come up short.  They can click on the dead links to version 0.3a of
this-and-that on the projects list (can this not be cleaned out?).  If
they persevere, they will eventually find some email stuff in
ttn-pers-scheme.  Who can tell their boss with conviction that they
need to build important systems tied together with ttn's personal
scheme library?

The basis for this project is that it should just be:
(use-modules (net email sendmail))
...or they are probably heading straight back to perl.

Richard Todd
richardt at vzavenue dot net

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-03 14:36     ` Dale Mellor
@ 2004-01-03 22:42       ` Richard Todd
  0 siblings, 0 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-03 22:42 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 2154 bytes --]

On Sat, Jan 03, 2004 at 03:36:08PM +0100, Dale Mellor wrote:
>     RT> Do you have any further ideas on what this would look like?  Does it
>     RT> already exist somewhere?
> 
>     Some examples off the top of my head (I'm in knee-jerk mode again ;-) ):

<<snip stuff about high-level interface to fork-exec>>

With Gary Houston's blessing, I've incorporated the Goosh module as
(os process). that allows for syntax like

(tail-call-pipeline ("ls" "/etc") ("grep" "passwd"))

ond other higher-level fork-type constructs.  Its quite possible that
more of your ideas like this can be incorporated between now and the
first release in June.  Unifying this with threads (at least to the
point where similar operations have similar interfaces) sounds like a
very good idea indeed.

 >  Another example is logging. The low-level library should contain
 > (openlog  ..)  (syslog ..) and (closelog ..), but a higher-level
 > library should provide in addition something like
 > (with-output-to-syslog facility priority proc).

In my development branch I'm already working on nearly exactly that!
Something like (with-output-to-log "main" 'CRITICAL (lambda () ...)).
So we are definitely on the same wavelength here.  I had not previously
given much thought to separating out the low level and high level
interfaces.  They might have both ended up in (logging logger).  I'll
give some more thought to how I can do this.

 > Reading the above passage gave me another knee-jerk reaction,
 > though. Rather than calling your modules (container xxxx) and 
 > (math xxxx), I think I would prefer (std container xxxx) and 
 > (std math xxxx).

Whenever I finally get a listing on savannah, this was going to be the
first question I posed to the guile-library mailing list.  I keep
changing my mind about what would be best.  I could forsee in a few
years needing to reorganize the modules once we get to a certain size,
and jumping to (std2 xxx) would be a nice way to split with the past.
Of course doing this mare than once or twice a decade would make
things quite messy...

Richard Todd
richardt at vzavenue dot net

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-03 16:38 ` Thien-Thi Nguyen
  2004-01-03 16:48   ` Nic Ferrier
  2004-01-03 18:19   ` Clinton Ebadi
@ 2004-01-03 22:52   ` Richard Todd
  2004-01-04  1:53     ` Thien-Thi Nguyen
  2 siblings, 1 reply; 60+ messages in thread
From: Richard Todd @ 2004-01-03 22:52 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 1771 bytes --]

On Sat, Jan 03, 2004 at 05:38:28PM +0100, Thien-Thi Nguyen wrote:
>    From: Richard Todd <richardt@vzavenue.net>
>    Date: Thu, 1 Jan 2004 23:21:28 -0600
> 
>    Every time someone does this and contributes it to the
>    library, the entire guile community gets more efficient.
> 
> this is debatable.  a numerical recipe derived from slib (for example)
> has potential to suffer bit-rot when slib is enhanced.  i see that slib
> now has a module system of sorts; maybe you could codify the derivation
> methodology (steps to translate code from "slib module" format to "guile
> module" format) so that it could be applied to each slib release, to
> reduce your project's maintenance burden.

Yes, there will be maintenance to do when significant changes to the
source material appear.  I don't have a really good answer for that
problem, since anything but copying and (slightly) modifying their
sources conflics with the other goals I have for the project.

What I have done, is start a mapping between the project modules and
their SLIB sources.  I'm not sure, but if I re-sync with SLIB once a
year or so, that doesn't seem like too much of a maintenance headache.
I may feel differently the first time I actually have to *do* it!

For the stuff already written for guile that gets pulled in, I hope
the maintainers will either maintain their modules as part of the
standard lib, or actively help push their changes into the library at
their major updates.

This topic is definitely still up for debate.. I have pulled in some
SLIB sources as examples of what it would look like, but I have no
problem completely changing direction on that issue if guile users
think it would be best.

Richard Todd
richardt at vzavenue dot net

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-03 22:18     ` Richard Todd
@ 2004-01-04  1:49       ` Thien-Thi Nguyen
  2004-01-04  3:50         ` Richard Todd
  0 siblings, 1 reply; 60+ messages in thread
From: Thien-Thi Nguyen @ 2004-01-04  1:49 UTC (permalink / raw)


   From: Richard Todd <richardt@vzavenue.net>
   Date: Sat, 3 Jan 2004 16:18:57 -0600

   I wonder why
   no one has suggested that I just contribute it all to ice-9?

probably because the most important thing about a project where you plan
to harvest contributions from fellow programmers is its methodology and
how comfortably that sits w/ those programmers.  next-most important is
the structure and vision of your project (x and dx, respectively, if you
consider methodology the dx2).  ice-9 has no dx and guile maintenance
behavior demonstrates little to encourage dx2, so the end result is x
remains static (or circles the drain slowly, depending on your poetic
mood :-).  for this reason i don't suggest you to direct energy towards
ice-9, but others may have their own reasons.

   [...] a large hierarchy that's
   calling out to be filled in.  It's built from the start to be huge.
   Furthermore, it's not some bridge to a generic library with some
   single-namespace'd 'require' mechanism...it's written in guile, for
   guile users.

i like the idea of providing a framework, but caution you against
getting stuck on the implementation details.  for slib (for example), if
the bridging is as easy as another poster has intimated, why preclude
that from your plans?  the bridge is still guile scheme (it has to be),
and the beneficiaries are still guile users (who are all programmers,
btw, and presumably appreciative of the value of not relying on possibly
out-of-date bits of rewritten slib).  IMHO, the interesting problem to
be solved in this case is not in the code per se, but in its management.

btw, i consider "generic library" high (and deserved) praise for slib.

   Just as people don't buy books to fill other people's
   bookshelves, it seems to me that people aren't writing much guile
   code to enhance SLIB.

hmmm, i'm stretching my brain to understand this sentence... ok.

   I hope they will want to get new code into a
   guile standard library.  Especially if it is organized and
   documented.

if you write the docs first (taking the definition of an "interface" to
include proc signatures, docs, error behavior, etc.), it will be easy
for people to see if the code they may have sitting around already fits
into the organization, and if not, to write or adapt it so that it does.

   Who can tell their boss with conviction that they
   need to build important systems tied together with ttn's personal
   scheme library?

well, ttn can, to his boss...

excuse this smarmy blurb, it's for the ignorant: ttn-pers-scheme is
released under the GNU GPL, which stipulates for its users certain
freedoms related to its source code.  germaine to this discussion is the
freedom to locally modify the source for whatever reason necessary, even
for "internal marketing/sales" purposes such as...

   The basis for this project is that it should just be:
   (use-modules (net email sendmail))

... something like:

(define-module (net email sendmail)
  #:use-module (ttn parse-rfc822)            ; for auto-reply
  #:use-module (j-r-hacker mail-utils)       ; for compose-mail
  ...)

(define (auto-reply ...) ...)
(define (compose-mail ...) ...)

and so on.  it could be that people are doing this already, but more
locally than not (and w/ little fanfare or further distribution).  who
knows?  who cares?

anyway, to sum up my pov: a nice GPLed user-supported standard library
for guile would be very welcome, and most welcome would be a standard
set of well-organized interfaces, responsibly maintained.  otherwise,
no matter the name, it will simply be another *-pers-scheme package in
spirit (nothing wrong w/ that, of course ;-).

thi


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


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

* Re: First look at Guile Std Library available
  2004-01-03 22:52   ` Richard Todd
@ 2004-01-04  1:53     ` Thien-Thi Nguyen
  0 siblings, 0 replies; 60+ messages in thread
From: Thien-Thi Nguyen @ 2004-01-04  1:53 UTC (permalink / raw)


   From: Richard Todd <richardt@vzavenue.net>
   Date: Sat, 3 Jan 2004 16:52:26 -0600

   I may feel differently the first time I actually have to *do* it!

anything you have to do manually that you could have described to a
computer to do for you, is an opportunity for growth (for you and the
computer, both :-).

thi


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


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

* Re: First look at Guile Std Library available
  2004-01-03 18:19   ` Clinton Ebadi
  2004-01-03 20:12     ` Thien-Thi Nguyen
@ 2004-01-04  2:02     ` Richard Todd
  2004-01-06 20:42       ` Richard Todd
  1 sibling, 1 reply; 60+ messages in thread
From: Richard Todd @ 2004-01-04  2:02 UTC (permalink / raw)
  Cc: guile-user, ttn


[-- Attachment #1.1: Type: text/plain, Size: 1644 bytes --]

On Sat, Jan 03, 2004 at 01:19:49PM -0500, Clinton Ebadi wrote:
> Grep the slib sources for all instances of "provide" and then generate a new 
> file "std/slib/symbol-that-is-provided.scm" that does a (use-modules (ice-9 
> slib)), does a (require 'symbol-that-is-provided) and then exports all the 
> symbols in the current model to the outside world 

If I'm understanding you, this would be an slib wrapper such that guile users
would say:

(use-modules (slib factor))

and that file would look like:
----
(define-module (slib factor)
  #:uses-module (ice-9 slib))

(require 'factor)

;; and then export whatever slib factor uses for a public interface?
----

> (set-module-uses! %module-public-interface
>                   (list (nested-ref the-root-module '(app modules std slib 
> symbol-that-is-provided))))

I'm not familiar with the set-module-uses! interface, so I'm not sure
what you are getting at there.  The guile info pages seem to be silent
on them as well.  Any hints?

This would certainly make slib more seamless for guile users.  I like
that it should allow people to use the guile renaming mechanism to
manage naming conflicts, whereas I don't think SLIB's require
mechanism accounts for that sort of thing.

For my tastes I'd still prefer (math primes) rather than (slib
factor), so that it fits into a larger, cohesive library.  I was also
hoping to not absorb parts of slib that overlap what guile already
provides, and that means changing the slib sources.  Maybe that's the
wrong answer, and I should just accept the duplication.

Richard Todd
richardt at vzavenue dot net


[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-04  1:49       ` Thien-Thi Nguyen
@ 2004-01-04  3:50         ` Richard Todd
  2004-01-04 12:59           ` Thien-Thi Nguyen
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Todd @ 2004-01-04  3:50 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 3803 bytes --]

On Sun, Jan 04, 2004 at 02:49:01AM +0100, Thien-Thi Nguyen wrote:
> i like the idea of providing a framework, but caution you against
> getting stuck on the implementation details.  for slib (for example), if
> the bridging is as easy as another poster has intimated, why preclude
> that from your plans? 

I'm not precluding it--but I'm trying to think through other options,
since I think the coherence of the whole library would suffer.  Maybe
not as much as I worry, but it would have to.  Let's say we take in a
logging framework, and then find some other code that does syslogging.
What are our options:

  1) We could include that code too.  So now there are two logging
mechanisms in the library.  With potentially very different styles of
interfaces, and different naming conventions.  In one all functions
are log:xxx and log:yyy, but in the other all the function names are
write-syslog.

  2) We could make the needed modifications to fit the new syslogging
behavior into the logging framework (leading to bit-rot if the
syslogger is updated and I don't take those changes right away).

The situation can be even more complicated, like if both allow you to
filter the logs by regexp, but use two different regexp libraries with
different capabilities.  Now there's another decision point.

Another example would be slib minimize.scm, which has one method for
minimization in it.  If I find another lib with four more methods in
it, should I combine them into a single, coherent module, or leave two
modules out there (possibly with contrived names so that they are
different)--one with one function and one with four?  Or wrap them in
a third module that re-exports all the methods, and attempt to keep
the two 'base' madules private?

This type of problem will show up time and again.  I have been leaning
towards the option that produces the most coherent product so far, but
like all complicated decisions, there are downsides to it.  


Another option for the project would be to actively avoid things
that are already in SLIB, Guile-core, or wherever else, and just 'fill
in the gaps.'  I'm having trouble taking that road, because it's
asking users to look 5 places for everything they think might be
available, and deal with all the variations and overlap inherent in
it.  And, though people may get tired of me waving the python standard
around, you just don't have this problem with other languages.  Sure,
there are lots of independent libraries out there, but the basics are
covered 'out of the box'.

And this is exactly the kind of discussion I'd like to have and
resolve before I put too much effort into this.  I'd like everyone to
be happy with the outcome, and contribute to a successful project.


> btw, i consider "generic library" high (and deserved) praise for slib.

I'm not knocking it for being generic--I'm saying no major scheme
implementation that I know of just points you to SLIB..  they all have
libraries of their own.


> (define-module (net email sendmail)
>   #:use-module (ttn parse-rfc822)            ; for auto-reply
>   #:use-module (j-r-hacker mail-utils)       ; for compose-mail
>   ...)
> 
> (define (auto-reply ...) ...)
> (define (compose-mail ...) ...)
> 
> and so on.  it could be that people are doing this already, but more
> locally than not (and w/ little fanfare or further distribution).  who
> knows?  who cares?

I care, because building an infrastructure that others can build on is
an important part of making guile useful in the real world.  If lots
of people are out there quietly cobbling together email packages out
of fragments of people's pet projects, then we are not acting in a
very efficient manner.

Richard Todd
richardt at vzavenue dot net

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-04  3:50         ` Richard Todd
@ 2004-01-04 12:59           ` Thien-Thi Nguyen
       [not found]             ` <16376.5782.10995.206284@l.a>
  2004-01-04 21:51             ` Richard Todd
  0 siblings, 2 replies; 60+ messages in thread
From: Thien-Thi Nguyen @ 2004-01-04 12:59 UTC (permalink / raw)


   From: Richard Todd <richardt@vzavenue.net>
   Date: Sat, 3 Jan 2004 21:50:22 -0600

   I'm trying to think through other options,
   since I think the coherence of the whole library would suffer.

from lurking on the emacs-devel mailing list, i've come to understand
the word "coherence" in an application context (app == emacs) to be
definition 1b from webster's[1], the operative word being "integration".
in a library context, what kind of integration are we talking about?  if
integration is actually not what you mean, could you explain how would
"coherence of the whole library" be measured?

   1) We could include that code too.  [...]
   2) We could make the needed modifications [...]

   The situation can be even more complicated, like if both allow you to
   filter the logs by regexp, but use two different regexp libraries with
   different capabilities.

here are two decisions you can make early on:

(a)
what is the policy re proliferation of work-alike (but not exactly
identical) interfaces?  one-size-fits-all vs pluralistic-menu.  for
the latter, you would probably want to specify "adapter" modules to
reduce interface complexity from NxM to N+M.  for the former, the
proliferation problem is defined away but the immediate usefulness of
the library is reduced for some users, who would be forced to do the
adaptation outside the library (probably in isolation, without
further distribution) -- same boat as the *-pers-scheme approach,
basically.

(b)
what is the policy for changing an interface wrt backwards
compatibility?  if you allow backward-incompatible changes, users
will learn to not trust the library (or at least allocate trust to
those elements that have changed in this way very begrudgingly).  if
you disallow backward-incompatible changes, you need to be supremely
careful when defining interfaces for one-size-fits-all approach,
slightly less careful for pluralistic-menu.

figure out (a) and (b) and a maintenance strategy will probably
present itself naturally.

   Another example would be slib minimize.scm [...]  Or wrap them in
   a third module that re-exports all the methods, and attempt to
   keep the two 'base' madules private?

perhaps figuring out the maintenance axioms can help answer this.
certainly, separating the design of the interface from that of the
implementation allows you some flexibility.

   Another option for the project would be to actively avoid things
   that are already in SLIB, Guile-core, or wherever else, and just
   'fill in the gaps.'  I'm having trouble taking that road, because
   it's asking users to look 5 places for everything they think might
   be available, and deal with all the variations and overlap
   inherent in it.  And, though people may get tired of me waving the
   python standard around, you just don't have this problem with
   other languages.  Sure, there are lots of independent libraries
   out there, but the basics are covered 'out of the box'.

i think it would be a mistake to willfully ignore what is out there,
but that doesn't mean you can't provide a valuable bundling service.
much depends on how you feel about not being the only such service.

   I care, because building an infrastructure that others can build
   on is an important part of making guile useful in the real world.
   If lots of people are out there quietly cobbling together email
   packages out of fragments of people's pet projects, then we are
   not acting in a very efficient manner.

IME as a "user" of programming languages, tools, and employees,
useful trumps standard trumps efficient.  in practice, efficiency is
such a fuzzy concept, it is often measured in terms of usefulness!

thi


______________________________
[1] M-x dict sez:
    Main Entry: co·her·ence # #
    Pronunciation: kO-'hir-&n(t)s, -'her-
    Function: noun
    Date: 1580
    1 : the quality or state of cohering : as a : systematic or
    logical connection or consistency b : integration of diverse
    elements, relationships, or values
    2 : the property of being coherent


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


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

* Re: First look at Guile Std Library available
       [not found]             ` <16376.5782.10995.206284@l.a>
@ 2004-01-04 14:17               ` Dale Mellor
  0 siblings, 0 replies; 60+ messages in thread
From: Dale Mellor @ 2004-01-04 14:17 UTC (permalink / raw)



>>>>> "Thien-Thi" == Thien-Thi Nguyen <ttn@surf.glug.org> writes:
    Thien-Thi> from lurking on the emacs-devel mailing list, i've come to
    Thien-Thi> understand the word "coherence" in an application context... in a
    Thien-Thi> library context, what kind of integration are we talking about?
    Thien-Thi> if integration is actually not what you mean, could you explain
    Thien-Thi> how would "coherence of the whole library" be measured?

    IMHO, in this case, coherence = efficiency, and efficiency is defined as the
ratio of satiated user's expectations over lines of code to implement. In other
words, a good library is one that meets a lot of people's needs without imposing
a massive maintainence burden on the library maintainer (which in turn delivers
reliability).


    Thien-Thi> here are two decisions you can make early on:

    Thien-Thi> (a) what is the policy re proliferation of work-alike (but not
    Thien-Thi> exactly identical) interfaces?  one-size-fits-all vs
    Thien-Thi> pluralistic-menu...

    Thien-Thi> (b) what is the policy for changing an interface wrt backwards
    Thien-Thi> compatibility?
    Thien-Thi> IME as a "user" of programming languages, tools, and employees,
    Thien-Thi> useful trumps standard trumps efficient.  in practice, efficiency
    Thien-Thi> is such a fuzzy concept, it is often measured in terms of
    Thien-Thi> usefulness!

    IMHO, we should be looking at a well designed one-size-fits-all interface
approach (otherwise it will never be documented properly, and will be a slur
against the purity of the scheme programming language). We should use three-part
version numbers, and within a major version release there should be complete
backwards compatibility among minor version changes (there may be localized
compatibility breakages amongst micro versions as interfaces are worked out and
stabilized). If one day it transpires that a wrong turn was made and a new
direction is needed, then the major version should be incremented, and a new
namespace (std-2, say) be introduced, ***but the older (std) namespace should be
kept in the library so as not to break any existing code***.


                                                          Dale


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


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

* Re: First look at Guile Std Library available
  2004-01-02  5:21 First look at Guile Std Library available Richard Todd
  2004-01-02  9:29 ` Dale Mellor
  2004-01-03 16:38 ` Thien-Thi Nguyen
@ 2004-01-04 20:34 ` Arno Peters
  2004-01-05 20:12   ` Richard Todd
  2 siblings, 1 reply; 60+ messages in thread
From: Arno Peters @ 2004-01-04 20:34 UTC (permalink / raw)



[-- Attachment #1.1: Type: text/plain, Size: 1021 bytes --]

On Thu, Jan 01, 2004 at 11:21:28PM -0600, Richard Todd wrote:

> There are plenty of things to fill in, and help would be
> appreciated.  If you have a few hours one weekend, pull out your
> 'numerical recipes' book and make a scheme version of some
> algorithms.  Every time someone does this and contributes it to the
> library, the entire guile community gets more efficient.

Please check out my guile-numerics project on Savannah
(http://www.nongnu.org/guile-num).  It wraps most of the GNU
Scientific Library, FFTW and libsndfile through SWIG.  It also
includes some higher level functions to provide a simpler interface to
the math routines.  For numerical work, GSL and FFTW have a proven
track record and it would be foolish to duplicate much of that work.

What is still lacking, though, is a uniform interface for hiding the
low-level GSL interactions and presenting the user/programmer with a
consistent scheme interface.  Help with this is always welcome.

Regards,
-- 
Arno Peters



[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-04 12:59           ` Thien-Thi Nguyen
       [not found]             ` <16376.5782.10995.206284@l.a>
@ 2004-01-04 21:51             ` Richard Todd
  2004-01-05  0:30               ` Andreas Rottmann
                                 ` (2 more replies)
  1 sibling, 3 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-04 21:51 UTC (permalink / raw)
  Cc: guile-user

(writing from my windows machine, so not set up to gpg sign it, but it's 
me I promise!)

Thien-Thi Nguyen wrote:
> here are two decisions you can make early on:
> 
> (a)
> what is the policy re proliferation of work-alike (but not exactly
> identical) interfaces?  one-size-fits-all vs pluralistic-menu.  for
> the latter, you would probably want to specify "adapter" modules to
> reduce interface complexity from NxM to N+M.  for the former, the
> proliferation problem is defined away but the immediate usefulness of
> the library is reduced for some users, who would be forced to do the
> adaptation outside the library (probably in isolation, without
> further distribution) -- same boat as the *-pers-scheme approach,
> basically.

I thought that's what I was trying to ask in my post, via the examples I 
gave.  I'm looking for input on what the community wants, and (more 
importantly) would help contribute to.  I don't want to go this alone, 
and in fact I think it would be ridiculous to generate a 'standard' 
library in isolation!

I don't follow why one-size-fits-all would reduce the immediate 
usefulness of the libarary for some users.  Are you are talking about a 
user who was already using an interface from another library that I 
incorporated and changed?  Compared to the benefit to new users who 
would not be faced with several disjoint interfaces, I think this is 
insignificant (especially since they can keep on using the old lib if 
they want).


> (b)
> what is the policy for changing an interface wrt backwards
> compatibility?  if you allow backward-incompatible changes, users
> will learn to not trust the library (or at least allocate trust to
> those elements that have changed in this way very begrudgingly).  if
> you disallow backward-incompatible changes, you need to be supremely
> careful when defining interfaces for one-size-fits-all approach,
> slightly less careful for pluralistic-menu.

I agree with Dale Mellor's response.  It's standard practice to stay 
compatible along minor version numbers, and OK to break backwards 
compatibility across major version numbers.  This code base should grow 
over time, and the ideal organization and interface to the modules will 
certainly shift, even if we do get it perfect in the first place (which 
we won't, of course).

What do you think of (std ...) => (std2 ...) as a means of letting older 
code run forever?  I've read c++ is considering this approach.  I don't 
think it should happen but every 5 years or so, and only then if 
backwards compatibility has become a burden.

As for 'supremely careful', this is why I have released work so early, 
and plan for all of us working on the project to do the same.  I want 
the time between now and June to be the period where people attempt to 
use and criticize what's out there.  Anything that is still 
controversial will be left out of the first release.

I'm a little disappointed that all the response I've gotten has been 
about the library concept, and no one has yet appeared to be interested 
in the code I've put out there to date.  Do you like it?  Hate it? 
Don't care about it?  Can it be that only Java/Python/Perl/Ruby need 
logging services, and scheme does not?


> > Another example would be slib minimize.scm [...]  Or wrap them in
> > a third module that re-exports all the methods, and attempt to
> > keep the two 'base' madules private?
 >
> perhaps figuring out the maintenance axioms can help answer this.
> certainly, separating the design of the interface from that of the
> implementation allows you some flexibility.

Again, yes, figuring that stuff out would help, and that's why I brought 
it up.  I'm looking for input.  Much of your post seems to be re-asking 
the same questions I was asking.

I can answer these questions on my own (and I think I mostly have done 
so by way of releasing code that has a certain slant to it), but I am 
trying to get a feel for what others think is best for guile.  I think 
we all at least agree that having _something_ is desireable.


> i think it would be a mistake to willfully ignore what is out there,
> but that doesn't mean you can't provide a valuable bundling service.
> much depends on how you feel about not being the only such service.

I am trying to start a project, but it's not about me, or being the only 
service.  It's a question of whether we want a bundle or a framework.

I have said, and do believe, that it would be good to have a single 
library that provides the baseline infrastructure for doing useful work. 
  Would everyone be satisfied if we grouped 6 packages and made sure 
they all 'configure && make install' properly, or do people want 
something more than that?  I was imagining they would want more, but now 
would be the best time to find out I'm wrong about that.

Where are the other such services, anyway?

>  > I care, because building an infrastructure that others can build
>  > on is an important part of making guile useful in the real world.
>  > If lots of people are out there quietly cobbling together email
>  > packages out of fragments of people's pet projects, then we are
>  > not acting in a very efficient manner.
> 
> IME as a "user" of programming languages, tools, and employees,
> useful trumps standard trumps efficient.  in practice, efficiency is
> such a fuzzy concept, it is often measured in terms of usefulness!

Regardless of which trumps which, what is 'useful', 'standard', *OR* 
'efficient' about what a guile user has today?  When I download the JDK 
I have a ton of 'useful', 'standard', *AND* 'efficient' components from 
which I can start useful work.  There is no comparison, even if you 
start with (+ guile ice-9 slib).

I've had a serious suggestion that I redirect this effort to SLIB, and 
I'm mulling that over.  I would have to make serious changes, since I've 
been freely using guile-specific code so far (such as goops classes). 
I'm also not thrilled with the way slib is organized, but there would be 
some benefits to going that way.  We could still produce a (use-modules) 
interface to the entire SLIB library, which I think makes sense in any 
case.  Any thoughts?

Richard Todd




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


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

* Re: First look at Guile Std Library available
  2004-01-04 21:51             ` Richard Todd
@ 2004-01-05  0:30               ` Andreas Rottmann
  2004-01-05  5:00                 ` Richard Todd
  2004-01-05 10:08                 ` First look at Guile Std Library available Dale Mellor
  2004-01-05  3:39               ` Paul Jarc
  2004-01-05 14:00               ` Thien-Thi Nguyen
  2 siblings, 2 replies; 60+ messages in thread
From: Andreas Rottmann @ 2004-01-05  0:30 UTC (permalink / raw)
  Cc: guile-user, ttn

Richard Todd <richardt@vzavenue.net> writes:

>> (b)
>> what is the policy for changing an interface wrt backwards
>> compatibility?  if you allow backward-incompatible changes, users
>> will learn to not trust the library (or at least allocate trust to
>> those elements that have changed in this way very begrudgingly).  if
>> you disallow backward-incompatible changes, you need to be supremely
>> careful when defining interfaces for one-size-fits-all approach,
>> slightly less careful for pluralistic-menu.
>
> I agree with Dale Mellor's response.  It's standard practice to stay
> compatible along minor version numbers, and OK to break backwards
> compatibility across major version numbers.  This code base should
> grow over time, and the ideal organization and interface to the
> modules will certainly shift, even if we do get it perfect in the
> first place (which we won't, of course).
>
> What do you think of (std ...) => (std2 ...) as a means of letting
> older code run forever?  I've read c++ is considering this approach.
> I don't think it should happen but every 5 years or so, and only then
> if backwards compatibility has become a burden.
>
Hmm, I always kind of disliked that approach. 

1) It's probably very hard for a standard library (which presumably
   consists of lots of modules) to stay API-compatible over an
   longer period of time. Consider the GNOME project -- they have
   the concept of the "GNOME developer platform", which will, given a
   constant *minor* release number stay API compatible, but may (and
   mostly will) break API every minor release number change, which
   happens about every six months.

2) Presumed the need for API-breaking changes are needed, in turn not
   to hinder development of the library itself, in intervals quite
   smaller than 5 years, it would be more of a annoyance to developers
   regularly adapting to the API changes (which indeed should only be
   "major" in the sense that they require a lot of adaption to
   existing code accross major version changes) to require changing
   all their code to use stdY instead of stdX.

> I'm a little disappointed that all the response I've gotten has been
> about the library concept, and no one has yet appeared to be
> interested in the code I've put out there to date.  Do you like it?
> Hate it? Don't care about it?  Can it be that only
> Java/Python/Perl/Ruby need logging services, and scheme does not?
>
I just skimmed a bit over your code, and it seems quite OK. A few bits
I've noticed:

------- (logging logger) -----------

1)

,----
| (define (register-logger! str lgr)
|   (if (not (string? str))
|       (throw 'bad-type "Expected a string for the log registration"))      
|   (hash-set! all-loggers str lgr))
`----

Why not make GOOPS care for type-checking (given GOOPS is used)?


2) Have you considered the need for a "log domain" as in GLib? This
   can be useful e.g. for an application to dump most logs including
   all those generated by libraries into a file and present all logs
   messages from its own domain and above a certain level in a special
   way (e.g. message dialog).

Regards, Andy
-- 
Andreas Rottmann         | Rotty@ICQ      | 118634484@ICQ | a.rottmann@gmx.at
http://yi.org/rotty      | GnuPG Key: http://yi.org/rotty/gpg.asc
Fingerprint              | DFB4 4EB4 78A4 5EEE 6219  F228 F92F CFC5 01FD 5B62

Packages should build-depend on what they should build-depend.


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


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

* Re: First look at Guile Std Library available
  2004-01-04 21:51             ` Richard Todd
  2004-01-05  0:30               ` Andreas Rottmann
@ 2004-01-05  3:39               ` Paul Jarc
  2004-01-05  4:28                 ` Richard Todd
  2004-01-05 14:00               ` Thien-Thi Nguyen
  2 siblings, 1 reply; 60+ messages in thread
From: Paul Jarc @ 2004-01-05  3:39 UTC (permalink / raw)
  Cc: guile-user, ttn

Richard Todd <richardt@vzavenue.net> wrote:
> It's standard practice to stay compatible along minor version
> numbers, and OK to break backwards compatibility across major
> version numbers.
...
> What do you think of (std ...) => (std2 ...) as a means of letting
> older code run forever?

It's doubtful that incompatible changes will happen to all modules in
this collection all at the same time.  Coercing them all into a single
version number/compatibility schedule doesn't seem helpful.

> Can it be that only Java/Python/Perl/Ruby need logging services, and
> scheme does not?

I don't think syslog is a good idea regardless of the language.  It's
more flexible to print logs to stdout/stderr; then it's easy to choose
another program to add to the pipeline for filtering and storing the
logs.

> I have said, and do believe, that it would be good to have a single
> library that provides the baseline infrastructure for doing useful
> work.

As long as the code exists, I don't think there's much benefit in
aggregating it.  It just has to be easy for users to find.

Of course, all this applies to all software, not just Guile modules.
So I think a Guile-only solution would be wasted effort.  We'd be
better off with language-independent version management and a software
directory that could be filtered and searched to find, e.g., a Guile
SMTP library.  slashpackage would be a good place to start.
<URL:http://cr.yp.to/slashpackage.html>


paul


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


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

* Re: First look at Guile Std Library available
  2004-01-05  3:39               ` Paul Jarc
@ 2004-01-05  4:28                 ` Richard Todd
  2004-01-05  5:19                   ` Paul Jarc
                                     ` (2 more replies)
  0 siblings, 3 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-05  4:28 UTC (permalink / raw)
  Cc: guile-user, ttn

Paul Jarc wrote:
> It's doubtful that incompatible changes will happen to all modules in
> this collection all at the same time.  Coercing them all into a single
> version number/compatibility schedule doesn't seem helpful.

Helpful to whom?  I'd argue that it's extremely helpful to users if they 
only have to deal with "package X requires Guile-Library v1.5 or above", 
rather than "package X requires these versions of these 17 modules: ..."


> I don't think syslog is a good idea regardless of the language.  It's
> more flexible to print logs to stdout/stderr; then it's easy to choose
> another program to add to the pipeline for filtering and storing the
> logs.

If Chewbacca lives on Endor, you must acquit! The defense rests.
(in other words, what does this have to do with the topic at hand???)


> As long as the code exists, I don't think there's much benefit in
> aggregating it.  It just has to be easy for users to find.

Ok, I am definitely starting to feel like a stranger in a strange land, 
here.  If this many people really don't think that guile is missing 
basic library services, maybe it's just not right for guile.  I expected 
several classes of response to this project, but I never anticipated 
that people didn't think it was needed.  Having used many languages over 
the years, to me it stands out as an obvious hole.  But that's just me.

Searching with google, I found a pretty good sounding proposal from 2001 
by Martin Grabmueller for reorganizing ice-9 into a hierarchy a lot like 
what I was working towards.  It even happened to have some of the same 
names like (math primes) in it!  It was addressing other topics I have 
yet to bring up, but planned to, such as putting srfi capabilities in 
named modules and making (srfi srfi-XX) the alternate interface.

What happened to that?  Based on the surrounding messages it seemed to 
be received well.  Nearly three years have passed...
(http://mail.gnu.org/archive/html/guile-devel/2001-03/msg00116.html)

Richard Todd




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


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

* Re: First look at Guile Std Library available
  2004-01-05  0:30               ` Andreas Rottmann
@ 2004-01-05  5:00                 ` Richard Todd
  2004-01-05 16:03                   ` Robert Uhl
  2004-01-05 10:08                 ` First look at Guile Std Library available Dale Mellor
  1 sibling, 1 reply; 60+ messages in thread
From: Richard Todd @ 2004-01-05  5:00 UTC (permalink / raw)
  Cc: guile-user

Andreas Rottmann wrote:
> Hmm, I always kind of disliked that approach. 
> 

<snip>

> 2) Presumed the need for API-breaking changes are needed, in turn not
>    to hinder development of the library itself, in intervals quite
>    smaller than 5 years, it would be more of a annoyance to developers
>    regularly adapting to the API changes (which indeed should only be
>    "major" in the sense that they require a lot of adaption to
>    existing code accross major version changes) to require changing
>    all their code to use stdY instead of stdX.

You could be right.  I was thinking along these lines:

There is a lot that can be done to preserve compatibility over a period 
of time, that essentially builds up cruft in the library.  Things like 
leaving the old function name _and_ the new function name in.  Things 
like moving the module _and_ leaving a module in the original location 
to load it, too.  Things like adding the second XML processing module 
but leaving the original one there too.

Then, (I was hoping only once every few years), you have to say 
"Enough!" and break with the past.

It could be that it's best to do something in-between, and let small 
incompatibilities in over time, and reserve std2 for a massive 
reorganization.  Some people do a "deprecate-for-1-major-release" 
strategy, after which deprecated things disappear.  That might be an 
option also.

> 1)
> 
> ,----
> | (define (register-logger! str lgr)
> |   (if (not (string? str))
> |       (throw 'bad-type "Expected a string for the log registration"))      
> |   (hash-set! all-loggers str lgr))
> `----
> 
> Why not make GOOPS care for type-checking (given GOOPS is used)?

Good question!  I'll do this.

> 2) Have you considered the need for a "log domain" as in GLib? This
>    can be useful e.g. for an application to dump most logs including
>    all those generated by libraries into a file and present all logs
>    messages from its own domain and above a certain level in a special
>    way (e.g. message dialog).
Not familiar with GLib, but if you mean that different parts of the 
program talk to different named 'domains', then that you should be able 
to get something similar with the register-logger! mechanism, right? 
You could log to as many named loggers as you want.  You can even assign 
the same handlers to different named loggers.  So, your "gtk" logger 
could be sending its logs to the same files as your "app" logger, for 
instance.  I may not fully understand the domain concept, yet, though.

thanks,
Richard





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


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

* Re: First look at Guile Std Library available
  2004-01-05  4:28                 ` Richard Todd
@ 2004-01-05  5:19                   ` Paul Jarc
  2004-01-06 22:25                   ` Ludovic Courtès
  2004-01-16 20:17                   ` Andy Wingo
  2 siblings, 0 replies; 60+ messages in thread
From: Paul Jarc @ 2004-01-05  5:19 UTC (permalink / raw)
  Cc: guile-user, ttn

Richard Todd <richardt@vzavenue.net> wrote:
> I'd argue that it's extremely helpful to users if they only have to
> deal with "package X requires Guile-Library v1.5 or above", rather
> than "package X requires these versions of these 17 modules: ..."

As long as each module does a decent job of not breaking compatibility
too much, and as long as modules are easy to install, I don't think
it's much of a problem for them to be separated.

>> I don't think syslog is a good idea regardless of the language.  It's
>> more flexible to print logs to stdout/stderr; then it's easy to choose
>> another program to add to the pipeline for filtering and storing the
>> logs.
>
> If Chewbacca lives on Endor, you must acquit! The defense rests.
> (in other words, what does this have to do with the topic at hand???)

You asked about logging, so I was responding to that individual point.
Maybe I misunderstood you.

> If this many people really don't think that guile is missing basic
> library services, maybe it's just not right for guile.

I'm not saying that nothing is missing; I agree that for many tasks,
it's much easier to find libraries for Perl or Python than for Guile.
I'm saying that the problem (finding and organizing software) is
bigger than Guile, and so the solution should be as well.  Solving the
same problem over and over again in different microcosms is a waste of
effort.  I also don't think aggregation of separate modules into a
single package is necessarily a good idea.


paul


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


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

* Re: First look at Guile Std Library available
  2004-01-05  0:30               ` Andreas Rottmann
  2004-01-05  5:00                 ` Richard Todd
@ 2004-01-05 10:08                 ` Dale Mellor
  1 sibling, 0 replies; 60+ messages in thread
From: Dale Mellor @ 2004-01-05 10:08 UTC (permalink / raw)


>>>>> "Andreas" == Andreas Rottmann <a.rottmann@gmx.at> writes:

    Andreas> Richard Todd <richardt@vzavenue.net> writes:
    >> What do you think of (std ...) => (std2 ...) as a means of letting older
    >> code run forever?  I've read c++ is considering this approach.  I don't
    >> think it should happen but every 5 years or so, and only then if
    >> backwards compatibility has become a burden.
    >> 
    Andreas> Hmm, I always kind of disliked that approach.

    Andreas> 1) It's probably very hard for a standard library (which presumably
    Andreas> consists of lots of modules) to stay API-compatible over an longer
    Andreas> period of time. Consider the GNOME project -- they have the concept
    Andreas> of the "GNOME developer platform", which will, given a constant
    Andreas> *minor* release number stay API compatible, but may (and mostly
    Andreas> will) break API every minor release number change, which happens
    Andreas> about every six months.

    There is a big difference between the Guile stdlib and GNOME. GNOME is a
tight-knit community of advanced developers (for the most part, anyway), whereas
the Guile lib has to appeal to and be used by complete novices (people who only
pick the language up because it is used in the configuration of another program,
for example). The Guile lib is much more like C++ STL than libgnome. It has to
set the standard for people to use, and keep it. You cannot expect every
developer of a Guile script to keep step with API changes. Breaking API every
six months is, simply, not acceptable for the Guile lib.



    Andreas> 2) Presumed the need for API-breaking changes are needed, in turn
    Andreas> not to hinder development of the library itself, in intervals quite
    Andreas> smaller than 5 years, it would be more of a annoyance to developers
    Andreas> regularly adapting to the API changes (which indeed should only be
    Andreas> "major" in the sense that they require a lot of adaption to
    Andreas> existing code accross major version changes) to require changing
    Andreas> all their code to use stdY instead of stdX.

    They don't have to change all of their code to stdY if stdX remains
available.


    >> I'm a little disappointed that all the response I've gotten has been
    >> about the library concept, and no one has yet appeared to be interested
    >> in the code I've put out there to date.  Do you like it?  Hate it? Don't
    >> care about it?  Can it be that only Java/Python/Perl/Ruby need logging
    >> services, and scheme does not?
    >> 
    Andreas> I just skimmed a bit over your code, and it seems quite OK. A few
    Andreas> bits I've noticed:

    I'm sorry I'm making blind comments without yet having looked at your
code. I keep meaning to do it but am having difficulty making the
space. However, I think the question of the approach to design is much more
important right now than the implementation details.

                                                 Dale


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


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

* Re: First look at Guile Std Library available
  2004-01-04 21:51             ` Richard Todd
  2004-01-05  0:30               ` Andreas Rottmann
  2004-01-05  3:39               ` Paul Jarc
@ 2004-01-05 14:00               ` Thien-Thi Nguyen
  2004-01-05 20:32                 ` Richard Todd
  2 siblings, 1 reply; 60+ messages in thread
From: Thien-Thi Nguyen @ 2004-01-05 14:00 UTC (permalink / raw)
  Cc: guile-user

   From: Richard Todd <richardt@vzavenue.net>
   Date: Sun, 04 Jan 2004 15:51:17 -0600

   I don't follow why one-size-fits-all would reduce the immediate
   usefulness of the libarary for some users.  Are you are talking about
   a user who was already using an interface from another library that I
   incorporated and changed?  Compared to the benefit to new users who
   would not be faced with several disjoint interfaces, I think this is
   insignificant (especially since they can keep on using the old lib if
   they want).

i presumed you wanted to build something useful to more than just new
users.  it seems to me you want to "ask the community" to tell you what
to do, but are not clear what comprises "the community", so now i'll ask
explicitly: what is your target audience?  what assumptions are you
making about this audience?  these answers will let me know if i am
included, so that i can continue discussion or withdraw as appropriate.

   What do you think of (std ...) => (std2 ...) as a means of letting
   older code run forever?

that depends on what "=>" means precisely.

   I'm a little disappointed that all the response I've gotten has been 
   about the library concept, and no one has yet appeared to be interested 
   in the code I've put out there to date.

personally, i don't care about code as much as interfaces (and their
proper care and feeding).  bad code under a good interface can be fixed.
bad interfaces can also be fixed, but at a higher cost.

   what is 'useful', 'standard', *OR* 'efficient' about what a guile
   user has today?  [...]  There is no comparison [...]

well, some wise dude said the first mistake is making comparison, and
i've gone very far beyond that first mistake by now (so due to the fog
of recent mistakes i can't really remember enough to comment in this
way :-)...  i admire your enthusiasm nonetheless.

thi


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


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

* Re: First look at Guile Std Library available
  2004-01-05  5:00                 ` Richard Todd
@ 2004-01-05 16:03                   ` Robert Uhl
  2004-01-05 20:01                     ` Richard Todd
  0 siblings, 1 reply; 60+ messages in thread
From: Robert Uhl @ 2004-01-05 16:03 UTC (permalink / raw)


Richard Todd <richardt@vzavenue.net> writes:
> 
> Then, (I was hoping only once every few years), you have to say
> "Enough!" and break with the past.

I'm not certain about that--after all, libc has stayed pretty much the
same for decades.  Heck, we still have gets(), for the truly perverse.

Standard libraries should, as a rule, not change their interfaces.
Given the right thought into their APIs at the outset, it's not needed.
Even where it would be nice, it must be weighed against the need to
maintain compatibility.

I can still pick up little C progs from the clory days and have a _very_
good chance of compiling them; that would not be possible of libc kept
changing.

-- 
Robert Uhl <ruhl@4dv.net>
What parts of `shall make no law,' `shall not be infringed,' and `shall
not be violated' don't you understand?


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


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

* Re: First look at Guile Std Library available
  2004-01-05 16:03                   ` Robert Uhl
@ 2004-01-05 20:01                     ` Richard Todd
  2004-01-06  1:36                       ` Robert Uhl
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Todd @ 2004-01-05 20:01 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 1639 bytes --]

On Mon, Jan 05, 2004 at 09:03:52AM -0700, Robert Uhl wrote:
> Richard Todd <richardt@vzavenue.net> writes:
> > 
> > Then, (I was hoping only once every few years), you have to say
> > "Enough!" and break with the past.
> 
> I'm not certain about that--after all, libc has stayed pretty much the
> same for decades.  Heck, we still have gets(), for the truly perverse.

The basis of the proposal was that you'd still have whatever schemely
'gets' we were living with, but it would stay in (std xxx).  We would
be encouraging the new development to move to (std2 xxx).  The C
language doesn't have a similar mechanism to make such a clean break.

We're also presuming there's sufficient legacy code to save that it is
worth saving.  In a few years, when std2 may become desireable, we can
look around.  If there is still very little guile use, we may just say
to ourselves, "why bother?" and make the incompatible cleanups.

At the other end of the spectrum, where we have grown to C-like
popularity, then we will certainly care a lot more about compatibility
than fixing a few warts.

I'm hoping it ends up in-between, where we care enough to leave 
(std ...) behind.  Maybe indefinitely.  Maybe for a couple years, so
people can upgrade old code.  Who knows?  I don't want to argue about
a hypothetical library cleanup for a library that doesn't exist yet.
I would like to put some effort into producing that library.

(also, lets look at our peers.  Python (to take one example) has changed
its libraries over time, and I hear very few complaints.  It certainly
hasn't hurt its popularity)

Richard Todd

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-04 20:34 ` Arno Peters
@ 2004-01-05 20:12   ` Richard Todd
  0 siblings, 0 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-05 20:12 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 1692 bytes --]

On Sun, Jan 04, 2004 at 09:34:04PM +0100, Arno Peters wrote:
> On Thu, Jan 01, 2004 at 11:21:28PM -0600, Richard Todd wrote:
> 
> > There are plenty of things to fill in, and help would be
> > appreciated.  If you have a few hours one weekend, pull out your
> > 'numerical recipes' book and make a scheme version of some
> > algorithms.  Every time someone does this and contributes it to the
> > library, the entire guile community gets more efficient.
> 
> Please check out my guile-numerics project on Savannah
> (http://www.nongnu.org/guile-num).  It wraps most of the GNU
> Scientific Library, FFTW and libsndfile through SWIG.  It also
> includes some higher level functions to provide a simpler interface to
> the math routines.  For numerical work, GSL and FFTW have a proven
> track record and it would be foolish to duplicate much of that work.

Ok, that is two people that have taken my 'numerical recipes'
statement very literally.  I was just trying to say, "if you have a
few hours free, you CAN contribute.  Just pick something that's
missing and write it."  I looked to my left, saw the "Numerical
Recipes in C" book on my bookshelf, and used it as an example of
something you can do in a couple hours.

I obviously do not want to blindly duplicate the work of others.


> What is still lacking, though, is a uniform interface for hiding the
> low-level GSL interactions and presenting the user/programmer with a
> consistent scheme interface.  Help with this is always welcome.

I also didn't see any documentation for the interfaces being exported
in the browseable CVS tree off the savannah site, though I may have
missed it.

Richard Todd

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-05 14:00               ` Thien-Thi Nguyen
@ 2004-01-05 20:32                 ` Richard Todd
  2004-01-05 20:59                   ` Dale P. Smith
  2004-01-06 16:54                   ` Thien-Thi Nguyen
  0 siblings, 2 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-05 20:32 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 1805 bytes --]

On Mon, Jan 05, 2004 at 03:00:28PM +0100, Thien-Thi Nguyen wrote:
>    From: Richard Todd <richardt@vzavenue.net>
>    Date: Sun, 04 Jan 2004 15:51:17 -0600
> 
>    I don't follow why one-size-fits-all would reduce the immediate
>    usefulness of the libarary for some users.  Are you are talking about
>    a user who was already using an interface from another library that I
>    incorporated and changed?  Compared to the benefit to new users who
>    would not be faced with several disjoint interfaces, I think this is
>    insignificant (especially since they can keep on using the old lib if
>    they want).
> 
> i presumed you wanted to build something useful to more than just new
> users.  it seems to me you want to "ask the community" to tell you what
> to do, but are not clear what comprises "the community", so now i'll ask
> explicitly: what is your target audience?  what assumptions are you
> making about this audience?  these answers will let me know if i am
> included, so that i can continue discussion or withdraw as appropriate.

In my view, the current level of guile usage is close to nil.  I want
to make steps to put guile in a place where it can reach a wider
audience.  So, the target audience does not yet exist, and this
project will succeed only to the extent that the current users want
that audience to materialize.

> personally, i don't care about code as much as interfaces (and their
> proper care and feeding).  bad code under a good interface can be fixed.
> bad interfaces can also be fixed, but at a higher cost.

Then perhaps you could critique the *interface* to the code I've put
out??  I agree that work on the interface would be more valuable than
if you found an off-by-1 error.  I'm not asking for that.

Richard Todd

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-05 20:32                 ` Richard Todd
@ 2004-01-05 20:59                   ` Dale P. Smith
  2004-01-06 16:54                   ` Thien-Thi Nguyen
  1 sibling, 0 replies; 60+ messages in thread
From: Dale P. Smith @ 2004-01-05 20:59 UTC (permalink / raw)


Richard Todd <richardt@vzavenue.net> writes:

> In my view, the current level of guile usage is close to nil.  I want
> to make steps to put guile in a place where it can reach a wider
> audience.  So, the target audience does not yet exist, and this
> project will succeed only to the extent that the current users want
> that audience to materialize.

Back when there was some debate about changing the Guile license, istr
that quite a few people spoke up that they used Guile quite a bit, but
the projects were mostly unknown because they were internal or
commercial, and didn't have a large "internet presence".

The Guile Community might be quite a bit larger than what you might
think based solely on mailling list activity or sourceforge projects
(or whatever).

I agree that there should be a nice library of code that people can
depend on.  When I first started learning Python, I was stunned by the
size of the library that came with it.

Fwiw, I've got some half finished zlib code laying around somewhere.
It could compress/decompress memory, but I got stuck trying to
compress/decompress scheme ports.  Anyone intrested in looking at it
and maybe adding it to the new Guile Library?

-Dale

-- 
Dale P. Smith
dsmith at actron dot com


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


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

* Re: First look at Guile Std Library available
  2004-01-05 20:01                     ` Richard Todd
@ 2004-01-06  1:36                       ` Robert Uhl
  2004-01-06 18:41                         ` number->string radix patch (Was Re: First look at Guile Std Library available) Richard Todd
  0 siblings, 1 reply; 60+ messages in thread
From: Robert Uhl @ 2004-01-06  1:36 UTC (permalink / raw)


Richard Todd <richardt@vzavenue.net> writes:
> 
> I'm hoping it ends up in-between, where we care enough to leave (std
> ...) behind.  Maybe indefinitely.  Maybe for a couple years, so people
> can upgrade old code.

The nice thing about permanent interfaces is that one can always compile
against them--which is why C code written by college students in the
early 80s is often still useful.  Or at least can be made to be so,
anyway:-)

> I don't want to argue about a hypothetical library cleanup for a
> library that doesn't exist yet.  I would like to put some effort into
> producing that library.

Naturally; it's very silly to care about supporting something which
doesn't even exist yet.  But it does make sense to consider what a good
usable design would entail ahead of time, so that no
backwards-incompatible changes to the API are needed in the future.
Scheme is nicer than C in this regard, of course, as optional & rest
parameters give one a certain flexibility.

Anyway, what's the URL again?  I really should try my hand at it.
Although my one true project is to figure out number->string well enough
to make it Do the Right Thing for decimals in bases other than 10 (I'm a
big fan of duodecimal).

-- 
Robert Uhl <ruhl@4dv.net>
According to the National Crime Survey administered by the Bureau of
the Census and the National Institute of Justice, it was found that
only 12 percent of those who use a gun to resist assault are injured,
as are 17 percent of those who use a gun to resist robbery.  These
percentages are 27 and 25 percent, respectively, if they passively
comply with the felon's demands.  Three times as many were injured if
they used other means of resistance.
          --G. Kleck, Policy Lessons from Recent Gun Control Research


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


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

* Re: First look at Guile Std Library available
  2004-01-05 20:32                 ` Richard Todd
  2004-01-05 20:59                   ` Dale P. Smith
@ 2004-01-06 16:54                   ` Thien-Thi Nguyen
  2004-01-06 20:32                     ` Richard Todd
  1 sibling, 1 reply; 60+ messages in thread
From: Thien-Thi Nguyen @ 2004-01-06 16:54 UTC (permalink / raw)


   From: Richard Todd <richardt@vzavenue.net>
   Date: Mon, 5 Jan 2004 14:32:15 -0600

   Then perhaps you could critique the *interface* to the code I've put
   out??  I agree that work on the interface would be more valuable than
   if you found an off-by-1 error.  I'm not asking for that.

but that's what i'm doing already (if you up-scope and substitute
"project" for "code" and "project management style" for "interface").
this is probably not what you're asking for, so i'll bow out of this
discussion now.

thi


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


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

* number->string radix patch (Was Re: First look at Guile Std Library available)
  2004-01-06  1:36                       ` Robert Uhl
@ 2004-01-06 18:41                         ` Richard Todd
  2004-01-07  4:04                           ` Robert Uhl
  2004-05-10 20:34                           ` number->string radix patch Marius Vollmer
  0 siblings, 2 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-06 18:41 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1.1: Type: text/plain, Size: 1354 bytes --]

On Mon, Jan 05, 2004 at 06:36:07PM -0700, Robert Uhl wrote:
> Although my one true project is to figure out number->string well enough
> to make it Do the Right Thing for decimals in bases other than 10 (I'm a
> big fan of duodecimal).

I've seen this wish twice from you in the short time I've been
watching guile-user, so I took a crack at it.  You are right, the
algorithm is hard to follow, but I think I worked it out.  I only
tested it by typing in random numbers and eyeballing the results, so
if you don't mind try it out and let me know if you get bad answers.

The patch should apply to CVS guile.
(supports the full 2 -> 36 radix range that integers enjoyed)

(PS I used CAPS for the letters since, as the last two examples show,
you need a way to differentiate the 'e' and 'i' from the digits in the
number.  Should this patch ever make it into guile, maybe all
string->number operations should switch to uppercase.)

Example:
guile> (number->string 35.25 36)
"Z.9"
guile> (number->string 0.25 2)
"0.01"
guile> (number->string 255.0625 16)
"FF.1"
guile> (number->string (/ 1 3) 3)
"1/10"
guile> (number->string 11.33333333333333333 12)
"B.4"
guile> (number->string 11.33333333333333333+23i 12)
"B.4+1B.0i"
guile> (number->string 1.324e44 16)
"5.EFE0A14FAFEe24"


Richard Todd 
richardt at vzavenue dot net

[-- Attachment #1.1.2: radix.patch --]
[-- Type: text/plain, Size: 7797 bytes --]

Index: libguile/numbers.c
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/libguile/numbers.c,v
retrieving revision 1.220
diff -u -r1.220 numbers.c
--- libguile/numbers.c	3 Jan 2004 21:38:38 -0000	1.220
+++ libguile/numbers.c	6 Jan 2004 18:13:50 -0000
@@ -91,7 +91,7 @@
 /* FLOBUFLEN is the maximum number of characters neccessary for the
  * printed or scm_string representation of an inexact number.
  */
-#define FLOBUFLEN (10+2*(sizeof(double)/sizeof(char)*SCM_CHAR_BIT*3+9)/10)
+#define FLOBUFLEN (40+2*(sizeof(double)/sizeof(char)*SCM_CHAR_BIT*3+9)/10)
 
 #if defined (SCO)
 #if ! defined (HAVE_ISNAN)
@@ -1848,19 +1848,71 @@
 #undef FUNC_NAME
 
 /*** NUMBERS -> STRINGS ***/
-int scm_dblprec;
-static const double fx[] =
-{  0.0,  5e-1,  5e-2,  5e-3,   5e-4, 5e-5,
-  5e-6,  5e-7,  5e-8,  5e-9,  5e-10,
- 5e-11, 5e-12, 5e-13, 5e-14,  5e-15,
- 5e-16, 5e-17, 5e-18, 5e-19,  5e-20};
+#define SCM_MAX_DBL_PREC  60
+#define SCM_MAX_DBL_RADIX 36
+
+/* this is an array starting with radix 2, and ending with radix SCM_MAX_DBL_RADIX */
+static int scm_dblprec[SCM_MAX_DBL_RADIX - 1];
+static double fx_per_radix[SCM_MAX_DBL_RADIX - 1][SCM_MAX_DBL_PREC];
+
+static
+void init_dblprec(int *prec, int radix) {
+   /* determine floating point precision by adding successively
+      smaller increments to 1.0 until it is considered == 1.0 */
+   double f = ((double)1.0)/radix;
+   double fsum = 1.0 + f;
+
+   *prec = 0;
+   while (fsum != 1.0)
+   {
+      if (++(*prec) > SCM_MAX_DBL_PREC)
+         fsum = 1.0;
+      else
+      {
+         f /= radix;
+         fsum = f + 1.0;
+      }
+   }
+   (*prec) -= 1;
+}
+
+static
+void init_fx_radix(double *fx_list, int radix)
+{
+  /* initialize a per-radix list of tolerances.  When added
+     to a number < 1.0, we can determine if we should raund
+     up and quit converting a number to a string. */
+   int i;
+   fx_list[0] = 0.0;
+   fx_list[1] = 0.5;
+   for( i = 2 ; i < SCM_MAX_DBL_PREC; ++i ) 
+     fx_list[i] = (fx_list[i-1] / radix);
+}
+
+/* use this array as a way to generate a single digit */
+static const char*number_chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 
 static size_t
-idbl2str (double f, char *a)
+idbl2str (double f, char *a, int radix)
 {
-  int efmt, dpt, d, i, wp = scm_dblprec;
-  size_t ch = 0;
-  int exp = 0;
+   int efmt, dpt, d, i, wp;
+   double *fx;
+#ifdef DBL_MIN_10_EXP
+   double f_cpy;
+   int exp_cpy;
+#endif /* DBL_MIN_10_EXP */
+   size_t ch = 0;
+   int exp = 0;
+
+   if(radix < 2 || 
+      radix > SCM_MAX_DBL_RADIX)
+   {
+      /* revert to existing behavior */
+      radix = 10;
+   }
+
+   wp = scm_dblprec[radix-2];
+   fx = fx_per_radix[radix-2];
 
   if (f == 0.0)
     {
@@ -1870,7 +1922,6 @@
       if (sgn < 0.0)
 	a[ch++] = '-';
 #endif
-
       goto zero;	/*{a[0]='0'; a[1]='.'; a[2]='0'; return 3;} */
     }
 
@@ -1896,10 +1947,15 @@
 
 #ifdef DBL_MIN_10_EXP  /* Prevent unnormalized values, as from 
 			  make-uniform-vector, from causing infinite loops. */
-  while (f < 1.0)
+  /* just do the checking...if it passes, we do the conversion for our
+     radix again below */
+  f_cpy = f;
+  exp_cpy = exp;
+
+  while (f_cpy < 1.0)
     {
-      f *= 10.0;
-      if (exp-- < DBL_MIN_10_EXP)
+      f_cpy *= 10.0;
+      if (exp_cpy-- < DBL_MIN_10_EXP)
 	{
 	  a[ch++] = '#';
 	  a[ch++] = '.';
@@ -1907,10 +1963,10 @@
 	  return ch;
 	}
     }
-  while (f > 10.0)
+  while (f_cpy > 10.0)
     {
-      f *= 0.10;
-      if (exp++ > DBL_MAX_10_EXP)
+      f_cpy *= 0.10;
+      if (exp_cpy++ > DBL_MAX_10_EXP)
 	{
 	  a[ch++] = '#';
 	  a[ch++] = '.';
@@ -1918,25 +1974,27 @@
 	  return ch;
 	}
     }
-#else
+#endif
+
   while (f < 1.0)
     {
-      f *= 10.0;
+      f *= radix;
       exp--;
     }
-  while (f > 10.0)
+  while (f > radix)
     {
-      f /= 10.0;
+      f /= radix;
       exp++;
     }
-#endif
-  if (f + fx[wp] >= 10.0)
+
+  if (f + fx[wp] >= radix)
     {
       f = 1.0;
       exp++;
     }
  zero:
-#ifdef ENGNOT
+#ifdef ENGNOT 
+  /* adding 9999 makes this equivalent to abs(x) % 3 */
   dpt = (exp + 9999) % 3;
   exp -= dpt++;
   efmt = 1;
@@ -1963,15 +2021,15 @@
     {
       d = f;
       f -= d;
-      a[ch++] = d + '0';
+      a[ch++] = number_chars[d];
       if (f < fx[wp])
 	break;
       if (f + fx[wp] >= 1.0)
 	{
-	  a[ch - 1]++;
+          a[ch - 1] = number_chars[d+1]; 
 	  break;
 	}
-      f *= 10.0;
+      f *= radix;
       if (!(--dpt))
 	a[ch++] = '.';
     }
@@ -2006,26 +2064,25 @@
 	  exp = -exp;
 	  a[ch++] = '-';
 	}
-      for (i = 10; i <= exp; i *= 10);
-      for (i /= 10; i; i /= 10)
+      for (i = radix; i <= exp; i *= radix);
+      for (i /= radix; i; i /= radix)
 	{
-	  a[ch++] = exp / i + '0';
+          a[ch++] = number_chars[exp / i];
 	  exp %= i;
 	}
     }
   return ch;
 }
 
-
 static size_t
-iflo2str (SCM flt, char *str)
+iflo2str (SCM flt, char *str, int radix)
 {
   size_t i;
   if (SCM_REALP (flt))
-    i = idbl2str (SCM_REAL_VALUE (flt), str);
+    i = idbl2str (SCM_REAL_VALUE (flt), str, radix);
   else
     {
-      i = idbl2str (SCM_COMPLEX_REAL (flt), str);
+      i = idbl2str (SCM_COMPLEX_REAL (flt), str, radix);
       if (SCM_COMPLEX_IMAG (flt) != 0.0)
 	{
 	  double imag = SCM_COMPLEX_IMAG (flt);
@@ -2033,7 +2090,7 @@
 	     NaN.  They will provide their own sign. */
 	  if (0 <= imag && !xisinf (imag) && !xisnan (imag))
 	    str[i++] = '+';
-	  i += idbl2str (imag, &str[i]);
+	  i += idbl2str (imag, &str[i], radix);
 	  str[i++] = 'i';
 	}
     }
@@ -2114,7 +2171,7 @@
   else if (SCM_INEXACTP (n))
     {
       char num_buf [FLOBUFLEN];
-      return scm_mem2string (num_buf, iflo2str (n, num_buf));
+       return scm_mem2string (num_buf, iflo2str (n, num_buf, base));
     }
   else
     SCM_WRONG_TYPE_ARG (1, n);
@@ -2129,7 +2186,7 @@
 scm_print_real (SCM sexp, SCM port, scm_print_state *pstate SCM_UNUSED)
 {
   char num_buf[FLOBUFLEN];
-  scm_lfwrite (num_buf, iflo2str (sexp, num_buf), port);
+  scm_lfwrite (num_buf, iflo2str (sexp, num_buf, 10), port);
   return !0;
 }
 
@@ -2138,7 +2195,7 @@
 
 {
   char num_buf[FLOBUFLEN];
-  scm_lfwrite (num_buf, iflo2str (sexp, num_buf), port);
+  scm_lfwrite (num_buf, iflo2str (sexp, num_buf, 10), port);
   return !0;
 }
 
@@ -5538,13 +5595,12 @@
 #undef FUNC_NAME
 
 #endif
-
 void
 scm_init_numbers ()
 {
+  int i;
   abs_most_negative_fixnum = scm_i_long2big (- SCM_MOST_NEGATIVE_FIXNUM);
   scm_permanent_object (abs_most_negative_fixnum);
-
   mpz_init_set_si (z_negative_one, -1);
 
   /* It may be possible to tune the performance of some algorithms by using
@@ -5559,25 +5615,17 @@
   scm_add_feature ("complex");
   scm_add_feature ("inexact");
   scm_flo0 = scm_make_real (0.0);
+
+  /* determine floating point precision */
+  for(i=2; i <= SCM_MAX_DBL_RADIX; ++i)
+    {
+      init_dblprec(&scm_dblprec[i-2],i);
+      init_fx_radix(fx_per_radix[i-2],i);
+    }
 #ifdef DBL_DIG
-  scm_dblprec = (DBL_DIG > 20) ? 20 : DBL_DIG;
-#else
-  {				/* determine floating point precision */
-    double f = 0.1;
-    double fsum = 1.0 + f;
-    while (fsum != 1.0)
-      {
-	if (++scm_dblprec > 20)
-	  fsum = 1.0;
-	else
-	  {
-	    f /= 10.0;
-	    fsum = f + 1.0;
-	  }
-      }
-    scm_dblprec = scm_dblprec - 1;
-  }
-#endif /* DBL_DIG */
+  /* hard code precision for base 10 if the preprocessor tells us to... */
+      scm_dblprec[10-2] = (DBL_DIG > 20) ? 20 : DBL_DIG;
+#endif
 
 #ifdef GUILE_DEBUG
   check_sanity ();

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-06 16:54                   ` Thien-Thi Nguyen
@ 2004-01-06 20:32                     ` Richard Todd
  0 siblings, 0 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-06 20:32 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 775 bytes --]

On Tue, Jan 06, 2004 at 05:54:38PM +0100, Thien-Thi Nguyen wrote:
>    From: Richard Todd <richardt@vzavenue.net>
>    Date: Mon, 5 Jan 2004 14:32:15 -0600
> 
>    Then perhaps you could critique the *interface* to the code I've put
>    out??  I agree that work on the interface would be more valuable than
>    if you found an off-by-1 error.  I'm not asking for that.
> 
> but that's what i'm doing already (if you up-scope and substitute
> "project" for "code" and "project management style" for "interface").
> this is probably not what you're asking for, so i'll bow out of this
> discussion now.


Well, then let me say that I'm sad to end such a pleasant exchange, 
if you substitute "thrilled" for "sad" and "frustrating" for "pleasant".    

:)


[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-04  2:02     ` Richard Todd
@ 2004-01-06 20:42       ` Richard Todd
  2004-01-06 21:20         ` Paul Jarc
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Todd @ 2004-01-06 20:42 UTC (permalink / raw)



[-- Attachment #1.1: Type: text/plain, Size: 1196 bytes --]

On Sat, Jan 03, 2004 at 08:02:18PM -0600, Richard Todd wrote:
> On Sat, Jan 03, 2004 at 01:19:49PM -0500, Clinton Ebadi wrote:
> > Grep the slib sources for all instances of "provide" and then generate a new 
> > file "std/slib/symbol-that-is-provided.scm" that does a (use-modules (ice-9 
> > slib)), does a (require 'symbol-that-is-provided) and then exports all the 
> > symbols in the current model to the outside world 
> 
<snip>
> 
> > (set-module-uses! %module-public-interface
> >                   (list (nested-ref the-root-module '(app modules std slib 
> > symbol-that-is-provided))))
> 
> I'm not familiar with the set-module-uses! interface, so I'm not sure
> what you are getting at there.  The guile info pages seem to be silent
> on them as well.  Any hints?
> 

I'm going to start investigating this in the guile code taday, but I thought 
I'd ask again in case someone can just tell me: What does that set-module-uses! 
expression quoted above mean?  I assume this is attempting to export the slib 
functions that were just 'require'd, right?  When I tried it verbatim (except
for symbol-that-is-provided, of course!) guile freaked out on me.

Richard

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: First look at Guile Std Library available
  2004-01-06 20:42       ` Richard Todd
@ 2004-01-06 21:20         ` Paul Jarc
  0 siblings, 0 replies; 60+ messages in thread
From: Paul Jarc @ 2004-01-06 21:20 UTC (permalink / raw)
  Cc: guile-user

Richard Todd <richardt@vzavenue.net> wrote:
>>> (set-module-uses! %module-public-interface
>>>                   (list (nested-ref the-root-module '(app modules std slib
>>> symbol-that-is-provided))))
...
> I'm going to start investigating this in the guile code taday, but I
> thought I'd ask again in case someone can just tell me: What does
> that set-module-uses!  expression quoted above mean?  I assume this
> is attempting to export the slib functions that were just
> 'require'd, right?

First, the nested-ref call resolves a name in the module hierarchy.
For example:
guile> (nested-ref the-root-module '(app modules srfi srfi-1))
#<directory (srfi srfi-1) 8085b90>
guile> (nested-ref the-root-module '(app modules srfi srfi-1 map))
#<procedure map (f list1 . rest)>

set-module-users! modifies %module-public-interface (i.e., the public
interface of the current module, where names are searched for by code
that uses this module) so that if something tries to look up a name in
%module-public-interface and it isn't directly there, then the search
will continue in the (list ...)  given.  But you might be better off
with module-use! than set-module-uses!.  See ice-9/boot-9.scm.


paul


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


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

* Re: First look at Guile Std Library available
  2004-01-05  4:28                 ` Richard Todd
  2004-01-05  5:19                   ` Paul Jarc
@ 2004-01-06 22:25                   ` Ludovic Courtès
  2004-01-06 23:53                     ` Richard Todd
  2004-01-16 20:17                   ` Andy Wingo
  2 siblings, 1 reply; 60+ messages in thread
From: Ludovic Courtès @ 2004-01-06 22:25 UTC (permalink / raw)
  Cc: guile-user, Paul Jarc, ttn

Hi,

On Sun, Jan 04, 2004 at 10:28:44PM -0600, Richard Todd wrote:
> Searching with google, I found a pretty good sounding proposal from 2001 
> by Martin Grabmueller for reorganizing ice-9 into a hierarchy a lot like 
> what I was working towards.  It even happened to have some of the same 
> names like (math primes) in it!  It was addressing other topics I have 
> yet to bring up, but planned to, such as putting srfi capabilities in 
> named modules and making (srfi srfi-XX) the alternate interface.

For features that are not defined in any SRFI, why not build on other
schemers' experience rather than write whole new interfaces?  Bigloo,
for instance, already has clean interfaces for various things including
bit manipulation, dates, object serialization, fair threads (à la GNU
Pth), parsing, etc.  It would also greatly contribute to portability
among Scheme interpreters and compilers.

My two cents.

Ludovic.


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


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

* Re: First look at Guile Std Library available
  2004-01-06 22:25                   ` Ludovic Courtès
@ 2004-01-06 23:53                     ` Richard Todd
  0 siblings, 0 replies; 60+ messages in thread
From: Richard Todd @ 2004-01-06 23:53 UTC (permalink / raw)
  Cc: guile-user, Paul Jarc, ttn


[-- Attachment #1.1: Type: text/plain, Size: 990 bytes --]

On Tue, Jan 06, 2004 at 11:25:25PM +0100, Ludovic Courtes wrote:
> For features that are not defined in any SRFI, why not build on other
> schemers' experience rather than write whole new interfaces?  Bigloo,
> for instance, already has clean interfaces for various things including
> bit manipulation, dates, object serialization, fair threads GNU
> Pth), parsing, etc.  It would also greatly contribute to portability
> among Scheme interpreters and compilers.

This has always been in the plans.  In my original posting I mentioned
attempting ports of pieces of both bigloo and PLT Scheme.  It makes
sense, I think, to leverage the designs of libraries from other
languages as well, if there's no scheme equivalent around, and
'schemify' them.

I was suprised at how hard some of this stuff has been to port,
though...especially when a scheme has different/more macro
capabilities than guile, I have to learn a lot about the other dialect
just to understand what they're doing!

Richard

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: number->string radix patch (Was Re: First look at Guile Std Library available)
  2004-01-06 18:41                         ` number->string radix patch (Was Re: First look at Guile Std Library available) Richard Todd
@ 2004-01-07  4:04                           ` Robert Uhl
  2004-01-07  5:26                             ` Richard Todd
  2004-05-10 20:34                           ` number->string radix patch Marius Vollmer
  1 sibling, 1 reply; 60+ messages in thread
From: Robert Uhl @ 2004-01-07  4:04 UTC (permalink / raw)


Cool!  It's always annoyed me how broken number->string was.

Of course, now my one idea for how to contribute to Guile is gone.  And
you managed to figure out the conversion code, too.  I've taken a look
at it before, but was never able to figure out how to hook in the Right
Thing.  Says something about my programming skills:-)

Seriously, thanks very much.  I really do hope that this makes it into
the main branch.

-- 
Robert Uhl <ruhl@4dv.net>
OTOH there are some of us in .UK who would rather like NAFTA to
become the North Atlantic Free-Trade Area, and for .UK to sign
up to it instead of us piddling around on the periphery of some
wannabe second-rate-superpower European bureaucracy that, in all
honesty, couldn't come to a consensus on how many primary colours
there are.                                               --Tanuki


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


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

* Re: number->string radix patch (Was Re: First look at Guile Std Library available)
  2004-01-07  4:04                           ` Robert Uhl
@ 2004-01-07  5:26                             ` Richard Todd
  2004-01-07 20:54                               ` Robert Uhl
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Todd @ 2004-01-07  5:26 UTC (permalink / raw)
  Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 1002 bytes --]

On Tue, Jan 06, 2004 at 09:04:03PM -0700, Robert Uhl wrote:
> Cool!  It's always annoyed me how broken number->string was.
> 
> Of course, now my one idea for how to contribute to Guile is gone. 

There's plenty of things that people can do!  And they definitely
don't have to be in libguile.  (I've been arguing for the last few
days that the most important work right now is actually _outside_, in
the reusable module arena).

> Seriously, thanks very much.  I really do hope that this makes it into
> the main branch.

You are welcome!  I took a couple days off to have my wisdom teeth
pulled, so I've had an odd combination of free time and poinkillers
for the last couple days.  Your mail got my attention last night, and
I couldn't resist giving it a try.

Please, if you haven't, do try this patch and tell me if you see any
problems with the conversions.  Once you agree that it seems to be
working, I'll clean it up and see if the maintainers want the change.

Richard 

[-- Attachment #1.2: Type: application/pgp-signature, Size: 186 bytes --]

[-- Attachment #2: Type: text/plain, Size: 139 bytes --]

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

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

* Re: number->string radix patch (Was Re: First look at Guile Std Library available)
  2004-01-07  5:26                             ` Richard Todd
@ 2004-01-07 20:54                               ` Robert Uhl
  2004-01-08  7:11                                 ` I get unknown immediate error in guile 1.7 Roland Orre
  0 siblings, 1 reply; 60+ messages in thread
From: Robert Uhl @ 2004-01-07 20:54 UTC (permalink / raw)


Richard Todd <richardt@vzavenue.net> writes:
>
> > Of course, now my one idea for how to contribute to Guile is gone. 
> 
> There's plenty of things that people can do!

Perhaps I should better have written, 'the one area I might have had
something to contribute in is now gone.'  I'm not very good at
programming, I'm afraid, despite how much I like it.  Sad but true.

The general radix conversion algorithm was the one thing I though I
might have a chance at.  Of course, I couldn't wrap my head around the
_old_ code, so that's really rather doubtful.

> Please, if you haven't, do try this patch and tell me if you see any
> problems with the conversions.

I'm afraid that I don't actually have an up-to-date guile installation
to test against.  Maybe this'll give me an incentive to do it.

The one thought I had was that it should be possible to do away with the
static array initialisation.  Maybe someday I'll be able to work on
_that_:-)

Once again, thanks for the good work.

-- 
Robert Uhl <ruhl@4dv.net>
The power of Satan is as nothing before the might of the Lord, so don't
go getting any ideas.                             --I Abyssinians 20:20


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


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

* I get unknown immediate error in guile 1.7
  2004-01-07 20:54                               ` Robert Uhl
@ 2004-01-08  7:11                                 ` Roland Orre
  2004-01-08 17:14                                   ` Roland Orre
  0 siblings, 1 reply; 60+ messages in thread
From: Roland Orre @ 2004-01-08  7:11 UTC (permalink / raw)


I've tried to get guile 1.7 work but I seem to have a problem with
loadable modules. As soon as I call a function in them I get an
"unknown-immediate" error. This possibly sounds like some include
problem but as far as I know tag principles has not changed between
1.6 and 1.7.

The most basic is readline of course as I haven't recompiled other
modules yet. About readline, the file "libtool" was not created by
autogen.sh in guile-readline so I linked to ../libtool instead.

If I load an old (1.6) libguilereadline I get segmentation fault, which
indicates some significant change. When I load the 1.7 libguilereadline
I get the errors below after (activate-readline), any ideas?
I've used gcc 3.3.2.

	Best regards
	Roland

guile-user> ERROR: In procedure apply:nconc2last:
ERROR: Wrong type argument in position 1: #<unknown-immediate 0x2974>
ABORT: (wrong-type-arg)
ERROR: In procedure %readline:
ERROR: readline is not reentrant
ABORT: (misc-error)
ERROR: In procedure %readline:
ERROR: readline is not reentrant
ABORT: (misc-error)
ERROR: In procedure %readline:
ERROR: readline is not reentrant
...



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


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

* Re: I get unknown immediate error in guile 1.7
  2004-01-08  7:11                                 ` I get unknown immediate error in guile 1.7 Roland Orre
@ 2004-01-08 17:14                                   ` Roland Orre
  2004-01-10 20:17                                     ` Kevin Ryde
  0 siblings, 1 reply; 60+ messages in thread
From: Roland Orre @ 2004-01-08 17:14 UTC (permalink / raw)


I solved the problem. It seems as linking (at least for me) is not done
in the right way for modules, neither for 1.6 or 1.7. Explanation below.

On Thu, 2004-01-08 at 08:11, Roland Orre wrote:
> I've tried to get guile 1.7 work but I seem to have a problem with
> loadable modules. As soon as I call a function in them I get an
> "unknown-immediate" error. This possibly sounds like some include
> problem but as far as I know tag principles has not changed between
> 1.6 and 1.7.
> 
> The most basic is readline of course as I haven't recompiled other
> modules yet. About readline, the file "libtool" was not created by
> autogen.sh in guile-readline so I linked to ../libtool instead.
> 
> If I load an old (1.6) libguilereadline I get segmentation fault, which
> indicates some significant change. When I load the 1.7 libguilereadline
> I get the errors below after (activate-readline), any ideas?
> I've used gcc 3.3.2.

The problem showed to be that guile loaded wrong libraries, which was
caused by the the correct library files not having been created. Guile
had been reading wrong libguilereadline.la all the time. I noticed this
when I deinstalled the (debian distributed) guile-1.6. Then the
libguilereadline.la library was not found for my locally compiled
guile-1.6 either, despite that I had included both
/usr/local/guile/guile-1.6.0/lib
/usr/local/guile/guile-1.6.0/guile-readline in the LTDL_LIBRARY_PATH.

I then relinked the readline.o file under guile-readline with
the settings I use for my own modules, then it worked. The make
script is at the end. The correct guile-1.6 libguilereadline
file was read and the same procedure worked for guile-1.7 as well.
The problem probably has to do with the guile-readline autogen.sh
but how this script works is above my head.

The fundamental problem seems to be that the installation linking
is not done in the right way. None of the .la files under the
lib directory (${exec_prefix}/lib) contains any library references.
Observe that I used the name "libgreadline" in the script.

Here are the error messages given.
After a normal make install, where LTDL library is set as:
export LTDL_LIBRARY_PATH=/usr/local/guile/guile-1.7/lib

I get the following (empty) error message:
  /usr/local/guile/guile-1.7/guile/1.7/ice-9/readline.scm:38:5:
  In procedure dynamic-link in expression 
  (load-extension "libguilereadline" "scm_init_readline"):
  /usr/local/guile/guile-1.7/guile/1.7/ice-9/readline.scm:38:5:
  file: "libguilereadline", message: ""

If I then also include /usr/local/guile/guile-1.7/guile-readline
first in the LTDL path, then I get the following error message:
 /usr/local/guile/guile-1.7/guile/1.7/ice-9/readline.scm:38:5:
 In procedure dynamic-link in expression
 (load-extension "libguilereadline" "scm_init_readline"):
 /usr/local/guile/guile-1.7/guile/1.7/ice-9/readline.scm:38:5:
 file: "libguilereadline", message: "|o\"@àÌ\x11\x08readline.a:
 cannot open shared object file: No such file or directory"

If I then run the make script below under guile-readline then
it works. This newly created .la files contains library references
to the .so files created under .libs. 
I also included my configuration parameters below.

Have I done anything obviously wrong in the configuration?

=============================================================
# This make file generates a working libguilereadline

top_builddir = /usr/local/guile/guile-1.6.0
libdir=/usr/local/guile/guile-latest/guile-readline/..//lib
LIBS=../libguile/libguile.la -lreadline -lncurses
EXTRA=-version-info 10:0:0 -export-dynamic -no-undefined
CC=gcc

all: libgreadline

libgreadline: readline.o
	echo sh ${top_builddir}/libtool --mode=link $(CC) $^ $(EXTRA) $(LIBS)
-rpath $(libdir) -o libgreadline.la
	sh ${top_builddir}/libtool --mode=link $(CC) $^ $(EXTRA) $(LIBS) 
-rpath $(libdir) -o libgreadline.la

=============================================================

#These are my configuration parameters:

GUILEROOT=`pwd`
echo ${GUILEROOT}

./configure --with-threads --with-readline \
 --prefix=${GUILEROOT}                  \
 --build=i686                           \
 --exec-prefix=${GUILEROOT}             \
 --bindir=${GUILEROOT}/bin              \
 --sbindir=${GUILEROOT}/bin             \
 --sysconfdir=${GUILEROOT}/etc          \
 --datadir=${GUILEROOT}                 \
 --sharedstatedir=${GUILEROOT}/com      \
 --localstatedir=${GUILEROOT}/var       \
 --includedir=${GUILEROOT}/include      \
 --oldincludedir=/usr/include           \
 --mandir=/usr/local/man                \
 --infodir=/usr/local/info              \
 --enable-maintainer-mode               \
 --enable-ltdl-install




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


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

* Re: I get unknown immediate error in guile 1.7
@ 2004-01-08 23:16 Roland Orre
  2004-01-09  0:05 ` Roland Orre
  0 siblings, 1 reply; 60+ messages in thread
From: Roland Orre @ 2004-01-08 23:16 UTC (permalink / raw)


I found the problem. It seems as linking (at least for me) is not done
in the right way for modules, neither for 1.6 or 1.7. Explanation below.

On Thu, 2004-01-08 at 08:11, Roland Orre wrote:
> I've tried to get guile 1.7 work but I seem to have a problem with
> loadable modules. As soon as I call a function in them I get an
> "unknown-immediate" error. This possibly sounds like some include
> problem but as far as I know tag principles has not changed between
> 1.6 and 1.7.
> 
> The most basic is readline of course as I haven't recompiled other
> modules yet. About readline, the file "libtool" was not created by
> autogen.sh in guile-readline so I linked to ../libtool instead.
> 
> If I load an old (1.6) libguilereadline I get segmentation fault, which
> indicates some significant change. When I load the 1.7 libguilereadline
> I get the errors below after (activate-readline), any ideas?
> I've used gcc 3.3.2.

The problem showed to be that guile loaded wrong libraries, which was
caused by the the correct library files not having been created. Guile
had been reading wrong libguilereadline.la all the time. I noticed this
when I deinstalled the (debian distributed) guile-1.6. Then the
libguilereadline.la library was not found for my locally compiled
guile-1.6 either, despite that I had included both
/usr/local/guile/guile-1.6.0/lib
/usr/local/guile/guile-1.6.0/guile-readline in the LTDL_LIBRARY_PATH.

I then relinked the readline.o file under guile-readline with
the settings I use for my own modules, then it worked. The make
script is at the end. The correct guile-1.6 libguilereadline
file was read and the same procedure worked for guile-1.7 as well.
The problem probably has to do with the guile-readline autogen.sh
but how this script works is above my head.

The fundamental problem seems to be that the installation linking
is not done in the right way. None of the .la files under the
lib directory (${exec_prefix}/lib) contains any library references.
Observe that I used the name "libgreadline" in the script.

Here are the error messages given.
After a normal make install, where LTDL library is set as:
export LTDL_LIBRARY_PATH=/usr/local/guile/guile-1.7/lib

I get the following (empty) error message:
  /usr/local/guile/guile-1.7/guile/1.7/ice-9/readline.scm:38:5:
  In procedure dynamic-link in expression 
  (load-extension "libguilereadline" "scm_init_readline"):
  /usr/local/guile/guile-1.7/guile/1.7/ice-9/readline.scm:38:5:
  file: "libguilereadline", message: ""

If I then also include /usr/local/guile/guile-1.7/guile-readline
first in the LTDL path, then I get the following error message:
 /usr/local/guile/guile-1.7/guile/1.7/ice-9/readline.scm:38:5:
 In procedure dynamic-link in expression
 (load-extension "libguilereadline" "scm_init_readline"):
 /usr/local/guile/guile-1.7/guile/1.7/ice-9/readline.scm:38:5:
 file: "libguilereadline", message: "|o\"@àÌ\x11\x08readline.a:
 cannot open shared object file: No such file or directory"

If I then run the make script below under guile-readline then
it works. This newly created .la files contains library references
to the .so files created under .libs. 
I also included my configuration parameters below.

Have I done anything obviously wrong in the configuration?

=============================================================
# This make file generates a working libguilereadline

top_builddir = /usr/local/guile/guile-1.6.0
libdir=/usr/local/guile/guile-latest/guile-readline/..//lib
LIBS=../libguile/libguile.la -lreadline -lncurses
EXTRA=-version-info 10:0:0 -export-dynamic -no-undefined
CC=gcc

all: libgreadline

libgreadline: readline.o
	sh ${top_builddir}/libtool --mode=link $(CC) $^ $(EXTRA) $(LIBS) \
-rpath $(libdir) -o libgreadline.la

=============================================================

#These are my configuration parameters:

GUILEROOT=`pwd`
echo ${GUILEROOT}

./configure --with-threads --with-readline \
 --prefix=${GUILEROOT}                  \
 --build=i686                           \
 --exec-prefix=${GUILEROOT}             \
 --bindir=${GUILEROOT}/bin              \
 --sbindir=${GUILEROOT}/bin             \
 --sysconfdir=${GUILEROOT}/etc          \
 --datadir=${GUILEROOT}                 \
 --sharedstatedir=${GUILEROOT}/com      \
 --localstatedir=${GUILEROOT}/var       \
 --includedir=${GUILEROOT}/include      \
 --oldincludedir=/usr/include           \
 --mandir=/usr/local/man                \
 --infodir=/usr/local/info              \
 --enable-maintainer-mode               \
 --enable-ltdl-install




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


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

* Re: I get unknown immediate error in guile 1.7
  2004-01-08 23:16 I get unknown immediate error in guile 1.7 Roland Orre
@ 2004-01-09  0:05 ` Roland Orre
  0 siblings, 0 replies; 60+ messages in thread
From: Roland Orre @ 2004-01-09  0:05 UTC (permalink / raw)


Sorry all, the problem was my fault. I had given to many (and obviously
some erroneous) parameters to configure. When I gave only a few
necessary parameters it worked very well, all module .so files were
created.
	Best regards
	Roland


On Fri, 2004-01-09 at 00:16, Roland Orre wrote:
> I found the problem. It seems as linking (at least for me) is not done
> in the right way for modules, neither for 1.6 or 1.7. Explanation below.
<snip>
> =============================================================
> 
> #These are my configuration parameters:
> 
> GUILEROOT=`pwd`
> echo ${GUILEROOT}
> 
> ./configure --with-threads --with-readline \
>  --prefix=${GUILEROOT}                  \
>  --build=i686                           \
>  --exec-prefix=${GUILEROOT}             \
>  --bindir=${GUILEROOT}/bin              \
>  --sbindir=${GUILEROOT}/bin             \
>  --sysconfdir=${GUILEROOT}/etc          \
>  --datadir=${GUILEROOT}                 \
>  --sharedstatedir=${GUILEROOT}/com      \
>  --localstatedir=${GUILEROOT}/var       \
>  --includedir=${GUILEROOT}/include      \
>  --oldincludedir=/usr/include           \
>  --mandir=/usr/local/man                \
>  --infodir=/usr/local/info              \
>  --enable-maintainer-mode               \
>  --enable-ltdl-install




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


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

* Re: I get unknown immediate error in guile 1.7
  2004-01-08 17:14                                   ` Roland Orre
@ 2004-01-10 20:17                                     ` Kevin Ryde
  0 siblings, 0 replies; 60+ messages in thread
From: Kevin Ryde @ 2004-01-10 20:17 UTC (permalink / raw)


Roland Orre <roland.orre@neurologic.se> writes:
>
> The problem showed to be that guile loaded wrong libraries, which was
> caused by the the correct library files not having been created. Guile
> had been reading wrong libguilereadline.la all the time.

I think I might have struck that too, but with debian guile 1.4
getting in the way of cvs guile.

I had an idea I thought the guile library search path ought to include
its configured $prefix/lib ahead of /usr/lib, but I forget exactly.

Library versioning is probably supposed to protect against some of
this sort of thing.  Dunno what the status on that currently is
though.


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


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

* Re: First look at Guile Std Library available
  2004-01-05  4:28                 ` Richard Todd
  2004-01-05  5:19                   ` Paul Jarc
  2004-01-06 22:25                   ` Ludovic Courtès
@ 2004-01-16 20:17                   ` Andy Wingo
  2 siblings, 0 replies; 60+ messages in thread
From: Andy Wingo @ 2004-01-16 20:17 UTC (permalink / raw)


Hi Richard,

Sorry I didn't respond when the thread was fresh, I was on holiday...

On Sun, 04 Jan 2004, Richard Todd wrote:

> Paul Jarc wrote:
> >As long as the code exists, I don't think there's much benefit in
> >aggregating it.  It just has to be easy for users to find.
> 
> Ok, I am definitely starting to feel like a stranger in a strange land, 
> here.

It's weird, no? I too am a newcomer to the scheme world (I'm a GNOME
hacker, really) and I'm baffled by the response. It's just so damn easy
to make a perl module, pop it up on CPAN, and have it available to
anyone with the base CPAN installation. It is one of the key factors in
perl's ascendence as a scripting language. I agree that it's desirable
for Guile, especially once you start to write apps in Guile itself. And
what a waste to write something and have it languish on a forgotten web
page.

So I share your spirit. I do have a concern about versioning, however.
Versioning the whole thing will be unwieldy as the package expands in
size. Then we have the problem of guile modules that link to C libraries
that may or may not be available, or whose available versions correspond
to only one module interface. It becomes clear that a provide/require
interface is needed as well, although it might not be implemented by
SLIB.

 [ SLIB's virtue and weakness is that it is a cathedral product. Virtue,
   because you know it's well designed and stable, but weakness because
   you or I don't feel attracted to contributing, especially
   contributing modules whose code is useful but maybe weaker than
   Jaffer's. ]

OK, punt the question about C library-backed guile modules for another
day. But for changing interfaces in scheme modules, what is needed is a
versioned `use-modules', maybe like (use-modules (math primes 1)).

Actually now that I think about it you can play nifty tricks with this.
Maybe you have a 1.2 and a 1.1 series of your primes module. So you
have

(define-module (math primes 1 1))
... code ...

(define-module (math primes 1 2))
... interface is different ...

Then you can have

(define-module (math primes 1))
;; re-export the interface of the latest version in the 1.x series
(module-use! (current-module) (resolve-interface '(math primes 1 2)))

(define-module (math primes))
;; The 1.x series is the latest one
(module-use! (current-module) (resolve-interface '(math primes 1)))

So, use (math primes) while you're developing, but then before you
release change the use-modules statement on your code to reflect the
version you are using. It's kindof like linking, I guess. Still a PITA
though.

My concern is that we don't fall in the pit of having to change module
names (think (use (gfxlib sdl1.3debian+4)) or something). Maybe my
concern is overblown, like this isn't such a big deal in interpreted
languages or something.

So thoughts about versioning in general, and this method in particular?

Regards,

wingo.


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


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

* Re: number->string radix patch
  2004-01-06 18:41                         ` number->string radix patch (Was Re: First look at Guile Std Library available) Richard Todd
  2004-01-07  4:04                           ` Robert Uhl
@ 2004-05-10 20:34                           ` Marius Vollmer
  2004-05-11  3:16                             ` Richard Todd
                                               ` (2 more replies)
  1 sibling, 3 replies; 60+ messages in thread
From: Marius Vollmer @ 2004-05-10 20:34 UTC (permalink / raw)
  Cc: Robert Uhl, guile-user

Richard Todd <richardt@vzavenue.net> writes:

> On Mon, Jan 05, 2004 at 06:36:07PM -0700, Robert Uhl wrote:
>> Although my one true project is to figure out number->string well enough
>> to make it Do the Right Thing for decimals in bases other than 10 (I'm a
>> big fan of duodecimal).
>
> I've seen this wish twice from you in the short time I've been
> watching guile-user, so I took a crack at it.

Ok, I have finally installed your patch.  Thanks again!  (I wrote a
basic ChangeLog entry, but please do that yourself for the next
patch.)

I used your examples as test cases, but cannot reproduce some:

> guile> (number->string 0.25 2)
> "0.01"
> guile> (number->string 11.33333333333333333 12)
> "B.4"
> guile> (number->string 1.324e44 16)
> "5.EFE0A14FAFEe24"

I get

  guile> (number->string 0.25 2)
  "0.010"
  guile> (number->string 11.33333333333333333 12)
  "B.400000000000009"
  guile> (number->string 1.324e44 16)
  "5.EFE0A14FAFDF8e24"

The first looks certainly wrong, but I'm not sure about the other two.
Richard, could you try to investigate this?

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


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


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

* Re: number->string radix patch
  2004-05-10 20:34                           ` number->string radix patch Marius Vollmer
@ 2004-05-11  3:16                             ` Richard Todd
  2004-05-11  3:51                             ` Keith Wright
  2004-05-11  5:23                             ` Richard Todd
  2 siblings, 0 replies; 60+ messages in thread
From: Richard Todd @ 2004-05-11  3:16 UTC (permalink / raw)
  Cc: Robert Uhl, guile-user

On May 10, 2004, at 3:34 PM, Marius Vollmer wrote:

[...test case results snipped...]
> The first looks certainly wrong, but I'm not sure about the other two.
> Richard, could you try to investigate this?

It could be architecture differences?  I run on Macintoshes...  Or 
maybe something in the last few months has interfered... I will look 
into this tomorrow night.  Thanks for installing this!

Richard



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


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

* Re: number->string radix patch
  2004-05-10 20:34                           ` number->string radix patch Marius Vollmer
  2004-05-11  3:16                             ` Richard Todd
@ 2004-05-11  3:51                             ` Keith Wright
  2004-05-27 21:56                               ` Kevin Ryde
  2004-06-10 16:34                               ` Marius Vollmer
  2004-05-11  5:23                             ` Richard Todd
  2 siblings, 2 replies; 60+ messages in thread
From: Keith Wright @ 2004-05-11  3:51 UTC (permalink / raw)
  Cc: ruhl, guile-user

> From: Marius Vollmer <mvo@zagadka.de>
> Cc: Robert Uhl <ruhl@4dv.net>, guile-user@gnu.org
> 
> Richard Todd <richardt@vzavenue.net> writes:
> 
> Ok, I have finally installed your patch.  Thanks again!  (I wrote a
> basic ChangeLog entry, but please do that yourself for the next
> patch.)
> 
> I used your examples as test cases, but cannot reproduce some:
       <two deleted> 
>   guile> (number->string 1.324e44 16)
>   "5.EFE0A14FAFDF8e24"
> 
> The first looks certainly wrong, but I'm not sure about the other two.
> Richard, could you try to investigate this?

The third one worries me too.  Does this use the case of the
#\E (or #\e) to differentiate a hex digit from an exponent marker?
Scheme (or SCHEME) is supposed to be case insensitive, and I would
not want to break that useful and expected propery just to get this
rather special purpose "extension".

Maybe, since the Scheme report does not specify an exponent mark for
hex numbers, some other character should be chosen (after all, it no
longer means ten-to-the-power, but rather sixteen-to-the-power).  Or
else hex constants could be required to have an exponent marker of
either S (short) or L (long).  Unfortunately F and D (single and
double) have the same problem as E

Does this patch also change STRING->NUMBER to accept the extended
syntax?  What about in program text?

       -- Keith



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


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

* Re: number->string radix patch
  2004-05-10 20:34                           ` number->string radix patch Marius Vollmer
  2004-05-11  3:16                             ` Richard Todd
  2004-05-11  3:51                             ` Keith Wright
@ 2004-05-11  5:23                             ` Richard Todd
  2004-05-27 21:54                               ` Kevin Ryde
  2004-06-10 16:47                               ` Marius Vollmer
  2 siblings, 2 replies; 60+ messages in thread
From: Richard Todd @ 2004-05-11  5:23 UTC (permalink / raw)
  Cc: Robert Uhl, guile-user

I built guile from CVS on my Mac G5, and I get the same results I did 
originally:

/tmp/bldguile richardt$ guile
guile> (number->string 0.25 2)
"0.01"
guile>  (number->string 11.33333333333333333 12)
"B.4"
guile> (number->string 1.324e44 16)
"5.EFE0A14FAFEe24"
guile>

I had done the original patch on a G4 machine.  I'm thinking it's a 
precision difference between macs and intel machines.  Those second two 
answers are only different in the least significant numbers, which 
looks like different amounts of rounding error to me.  Someone with an 
intel box may be able to do some tuning of the tolerance parameters in 
the algorithm.  I'd be happy to help in any way I can, but it may be an 
unavoidable difference.


On May 10, 2004, at 3:34 PM, Marius Vollmer wrote:

> Richard Todd <richardt@vzavenue.net> writes:
>
>> On Mon, Jan 05, 2004 at 06:36:07PM -0700, Robert Uhl wrote:
>>> Although my one true project is to figure out number->string well 
>>> enough
>>> to make it Do the Right Thing for decimals in bases other than 10 
>>> (I'm a
>>> big fan of duodecimal).
>>
>> I've seen this wish twice from you in the short time I've been
>> watching guile-user, so I took a crack at it.
>
> Ok, I have finally installed your patch.  Thanks again!  (I wrote a
> basic ChangeLog entry, but please do that yourself for the next
> patch.)
>
> I used your examples as test cases, but cannot reproduce some:
>
>> guile> (number->string 0.25 2)
>> "0.01"
>> guile> (number->string 11.33333333333333333 12)
>> "B.4"
>> guile> (number->string 1.324e44 16)
>> "5.EFE0A14FAFEe24"
>
> I get
>
>   guile> (number->string 0.25 2)
>   "0.010"
>   guile> (number->string 11.33333333333333333 12)
>   "B.400000000000009"
>   guile> (number->string 1.324e44 16)
>   "5.EFE0A14FAFDF8e24"
>
> The first looks certainly wrong, but I'm not sure about the other two.
> Richard, could you try to investigate this?
>
> -- 
> GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3  331E FAF8 226A D5D4 E405
>



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


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

* Re: number->string radix patch
  2004-05-11  5:23                             ` Richard Todd
@ 2004-05-27 21:54                               ` Kevin Ryde
  2004-06-10 16:47                               ` Marius Vollmer
  1 sibling, 0 replies; 60+ messages in thread
From: Kevin Ryde @ 2004-05-27 21:54 UTC (permalink / raw)
  Cc: guile-user

Richard Todd <richardt@vzavenue.net> writes:
>
> Those second
> two answers are only different in the least significant numbers, which
> looks like different amounts of rounding error to me.

Neither input nor output code keeps a tight rein on accuracy as far as
I can tell, it loses on decimal I think.

But what's not good is that there's some rounding in hex output, for
instance

	(number->string #i#x1FFFFFFFFFFFF 16)
	=> "2.0eC"

where I expected "1.FFFFFFFFFFFFeC" or whatever.  Non-power-of-2 bases
are going to round, but I'd have thought an important point for power
of 2 bases would be that they don't round.

I haven't tried to look where it goes wrong, but this is on my i386
debian, built with CFLAGS=-g (ie. no optimizations).  I added some
printfs into idbl2str and saw the value from the input is correct,
ie. contains lots of 1 bits, the rounding to 2.0 is apparently in the
output.


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


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

* Re: number->string radix patch
  2004-05-11  3:51                             ` Keith Wright
@ 2004-05-27 21:56                               ` Kevin Ryde
  2004-06-10 16:35                                 ` Marius Vollmer
  2004-06-10 16:34                               ` Marius Vollmer
  1 sibling, 1 reply; 60+ messages in thread
From: Kevin Ryde @ 2004-05-27 21:56 UTC (permalink / raw)


Keith Wright <kwright@free-comp-shop.com> writes:
>
> Does this use the case of the
> #\E (or #\e) to differentiate a hex digit from an exponent marker?

That worries me a bit too.  It's also vital to have a proper
description in the manual, since this is an extension over r5rs.


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


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

* Re: number->string radix patch
  2004-05-11  3:51                             ` Keith Wright
  2004-05-27 21:56                               ` Kevin Ryde
@ 2004-06-10 16:34                               ` Marius Vollmer
  1 sibling, 0 replies; 60+ messages in thread
From: Marius Vollmer @ 2004-06-10 16:34 UTC (permalink / raw)
  Cc: ruhl, guile-user

Keith Wright <kwright@free-comp-shop.com> writes:

> [...] Does this use the case of the #\E (or #\e) to differentiate a
> hex digit from an exponent marker?  Scheme (or SCHEME) is supposed
> to be case insensitive, and I would not want to break that useful
> and expected propery just to get this rather special purpose
> "extension".

This is not an extension to Scheme syntax, only number->string has
been extended.  The reader can not read non-decimal floating point
numbers, and probably shouldn't try to.  Also, 'write' and 'display'
will not produce new non-standard number syntax.

So, this is maybe not such a problem as you are fearing.  It is a
useful, compatible extension of number->string.

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


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


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

* Re: number->string radix patch
  2004-05-27 21:56                               ` Kevin Ryde
@ 2004-06-10 16:35                                 ` Marius Vollmer
  0 siblings, 0 replies; 60+ messages in thread
From: Marius Vollmer @ 2004-06-10 16:35 UTC (permalink / raw)
  Cc: guile-user

Kevin Ryde <user42@zip.com.au> writes:

> Keith Wright <kwright@free-comp-shop.com> writes:
>>
>> Does this use the case of the
>> #\E (or #\e) to differentiate a hex digit from an exponent marker?
>
> It's also vital to have a proper
> description in the manual, since this is an extension over r5rs.

Yes, definitely.  (I'll see to this.)

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


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


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

* Re: number->string radix patch
  2004-05-11  5:23                             ` Richard Todd
  2004-05-27 21:54                               ` Kevin Ryde
@ 2004-06-10 16:47                               ` Marius Vollmer
  2004-06-11  1:40                                 ` Kevin Ryde
  1 sibling, 1 reply; 60+ messages in thread
From: Marius Vollmer @ 2004-06-10 16:47 UTC (permalink / raw)
  Cc: Robert Uhl, guile-user

Richard Todd <richardt@vzavenue.net> writes:

> I had done the original patch on a G4 machine.  I'm thinking it's a
> precision difference between macs and intel machines.

For me, the difference is between compiling with optimization and
without.

Compiled with gcc 3.3.3 (Debian 20040422) on i386, CFLAGS=-g:

  guile> (number->string 0.25 2)
  "0.01"

Compiled with CFLAGS=-O2:

  guile> (number->string 0.25 2)
  "0.010"

So, what can we do about this?

Reliable floating point reading and writing can be tricky, and we will
eventually need to improve our routines anyway, see

  http://lists.gnu.org/archive/html/guile-devel/2002-05/msg00021.html

For now, I'm inclined to mark the tests as unresolved.

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


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


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

* Re: number->string radix patch
  2004-06-10 16:47                               ` Marius Vollmer
@ 2004-06-11  1:40                                 ` Kevin Ryde
  0 siblings, 0 replies; 60+ messages in thread
From: Kevin Ryde @ 2004-06-11  1:40 UTC (permalink / raw)
  Cc: guile-user

Marius Vollmer <mvo@zagadka.de> writes:
>
> For me, the difference is between compiling with optimization and
> without.

On i386 with optimization you get a few extra bits of precision
because gcc holds values in the 8087 registers.  Without optimization
it writes back to memory after every op, forcing rounding at each
stage.

(Unoptimized is still not always the same as an actual 53-bit chip
like ppc, since there's two roundings, first to 64 bits then to 53.)


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


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

end of thread, other threads:[~2004-06-11  1:40 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-01-02  5:21 First look at Guile Std Library available Richard Todd
2004-01-02  9:29 ` Dale Mellor
2004-01-03  1:03   ` Richard Todd
2004-01-03  2:25     ` Andreas Rottmann
2004-01-03 15:00       ` Dale Mellor
2004-01-03 14:36     ` Dale Mellor
2004-01-03 22:42       ` Richard Todd
2004-01-03 16:38 ` Thien-Thi Nguyen
2004-01-03 16:48   ` Nic Ferrier
2004-01-03 22:18     ` Richard Todd
2004-01-04  1:49       ` Thien-Thi Nguyen
2004-01-04  3:50         ` Richard Todd
2004-01-04 12:59           ` Thien-Thi Nguyen
     [not found]             ` <16376.5782.10995.206284@l.a>
2004-01-04 14:17               ` Dale Mellor
2004-01-04 21:51             ` Richard Todd
2004-01-05  0:30               ` Andreas Rottmann
2004-01-05  5:00                 ` Richard Todd
2004-01-05 16:03                   ` Robert Uhl
2004-01-05 20:01                     ` Richard Todd
2004-01-06  1:36                       ` Robert Uhl
2004-01-06 18:41                         ` number->string radix patch (Was Re: First look at Guile Std Library available) Richard Todd
2004-01-07  4:04                           ` Robert Uhl
2004-01-07  5:26                             ` Richard Todd
2004-01-07 20:54                               ` Robert Uhl
2004-01-08  7:11                                 ` I get unknown immediate error in guile 1.7 Roland Orre
2004-01-08 17:14                                   ` Roland Orre
2004-01-10 20:17                                     ` Kevin Ryde
2004-05-10 20:34                           ` number->string radix patch Marius Vollmer
2004-05-11  3:16                             ` Richard Todd
2004-05-11  3:51                             ` Keith Wright
2004-05-27 21:56                               ` Kevin Ryde
2004-06-10 16:35                                 ` Marius Vollmer
2004-06-10 16:34                               ` Marius Vollmer
2004-05-11  5:23                             ` Richard Todd
2004-05-27 21:54                               ` Kevin Ryde
2004-06-10 16:47                               ` Marius Vollmer
2004-06-11  1:40                                 ` Kevin Ryde
2004-01-05 10:08                 ` First look at Guile Std Library available Dale Mellor
2004-01-05  3:39               ` Paul Jarc
2004-01-05  4:28                 ` Richard Todd
2004-01-05  5:19                   ` Paul Jarc
2004-01-06 22:25                   ` Ludovic Courtès
2004-01-06 23:53                     ` Richard Todd
2004-01-16 20:17                   ` Andy Wingo
2004-01-05 14:00               ` Thien-Thi Nguyen
2004-01-05 20:32                 ` Richard Todd
2004-01-05 20:59                   ` Dale P. Smith
2004-01-06 16:54                   ` Thien-Thi Nguyen
2004-01-06 20:32                     ` Richard Todd
2004-01-03 18:19   ` Clinton Ebadi
2004-01-03 20:12     ` Thien-Thi Nguyen
2004-01-04  2:02     ` Richard Todd
2004-01-06 20:42       ` Richard Todd
2004-01-06 21:20         ` Paul Jarc
2004-01-03 22:52   ` Richard Todd
2004-01-04  1:53     ` Thien-Thi Nguyen
2004-01-04 20:34 ` Arno Peters
2004-01-05 20:12   ` Richard Todd
  -- strict thread matches above, loose matches on Subject: below --
2004-01-08 23:16 I get unknown immediate error in guile 1.7 Roland Orre
2004-01-09  0:05 ` Roland Orre

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