Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-05-06 Thread Phil Bewig
I did not consider the stream-ext library in the design of SRFI-41.  In
general, as explained in the SRFI, I designed SRFI-41 according to the
advice of Antoine de Saint-Exupéry: *Il semble que la perfection soit
atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus
rien à retrancher*.  (“Perfection is achieved, not when there is nothing
more to add, but when there is nothing left to take away.”)  And I think I
got a couple of things wrong -- if I was to rewrite SRFI-41 today, I would
take away even more.

Streams are not lists.  Scheme ensures there are substantial disadvantages
to using streams rather than lists, due to the underlying promises that
require numerous type conversions, so streams should be used only when the
sequence of elements is truly infinite (such as mathematical series) or when
there is some clear advantage of laziness (such as reducing the number of
passes through a large data set).  Writing a library that duplicates SRFI-1
for streams seems to me to be folly.

I looked briefly at your list of suggested extensions.  A few may be useful
for a modest extension library, if you have in mind a particular set of uses
--  some of the examples in the SRFI, such as stream-partition, fall into
this category.  Some certainly don't belong in a general-purpose library --
if you need symbol-stream to convert the name of a symbol into a stream of
characters, you can write it as part of your program.  Many -- such as
stream-butlast -- make sense only for lists (which are materialized in their
entirety) and not for streams (which may never be materialized).  I find it
amusing that you consider stream-vector and vector-stream, since the pure
FP people have such trouble with mutable arrays.  And even the design is
poor -- stream-butlast-n should almost certainly be merged into
stream-butlast with an optional argument, but stream-reverse shouldn't also
optionally append a list (or is it a stream?).

You say that it is so obvious that all these functions should be included
that you won't waste your time justifying it, but to me it is anything but
obvious -- in fact, it is obvious to me that some of the functions you
mentioned should never exist in the context of streams implemented for
Scheme, much less be included in a standard library.  On the other hand, in
the context of streams implemented for Haskell, it may make sense to include
some of the list-oriented functions, since Haskell has no finite-list type
and uses streams in its place.  Remember: streams are not lists.

You are of course free to use SRFI-41 as the basis for an extended library
of stream functions.  I ask only that you do not call it streams, or
streams-primitive, or streams-derived, so as not to cause confusion with the
SRFI.  I also recommend that you switch over as soon as possible from the
deprecated SRFI-40 to SRFI-41.

By the way, you should have mentioned as you critiqued SRFI-41 that you are
the author of stream-ext.

Phil

On Tue, May 5, 2009 at 9:16 PM, Alejandro Forero Cuervo 
a...@freaks-unidos.net wrote:

  SRFI-40 is deprecated due to a memory leak.  Please port SRFI-41 instead,
  and adapt any code that uses SRFI-40 to the new interface.

 Did you, during the design of srfi-41, consider the existance of the
 stream-ext library, which implements a lot of stream functions on top
 of srfi-40?

 http://chicken.wiki.br/eggref/3/stream-ext

 It's first version was released a long time before srfi-41 and only
 small changes have been made since then.  The naming conventions and
 the semantics match those of srfi-1 as close as possible, to make
 things as consistent as possible.

 I've used the stream-ext library in many applications that represent
 strings as streams of characters throughout.  The largest of these is
 probably Svnwiki.

 I'm worried about the incompatibilities I see between stream-ext and
 srfi-41.  My concerns are the following:

 1. srfi-41 provides a very small subset of the functionality that I
 think that any program that uses streams significantly will need.  As
 such, I think it fails significantly at providing syntax derived from
 those primitives that permits convenient expression of stream
 operations.  Most of the functions I list below can be implemented in
 a portable manner, as stream-ext does.  To be fair, srfi-41 does seem
 to provide some functions that stream-ext does not.

 2. More importantly (the previous concern can be solved with an
 additional library), a small portion of the interface exported by
 srfi-41 differs from that in the stream-ext library.  I provide some
 cases below and explain why I believe the semantics from stream-ext
 are slightly preferable, mostly because of consistency with the srfi-1
 list-based counterparts.  I quite like the interface of srfi-1 and I
 find that, by providing inconsistent counterparts, srfi-41 is making
 it slightly harder to use streams than stream-ext.

 I may be the person who has written the most Scheme code using srfi-40
 

Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-05-06 Thread Alex Shinn
Hi,

Phil Bewig pbe...@gmail.com writes:

 Streams are not lists.  Scheme ensures there are
 substantial disadvantages to using streams rather than
 lists, due to the underlying promises that require
 numerous type conversions, so streams should be used only
 when the sequence of elements is truly infinite (such as
 mathematical series) or when there is some clear advantage
 of laziness (such as reducing the number of passes through
 a large data set).

I also find that any data structure in general which is
built on I/O works well as a stream.  For the current NLP
app I'm working on, I need to build a parse graph from a
port.  Slurping up the whole input at once could require too
much memory, and also would prevent the parser acting as a
proper (buffered) Unix filter.  On the other hand, since the
algorithm for determining how much text I need to work with
is dynamic, I can't just read chunks at a time (the basic
unit I want to work on is a sentence, but I don't know what
a sentence is until the parse is finished).  So I build the
graph as a lazy stream of nodes, and the algorithm
transparently expands only as much input as needed.

From what I've seen Alejandro also uses streams primarily
with I/O - it's a very natural combination.

 Writing a library that duplicates SRFI-1 for streams seems
 to me to be folly.

Well, if you have streams at all, even if they are only
suited to a special class of algorithms, it makes sense to
provide a complete library of basic operations.  Otherwise
people will continuously reinvent the same utilities, and
sometimes get them wrong.

In fact, it is specifically desirable to provide an exact
match of the SRFI-1 API for easy conversions and
comparisons.  In any module system with import prefixing
(including Chicken 4), you can write everything with a
stream- prefix and swap the backend from streams to lists
with:

  (import srfi-41)
  (import (prefix stream-) srfi-1)

Going the other direction (writing for SRFI-1 but then
switching to streams) is only a little more verbose,
requiring renaming of the individual identifiers you use.

 Some certainly don't belong in a general-purpose library
 -- if you need symbol-stream to convert the name of a
 symbol into a stream of characters, you can write it as
 part of your program.

Sure:

   (define (symbol-stream sym)
 (string-stream (symbol-string sym)))

That's just trivial and probably borderline enough that it
isn't needed in the library.  string-stream or equivalent
functionality should be included, though, because the most
efficient implementation of this may vary wildly depending
on the Scheme implementation.

However, the name may be unintuitive if you're not coming
from a streams as I/O perspective.  It may be both simpler
to specify and easier to understand if you replace most of
the foo-stream procedures with:

  (write-to-character-stream object)
  (display-to-character-stream object)

 Many -- such as stream-butlast -- make sense only for
 lists (which are materialized in their entirety) and not
 for streams (which may never be materialized).

I think it's a little unfair to pick on stream-butlast when
SRFI-41 includes stream-length, stream-list,
stream-reverse, etc.  As you yourself say, not all streams
are infinite, and for finite streams these can be useful.
Otherwise you'll repeatedly find people who when working
entirely with streams (for type signature compatibility, and
because all of their utilities are designed for streams, not
lists), write things like

  (list-stream (butlast (stream-list stream)))

when they really do need all but the last element of a
stream they know to be finite.

[I would argue the name and API should be changed to
stream-drop-right to match SRFI-1, though.]

Now, if you want to argue that the SRFI-1 API is too large,
that's another story :)

-- 
Alex


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-05-06 Thread Alejandro Forero Cuervo
  Streams are not lists.  Scheme ensures there are
  substantial disadvantages to using streams rather than
  lists, due to the underlying promises that require
  numerous type conversions, so streams should be used only
  when the sequence of elements is truly infinite (such as
  mathematical series) or when there is some clear advantage
  of laziness (such as reducing the number of passes through
  a large data set).
 
 I also find that any data structure in general which is
 built on I/O works well as a stream.  For the current NLP
 app I'm working on, I need to build a parse graph from a
 port.  Slurping up the whole input at once could require too
 much memory, and also would prevent the parser acting as a
 proper (buffered) Unix filter.  On the other hand, since the
 algorithm for determining how much text I need to work with
 is dynamic, I can't just read chunks at a time (the basic
 unit I want to work on is a sentence, but I don't know what
 a sentence is until the parse is finished).  So I build the
 graph as a lazy stream of nodes, and the algorithm
 transparently expands only as much input as needed.
 
 From what I've seen Alejandro also uses streams primarily
 with I/O - it's a very natural combination.

Just thought I'd mention another example where I do this, which I feel
is relevant to this discussion: http://wiki.freaks-unidos.net/xc, my
command-line calculator.

The whole lexing/parsing is done using streams: the input is received
by the lexer as a stream of characters and turned into a stream of
tokens (by procedure 'lexer'); the parser itself receives this stream
of tokens and returns a stream with the numbers that should be printed
(by procedure 'parse-input').  The whole evaluation of the input is
thus simply (and here I'm quoting verbatim):

  (stream-for-each
(lambda (obj)
  (if (number? obj)
(output-num obj)
(format #t ~S~% obj)))
(parse-input (lexer (port-stream

Very clean, isn't it?  All is evaluated lazily, allowing things such
as output-num to be redefined during the evaluation, to output numbers
in a different formats.

Given the primitives provided by stream-ext and stream-parser, xc does
not have to add complexity of its own to handle streams but can deal
exclusively with the problem it attacks, of evaluating arithmetic
expressions and such.

And, obviously, the sequence of elements in these streams is finite
and, even if the tricks such as redefining output-num didn't matter,
using streams instead of lists still has the advantage that Alex Shinn
mentions of loading elements from the input lazily.  Perhaps more
importantly, it also produces the output as soon as it is available
(so that one can actually use the calculator interactively and see the
result of an expression immediately after entering it).

Alejo.
http://azul.freaks-unidos.net/


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-05-06 Thread Phil Bewig
On Wed, May 6, 2009 at 4:56 PM, Alex Shinn alexsh...@gmail.com wrote:

 Hi,

 Phil Bewig pbe...@gmail.com writes:

  Streams are not lists.  Scheme ensures there are
  substantial disadvantages to using streams rather than
  lists, due to the underlying promises that require
  numerous type conversions, so streams should be used only
  when the sequence of elements is truly infinite (such as
  mathematical series) or when there is some clear advantage
  of laziness (such as reducing the number of passes through
  a large data set).

 I also find that any data structure in general which is
 built on I/O works well as a stream.  For the current NLP
 app I'm working on, I need to build a parse graph from a
 port.  Slurping up the whole input at once could require too
 much memory, and also would prevent the parser acting as a
 proper (buffered) Unix filter.  On the other hand, since the
 algorithm for determining how much text I need to work with
 is dynamic, I can't just read chunks at a time (the basic
 unit I want to work on is a sentence, but I don't know what
 a sentence is until the parse is finished).  So I build the
 graph as a lazy stream of nodes, and the algorithm
 transparently expands only as much input as needed.

 From what I've seen Alejandro also uses streams primarily
 with I/O - it's a very natural combination.


You are correct that streams and parsing go well together.  One of the
examples I wrote for SRFI-41 was a parsing library based on the calculator
Wadler wrote for his 'list of successes' paper, but I dropped it because it
was too long, and illustrated the list of successes technique with the
eight-queens problem.

Parsing also works well without streams, as decades of lex/yacc users can
attest.


  Writing a library that duplicates SRFI-1 for streams seems
  to me to be folly.

 Well, if you have streams at all, even if they are only
 suited to a special class of algorithms, it makes sense to
 provide a complete library of basic operations.  Otherwise
 people will continuously reinvent the same utilities, and
 sometimes get them wrong.

 In fact, it is specifically desirable to provide an exact
 match of the SRFI-1 API for easy conversions and
 comparisons.  In any module system with import prefixing
 (including Chicken 4), you can write everything with a
 stream- prefix and swap the backend from streams to lists
 with:

  (import srfi-41)
  (import (prefix stream-) srfi-1)

 Going the other direction (writing for SRFI-1 but then
 switching to streams) is only a little more verbose,
 requiring renaming of the individual identifiers you use.


I disagree.  Streams and lists are not substitutable.  Haskell conflates the
two because everything in Haskell is lazy, so there is no difference.  But
that isn't true in Scheme.


  Some certainly don't belong in a general-purpose library
  -- if you need symbol-stream to convert the name of a
  symbol into a stream of characters, you can write it as
  part of your program.

 Sure:

   (define (symbol-stream sym)
 (string-stream (symbol-string sym)))

 That's just trivial and probably borderline enough that it
 isn't needed in the library.  string-stream or equivalent
 functionality should be included, though, because the most
 efficient implementation of this may vary wildly depending
 on the Scheme implementation.

 However, the name may be unintuitive if you're not coming
 from a streams as I/O perspective.  It may be both simpler
 to specify and easier to understand if you replace most of
 the foo-stream procedures with:

  (write-to-character-stream object)
  (display-to-character-stream object)


When would it make sense to convert the name of a symbol to a stream of
characters?


  Many -- such as stream-butlast -- make sense only for
  lists (which are materialized in their entirety) and not
  for streams (which may never be materialized).

 I think it's a little unfair to pick on stream-butlast when
 SRFI-41 includes stream-length, stream-list,
 stream-reverse, etc.  As you yourself say, not all streams
 are infinite, and for finite streams these can be useful.
 Otherwise you'll repeatedly find people who when working
 entirely with streams (for type signature compatibility, and
 because all of their utilities are designed for streams, not
 lists), write things like

  (list-stream (butlast (stream-list stream)))

 when they really do need all but the last element of a
 stream they know to be finite.

 [I would argue the name and API should be changed to
 stream-drop-right to match SRFI-1, though.]


Stream-length and stream-reverse are certainly candidates to be dropped from
a stream library.  I'm not entirely sure how I feel about them.

You and Alejandro seem to be suggesting that you would use streams in
preference to lists in a variety of programs.  Take as given that streams
will be much slower than lists, at least in current Scheme implementations.
I can't imagine using streams for much more than toy programs or academic

Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-05-06 Thread Alexey Radul
On Wed, May 6, 2009 at 10:32 AM, Phil Bewig pbe...@gmail.com wrote:
 Streams are not lists.  Scheme ensures there are substantial disadvantages
 to using streams rather than lists, ...

To the extent that this is true, it should be fixed, not perpetuated.
Indeed, one of Scheme's greatest weaknesses is that the core functions
of the language are not generic enough, and different representations
of the same things are unduly difficult to intermix.  Let us move
towards perfection by removing an arbitrary distinction between two
sequential data structures whose only real difference is that one is
restricted to being finite.

~Alexey Radul

P.S. On the technicalities of how to achieve this, I find the design
of Clojure inspiring (http://clojure.org).


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-05-05 Thread Alejandro Forero Cuervo
 SRFI-40 is deprecated due to a memory leak.  Please port SRFI-41 instead,
 and adapt any code that uses SRFI-40 to the new interface.

Did you, during the design of srfi-41, consider the existance of the
stream-ext library, which implements a lot of stream functions on top
of srfi-40?

http://chicken.wiki.br/eggref/3/stream-ext

It's first version was released a long time before srfi-41 and only
small changes have been made since then.  The naming conventions and
the semantics match those of srfi-1 as close as possible, to make
things as consistent as possible.

I've used the stream-ext library in many applications that represent
strings as streams of characters throughout.  The largest of these is
probably Svnwiki.

I'm worried about the incompatibilities I see between stream-ext and
srfi-41.  My concerns are the following:

1. srfi-41 provides a very small subset of the functionality that I
think that any program that uses streams significantly will need.  As
such, I think it fails significantly at providing syntax derived from
those primitives that permits convenient expression of stream
operations.  Most of the functions I list below can be implemented in
a portable manner, as stream-ext does.  To be fair, srfi-41 does seem
to provide some functions that stream-ext does not.

2. More importantly (the previous concern can be solved with an
additional library), a small portion of the interface exported by
srfi-41 differs from that in the stream-ext library.  I provide some
cases below and explain why I believe the semantics from stream-ext
are slightly preferable, mostly because of consistency with the srfi-1
list-based counterparts.  I quite like the interface of srfi-1 and I
find that, by providing inconsistent counterparts, srfi-41 is making
it slightly harder to use streams than stream-ext.

I may be the person who has written the most Scheme code using srfi-40
streams.  I've put special care into the design of the interface of
the stream-ext library.  This interest I have in using streams in
Scheme makes the fact that srfi-41 offers an inferior interface rather
frustrating for me.

Now onto the differences and similarities:

The following is a list of symbols provided by stream-ext and srfi-41
with apparently the exact same semantics:

  list-stream
  stream-ref
  stream-length
  stream-append
  stream-take-while
  stream-drop-while

The following is a list of symbols available in stream-ext but not in
srfi-41, which I believe most software using streams would benefit
from:

  stream-xcons
  stream-cons*
  stream-tabulate
  stream-iota
  make-infinite-stream

I think these should be included as counterparts to the srfi-1
versions for lists.  The make-infinite-stream should probably be
added (see stream-ext's make-stream, discussed bellow).

  stream-string
  string-stream
  stream-downcase, stream-upcase
  stream-lines
  stream-unlines

I think these should be included: if one does include
port-stream, encouraging the use of streams of characters to
represent ports/streams, why not go the extra mile of simplifying
conversion to and from strings and handling of streams of
characters?

  stream-vector
  vector-stream
  number-stream
  stream-number
  stream-symbol
  symbol-stream

And if we include the stream-string and string-stream symbols,
encouraging the programmer to use streams throughout his program
to represent strings, these should probably also be included,
specially the vector ones.  I don't think we should force all
programs that use streams to define this compositions directly.

  iterator-stream

This is a fundamental block for turning iterators into streams.
I've found it extremely useful in my programs that use streams.
For example, list-stream can be trivially implemented as:

  (define (list-stream l)
(iterator-stream
  (lambda (return stop)
(for-each return l

Among *many* other things, this makes it trivial to do things like
'with-output-to-stream', given the right support from the
implementation (for creating special ports).  Also,
iterator-stream does not depend on anything non-portable, simply
on call/cc.

  write-stream

The counter-part to port-stream.  Most of my programs have a lot
of functions that generate streams (see for example my html-stream
library).  A lot of these will be wrapped in a simple call to
write-stream, to output these to the right port.  I think it
should be included in a general purpose streams library.

  stream=
  stream-prefix=
  stream, stream
  stream-caar ... stream-cr
  stream-first ... stream-tenth
  stream-intersperse
  stream-split
  stream-last
  stream-last-n
  stream-butlast
  stream-butlast-n
  stream-length=
  stream-count
  stream-partition
  stream-remove
  stream-sort
  stream-find
  stream-find-tail
  stream-any
  stream-every

I'm using all these quite often.  I feel all of them deserve
 

[Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread John Cowan
The following is a list, derived from the dependency graphs, for Chicken
3 eggs on which more than one other Chicken 3 egg depends.  Eggs high
up on this list should probably be migrated soon.

I have excluded all eggs shown in the current Chicken 4 egg list, as
well as syntax-case.

312 misc-extn
121 lookup-table
 89 srfi-40
 77 locale
 74 srfi-29
 71 format-modular
 63 coerce
 53 srfi-37
 52 eggdoc
 42 stream-ext
 39 srfi-42
 36 uri
 24 url
 23 args
 20 rlimit
 19 openssl
 17 message-digest
 17 http
 16 stream-parser
 10 tinyclos
  7 array-lib
  6 sendfile
  6 iconv
  6 html-stream
  5 utf8
  5 syntactic-closures
  5 srfi-4-comprehensions
  5 blas
  4 tcp-server
  4 stream-sections
  4 ssax
  4 srfi-95
  4 s11n
  4 job-worker
  3 sxml-tools
  3 srfi-66
  3 rfc822
  3 md5
  3 format
  3 dyn-vector
  3 crc
  3 codewalk
  3 args-doc
  2 z3
  2 tool
  2 stream-wiki
  2 sha1
  2 runcmd
  2 pipeline
  2 mime
  2 graph-scc

-- 
John Cowan  http://www.ccil.org/~cowanco...@ccil.org
To say that Bilbo's breath was taken away is no description at all.  There are
no words left to express his staggerment, since Men changed the language that
they learned of elves in the days when all the world was wonderful. --The Hobbit


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread Phil Bewig
SRFI-40 is deprecated due to a memory leak.  Please port SRFI-41 instead,
and adapt any code that uses SRFI-40 to the new interface.

On Wed, Apr 22, 2009 at 11:11 AM, John Cowan co...@ccil.org wrote:

 The following is a list, derived from the dependency graphs, for Chicken
 3 eggs on which more than one other Chicken 3 egg depends.  Eggs high
 up on this list should probably be migrated soon.

 I have excluded all eggs shown in the current Chicken 4 egg list, as
 well as syntax-case.

312 misc-extn
121 lookup-table
 89 srfi-40
 77 locale
 74 srfi-29
 71 format-modular
 63 coerce
 53 srfi-37
 52 eggdoc
 42 stream-ext
 39 srfi-42
 36 uri
 24 url
 23 args
 20 rlimit
 19 openssl
 17 message-digest
 17 http
 16 stream-parser
 10 tinyclos
  7 array-lib
  6 sendfile
  6 iconv
  6 html-stream
  5 utf8
  5 syntactic-closures
  5 srfi-4-comprehensions
  5 blas
  4 tcp-server
  4 stream-sections
  4 ssax
  4 srfi-95
  4 s11n
  4 job-worker
  3 sxml-tools
  3 srfi-66
  3 rfc822
  3 md5
  3 format
  3 dyn-vector
  3 crc
  3 codewalk
  3 args-doc
  2 z3
  2 tool
  2 stream-wiki
  2 sha1
  2 runcmd
  2 pipeline
  2 mime
  2 graph-scc

 --
 John Cowan  http://www.ccil.org/~cowanhttp://www.ccil.org/%7Ecowan
 co...@ccil.org
 To say that Bilbo's breath was taken away is no description at all.  There
 are
 no words left to express his staggerment, since Men changed the language
 that
 they learned of elves in the days when all the world was wonderful. --The
 Hobbit


 ___
 Chicken-users mailing list
 Chicken-users@nongnu.org
 http://lists.nongnu.org/mailman/listinfo/chicken-users

___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread Alex Shinn
John Cowan co...@ccil.org writes:

  52 eggdoc
  19 openssl
   6 iconv
   5 utf8
   4 tcp-server
   3 format
   6 sendfile
   2 graph-scc

These have already been ported.

  17 http

Should be deprecated in favor of intarweb?

   5 syntactic-closures

Deprecated in favor of the new native macro system.

-- 
Alex


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread John Cowan
Alex Shinn scripsit:

   52 eggdoc
   19 openssl
6 iconv
5 utf8
4 tcp-server
3 format
6 sendfile
2 graph-scc
 
 These have already been ported.

They aren't in http://chicken.wiki.br/chicken-projects/egg-index-4.html,
and don't have html files in the http://chicken.wiki.br/eggref/4/
directory, though, so only insiders know about them.  Someone needs to
fix that.

-- 
Where the wombat has walked,John Cowan co...@ccil.org
it will inevitably walk again.  http://www.ccil.org/~cowan


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread Leonardo Valeri Manera
2009/4/22 John Cowan co...@ccil.org:
 only insiders know about them.

You only get told about these things if you're part of the Dark
Cabal©. Now that you've heard about it, I'll have to kill you ...

Leo


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread John Cowan
John Cowan scripsit:

 The following is a list, derived from the dependency graphs, for Chicken
 3 eggs on which more than one other Chicken 3 egg depends.  Eggs high
 up on this list should probably be migrated soon.

It's wrong, though.  It turns out that the .dot files I was using as
raw data often mention dependent eggs multiple times.  I'm going to add
Alex's list of Chicken 4 eggs, modify my analysis code, and re-run it.

-- 
John Cowanco...@ccil.org
At times of peril or dubitation,  http://www.ccil.org/~cowan
Perform swift circular ambulation,
With loud and high-pitched ululation.


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread John Cowan
Phil Bewig scripsit:

 SRFI-40 is deprecated due to a memory leak.  Please port SRFI-41 instead,
 and adapt any code that uses SRFI-40 to the new interface.

The following eggs depend directly on the srfi-40 egg:

egg-post-commit html-plots html-stream irnc-base mat5-lib ode
scheme-dissect stream-base64 stream-cgi stream-ext stream-flash
stream-htpasswd stream-httplog stream-ldif stream-parser stream-sections
stream-wiki

-- 
John Cowanco...@ccil.orghttp://ccil.org/~cowan
Rather than making ill-conceived suggestions for improvement based on
uninformed guesses about established conventions in a field of study with
which familiarity is limited, it is sometimes better to stick to merely
observing the usage and listening to the explanations offered, inserting
only questions as needed to fill in gaps in understanding. --Peter Constable


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread Peter Bex
On Wed, Apr 22, 2009 at 12:11:12PM -0400, John Cowan wrote:
 I have excluded all eggs shown in the current Chicken 4 egg list, as
 well as syntax-case.

[..eggs about which I have absolutely no say omitted..]

  52 eggdoc

I believe this was ported yesterday.

  36 uri

This could be deprecated in favor of uri-common/uri-generic.
I don't see a big problem with them existing together, but if possible
please use these.  They have a much bigger testsuite and are probably
much more compliant to the RFC.

  24 url

This egg was already marked 'Unsupported or redundant' in
Eggs Unlimited 3.  We should take this opportunity to put it down for good.

  17 http

Should be deprecated in favor of intarweb.

   6 sendfile

This was already ported...

   5 utf8

This was already ported...

   4 tcp-server

   3 sxml-tools

Already ported, as the sxpath egg.  Other parts of the sxml-tools
that should be made available for Chicken should be put in other eggs,
since sxml-tools is many things all rolled into one.  It's better to
separate the bloat a bit.

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music.
-- Donald Knuth


pgpthvVWNGILm.pgp
Description: PGP signature
___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread Jim Ursetto
On Wed, Apr 22, 2009 at 11:28 AM, John Cowan co...@ccil.org wrote:
 Alex Shinn scripsit:

       52 eggdoc
       19 openssl
        6 iconv
        5 utf8
        4 tcp-server
        3 format
        6 sendfile
        2 graph-scc

 These have already been ported.

 They aren't in http://chicken.wiki.br/chicken-projects/egg-index-4.html,

Yes, they are.

Jim


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread John Cowan
Jim Ursetto scripsit:

  These have already been ported.
 
  They aren't in http://chicken.wiki.br/chicken-projects/egg-index-4.html,
 
 Yes, they are.

Okay.  I must have botched the list somehow.

-- 
John Cowanhttp://www.ccil.org/~cowan  co...@ccil.org
Please leave your valuesCheck your assumptions.  In fact,
   at the front desk.  check your assumptions at the door.
 --sign in Paris hotel   --Cordelia Vorkosigan


___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users



Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread Ivan Raikov

I propose that the following eggs be made obsolete:

  srfi-40 (superseded by srfi-41)
  uri + url (superseded by uri-generic)
  syntactic-closures (superseded by Chicken 4 macros)

I started porting all graph eggs last night, so dyn-vector, digraph and
everything graph-* is ported or in the process of being ported to
Chicken 4. Also, since most of those eggs use eggdoc for documentation,
I will scavenge some code from egg-post-commit and update the
make-egg-index script to account for eggdoc-based documentation, instead
of assuming all egg documentation resides in eggref.


  -Ivan

 

John Cowan co...@ccil.org writes:

 The following is a list, derived from the dependency graphs, for Chicken
 3 eggs on which more than one other Chicken 3 egg depends.  Eggs high
 up on this list should probably be migrated soon.

 I have excluded all eggs shown in the current Chicken 4 egg list, as
 well as syntax-case.

 312 misc-extn
 121 lookup-table
  89 srfi-40
  77 locale
  74 srfi-29
  71 format-modular
  63 coerce
  53 srfi-37
  52 eggdoc
  42 stream-ext
  39 srfi-42
  36 uri
  24 url
  23 args
  20 rlimit
  19 openssl
  17 message-digest
  17 http
  16 stream-parser
  10 tinyclos
   7 array-lib
   6 sendfile
   6 iconv
   6 html-stream
   5 utf8
   5 syntactic-closures
   5 srfi-4-comprehensions
   5 blas
   4 tcp-server
   4 stream-sections
   4 ssax
   4 srfi-95
   4 s11n
   4 job-worker
   3 sxml-tools
   3 srfi-66
   3 rfc822
   3 md5
   3 format
   3 dyn-vector
   3 crc
   3 codewalk
   3 args-doc
   2 z3
   2 tool
   2 stream-wiki
   2 sha1
   2 runcmd
   2 pipeline
   2 mime
   2 graph-scc




___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] Which eggs to migrate from Chicken 3 first?

2009-04-22 Thread Kon Lovett


On Apr 22, 2009, at 9:16 AM, Phil Bewig wrote:

SRFI-40 is deprecated due to a memory leak.  Please port SRFI-41  
instead, and adapt any code that uses SRFI-40 to the new interface.


The srfi-41 extension is available for Chicken 4.





,snip

___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users


Best Wishes,
Kon




___
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users