[Oberon] Functional programming style for Oberon?

Jan de Kruyf jan.de.kruyf at gmail.com
Sat Oct 17 10:26:13 CEST 2015


> PS. it's very problematic pasting the pre-written text into the
web-browser
> for gmail

When everything else fails try the Windows way:
Control-C
Control-V

j.


On Sat, Oct 17, 2015 at 8:40 AM, eas lab <lab.eas at gmail.com> wrote:

> Some years ago when the OO-paradigm was at it's peek, ETHO was extended
> to handle procedure types, which could be passed as arguments.
>
> There's great advantages in avoiding temporary-fads, so I never exercised
> OOP. Now [using LEO] that it's less easy to access my old NativeOberon
> files, I failed to find the documentation, and example uses of the
> <passing PROCs as arguments>.
>
> Where should I look?
>
> Can Oberon procedure types facilitate the <functional/compositional>
> style of programming?  Which is NOT a passing fad.
>
> *nix's <piping of functions/data-transformers> is staggeringly
> economical in user's effort, but has a terrible syntax.
>
> The benefit of removing the need to learn ad-hoc syntaxS is my
> motivation for syntax-directed-editors & menu-driven-usage:
> which ETHO already used successfully.
>
> An example of *nix's ability to easily get results by piping a sequence
> of existing/proven/well-tested functions together [but using
> understand-able syntax] is:--
>
> CheckTheFileDataBaseForFilesNamed *roc*ointer*
> | ButSkipAllFiles *.pdf *.zip *.ps *.gz
> | AndListThoseContainingString "beron"
>
> The big advantage of this functioal/compositional style is the
> maintainablity. Which is the whole idea of NW's "MODUL"a and
> "COMPONENT" pascal.
>
> Some years ago, when my then ISP introduced Sender-must-ID
> for email, it was quite a job to modify the ETHO <emailer>.
>
> Now there's a new-fad which messes my TextToSpeech facility:
> instead of 'saying' "can't",
> it says "Sea Aye Enn Tea";
> because many feature/fad-following clowns are replacing the
> one-byte single-quote [ASCII] by 3 bytes.
>
> Since the substantial processing-stages of fetching [unfortunately
> these days http-formatted] text, visually scanning it to wipe-out
> <bad sections> by an ETHO-like editor, and getting the TestToSpeech
> to a device, as a suitably-named file,
> needs only a few mouse-chords and typing the chosen name,
> you don't need to understand the details of each stage.
>
> So you can just plug-a-function-into-the-pipe-line to:
>  <translate the 3-byte-quote-fad to ASCII(SingleQuote)>.
>
> Which just needs pasting from your library of examples, a 10 char line,
> and editing/modifying it; into the suitable pipe-line position.
>
> That's why I call it MickeyMouse programming.
>
> A most convincing argument, for me, for the functional style, is:--
>
>    Let's create a list of all even numbers up to 100, and another list
>    omitting the first five of them.
>
>    The program written in Java.
>
>    final int LIMIT=50;int[] a = new int[LIMIT];
>    int[] b = new int[LIMIT - 5];
>    for (int i=0;i < LIMIT;i++) {
>        a[i] = (i+1)*2;
>        if (i >=5) b[i - 5] = a[i];
>    }
>
>  The program written in ###
>
>    let a = [2,4..100]
>    let b = drop 5 a
>
>    It is immediately clear that with ###, you can understand what's
>    going on; whereas in Java, or any imperative language, you can barely
>    tell what the code is supposed to do because you are overwhelmed with
>    the low-level minutia. This effect increases as programs grow more
>    complex. From this simplicity and abstraction flow most of ###'s
>    advantages.
> ----------------------------- end of extract. --------------------
> ### <- let's not get stuck on NAMES.
> Let's rather first understand the CONCEPTS.
> Of course, the above is an extreme example, but ETHO's already existing
> facilities could perhaps do:
>
>  MapFunctionOverElements(DigitToText:PROC,
>       DigitSequence: TextString):TextString;
>
>  MapFunctionOverElements(TestForPrime:PROC,
>       Ints1toN: IntegerList):IntegerList;
>
> There's nothing new about this. Extracting from McCarthy [designed lisp
> in 60s?]:-
> These three procedures clearly share a common underlying pattern. They
>    are  for  the  most  part identical, differing only in the name of the
>    procedure, the function/job of a used to compute the term to be added,
>    and the function that provides the next value of a. We could generate
> each
>    of the procedures by filling in slots in the same template:
> ------ snip lisp code ---
>    The presence of such a common pattern is strong evidence that there is
>    a  useful  abstraction  waiting  to be brought to the surface. Indeed,
>    mathematicians  long  ago identified the abstraction of summation of a
>    series and invented ``sigma notation,''
>    to express this concept. The power of sigma notation is that it allows
>    mathematicians  to  deal  with  the concept of summation itself rather
>    than  only  with  particular sums -- for example, to formulate general
>    results about sums that are independent of the particular series being
>    summed ...
>
> What are unforeseen problems in using ETHO to do this too?
>
> == Chris Glur.
>
> PS. it's very problematic pasting the pre-written text into the web-browser
> for gmail [designed for F/B-twitter kiddies=modern] compare to the 90's
> N-O emailer. Can Linux:Aos handle gmail?
> --
> 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/20151017/0a43d7c4/attachment.html>


More information about the Oberon mailing list