<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><br><div>The main drawback of the ProjectOberon system as of today is that Files.Mod is directly bound to the implementation of the Oberon file system and is not only a dispatcher with PROCEDURE variables.</div><div><br></div><div>Although you could write a module that reads e.g. DOS formated volumes, or ext3 formatted volumes so your application can read and write to those volumes, the Oberon system itself is strictly bound to the Oberon filesystem as implemented in Files.</div><div><br></div><div>If Files.Mod only provided hooks (a kind of standard API aka interface how to read/write to files, and the real implementation of the file system is in another module, you could „easily“ bind another file system to the Files interface and all modules using Files can benefit of this new implementation, even the Oberon system itself.</div><div><br></div><div>With such a mechanism, the Streams idea could be implemented more elegantly, as Streams could temporarily modify the implementation of the Files. So all modules using the Files API do not know that they are not reading from real Oberon files but temporary / virtual files provided by Streams.</div><div><br></div><div>Obviously you can write/port streams to ProjectOberon and use it in your application but the ProjectOberon commands itself like System.CopyFiles will not use Streams.</div><div><br></div><div>BTW: Texts uses Files. So if we allowed Files to redirect, Texts are redirected as well😊</div><div><br></div><div>BTW2: The Oberon Log can be redirected already today if needed, as Oberon.Mod offers the procedure OpenLog.</div><div><br><div dir="ltr">br<br><div>Jörg</div></div><div dir="ltr"><br><blockquote type="cite">Am 23.04.2021 um 00:32 schrieb Charles Perkins <chuck@kuracali.com>:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div dir="ltr">Hi Peter,<div><br></div><div>I would like to be able to chain commands, where the output of one command is treated as the input to another command. Something like:</div><div><br></div><div>Stream.Do List.File AFile.txt | Lines.Uppercase | Lines.Sort | Lines.Uniq | Lines.Count</div><div><br></div><div>The three above modules (Stream, List, and Lines) would co-operate to list the number of unique case-insensitive lines in a file. This should be possible without multitasking or process scheduling -- the Stream.Do command would merely set the output of each command (a PROCEDURE variable) to the input of the next with the final output being retained by 'Do' and written to the system log. </div><div><br></div><div>That is what I envision in a Stream module suitable for Project Oberon. Others may have a different opinion!</div><div>Best Regards,</div><div>Chuck</div><div><br></div><div> </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 22, 2021 at 1:21 PM <<a href="mailto:peter@easthope.ca">peter@easthope.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From:   Charles Perkins <<a href="mailto:chuck@kuracali.com" target="_blank">chuck@kuracali.com</a>><br>
Date:   Thu, 22 Apr 2021 12:34:35 -0700<br>
> I was just wishing for streams in Project Oberon so this is timely for me.<br>
<br>
Charles, can you elaborate on the motivation for Streams please.  <br>
Why not just use Files directly?<br>
Can your requirements help to illustrate?<br>
<br>
Thx,                             ... P.<br>
<br>
-- <br>
VoIP: +1 604 670 0140            Bcc: peter at easthope. ca<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</blockquote></div>
<span>--</span><br><span>Oberon@lists.inf.ethz.ch mailing list for ETH Oberon and related systems</span><br><span>https://lists.inf.ethz.ch/mailman/listinfo/oberon</span><br></div></blockquote></div></body></html>