Re: Lazy Strings and Regexes

2010-10-31 Thread Darren Duncan

Francesco 'Oha' Rivetti wrote:

On Sun, 31 Oct 2010 20:29:27 +0100, Moritz Lenz mor...@faui2k3.org wrote:

If we can efficiently match against a lazy string, and if this doesn't
turn the lazy string into a (large) normal string, then the best way
to process a file might be something similar to:
   my $fh = open ... err die;
   my $contents = cat($fh.lines);
, followed by matching on $contents.

Better still would be to provide a way for filehandles to be directly
asked to produce a lazy Str which reflects the file.


I guess there's no good reason not to have a .Cat method in the IO class
- another thing that'll likely appear when Cats are implemented.


What if a regexp may consider a lazy list of string as a single lazy 
string?


i have no idea exactly what does could mean in practice, but i would like
to see something like:

  MyGrammar.parse($fh.lines);

or better:

  MyGrammar.parse($io); # which could be a file or a socket


If you want to do that, please don't make it a behavior of lazy lists of 
strings, since that would be too magical.  Instead, either do this using, for 
example, MyGrammar.parse() taking a Cat argument but that argument can be 
coerced from a string or array of string argument. -- Darren Duncan


Lazy Strings and Regexes

2010-10-25 Thread Ben Goldberg
I know that perl6 has / will have lazy strings, since (in
S32::Containers) the List role defines a cat method, which returns a
Cat object, which does the Str interface, but generates the string
lazily.

First, are Cat objects documented anywhere else?

Secondly, if a regular expression match is done on a lazy string, is
that lazy string turned into a normal string?

If we can efficiently match against a lazy string, and if this doesn't
turn the lazy string into a (large) normal string, then the best way
to process a file might be something similar to:
   my $fh = open ... err die;
   my $contents = cat($fh.lines);
, followed by matching on $contents.

Better still would be to provide a way for filehandles to be directly
asked to produce a lazy Str which reflects the file.