[Oberon] Small effort to add functional/piping ability ?

Jan de Kruyf jan.de.kruyf at gmail.com
Tue May 15 20:25:39 CEST 2018


How about using an anonymous file as  a pipe?

j.


On Tue, May 15, 2018 at 6:38 PM, eas lab <lab.eas at gmail.com> wrote:

> I've raised this point before, under the subject of functional-programming;
> since the method of getting an answer by passing the data through multiple
> stages is the essence of functional programming.
>
> ETHO already uses this extensively, except that it's not yet automated:
> the output/s go to ScreenFrames, which can be marked as the the input.
> to the next stage of the <pipe>.
>
> A somewhat contrived example is solving the intolerable situation
> that ETHO doesn't show you the most recent files of a directory.
>
> Imagine having a directory of 88 files, some of which are 2 years old,
> and you want to continue with the project that you last worked on.
> 3 days ago.
>
> Obviously you want immediate access to the most recent [say  6]
> files which you <left on top of the work pile>.
>
> System.Directory ^   Linux:*\d  gives  eg:...
> Linux:Browser.Mod  19.05.1970 01:02:17   38540
> Linux:C.Tool  04.05.2017 09:31:44    4372
> Linux:Clipboard.Obj  04.11.2012 11:13:15    6677
> Linux:CmprFiles  24.08.2017 21:00:37    1289
> ...
> Under linux I've found that the most convenient listing format is:
> FileSize : FileName
> 1454 : NeedPiping
> 49174 : oberon.log
> 1105 : NeedPiping.Bak
> 10485760 : oberon100321.dsk
> 1964988 : noname.eml
> 678 : oberon.cnf
> 48055 : HrOrderFuncts
> ....
> and I vaguelly remember using ETHO's existing *FUNCTIONS* to do:
> 1. put the 2nd field to the front. ==
> 24.08.2017 Linux:CmprFiles 21:00:37    1289
> 2. rearange the date-strings. ==
> 2017.08.24
> 3. sort the System.Directory lines using ETHO's existing function.
> == file listing in recentcy order
> 4. output only the Size & Name fields.
> == just show the size and FileName
>
> So that's a 4stage-pipe.
> The great advantage of functional/piping is the extreme modularity:
> at any/every stage:N you only need be concerned about the output
> of stage:N-1 and stage:N. Nothing else need be considered.
>
> Since  ETHO already uses the manualy repeated 2 stage loop:
> 1.   Put Output:N-1 to  <F1 marked Frame>
> 2.   Take  <newly F1 marked Frame> as input to pipe-stage-N:
> why can't we modify/extend this to be able to have  a syntax eg:
>    <pipeSequenceCommand> <Argument> ?
> eg. Pipe.ListRecentcyOrderedFiles  /sdc2/CRG/LNOspare/
>
> Also our ET.Mod already can execute a sequence of M.P.
> Adding the ability to have the text of stageN be the input of
> stage(N+1) would give us functional/piping ability.
>
> == crg
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20180515/2b5fc04f/attachment.html>


More information about the Oberon mailing list