Jukka Tuominen <Jukka.Tuominen@finndesign.fi> wrote:
+---------------
| ...there shouldn't be any limit to the length. For example, I'd like to get a
| intersection of two or more lists e.g. (1 2 3 4 5) (1 3 5) and (1 2 4 5)
| each saved on a file. Is there a way to use common scheme functions to do
| this nicely so that the functions themselves wouldn't need to know that they
| are handling file data instead of internal data.
+---------------
Yeah. Break your problem into two (almost-)orthogonal parts:
1. Convert all of your application-specific operations to work on Scheme
"streams" (delayed-evaluation lists using promises -- any of the usual
Scheme texts will cover "make-stream/stream-car/stream-cdr");
2. Implement a "streamed file" -- a delayed list such that "force"-ing an
element of such a stream causes the associated list item to be read from
a file. [You'll also need a way to write such files, but that's a *lot*
simpler.]
Then just apply your operations (which now work on *any* "stream") as
needed to "streamed files"...
-Rob
-----
Rob Warnock, 8L-855 rpw3@sgi.com
Applied Networking http://reality.sgi.com/rpw3/
Silicon Graphics, Inc. Phone: 650-933-1673
2011 N. Shoreline Blvd. FAX: 650-964-0811
Mountain View, CA 94043 PP-ASEL-IA