User defined pipe and redirection operators: Difference between revisions

Content added Content deleted
(+perl)
(J pre-draft)
Line 34: Line 34:
Pioneer: Adriaan van Wijngaarden - Dutch pioneer; ARRA, ALGOL
Pioneer: Adriaan van Wijngaarden - Dutch pioneer; ARRA, ALGOL
</pre>
</pre>

=={{header|J}}==

If we ignore the gratuitous complexity requirements of this task, it boils down to this:

Step 0: get the data. The task does not specify how to get the data, so here I use lynx, which is readily available on most unix-like systems, including cygwin. Note that lynx needs to be in the OS PATH when running j.

<lang j>data=:<;._2 shell 'lynx -dump -nolist -width=999 http://en.wikipedia.org/wiki/List_of_computer_scientists'</lang>

Step 1: define task core algorithms:

<lang j>grep=: +./@E.S:0 # ]</lang>

Step 2: select and display the required data:

<lang j> ;'aa' grep 'ALGOL' grep data
* Adriaan van Wijngaarden - Dutch pioneer; ARRA, ALGOL
</lang>

As for the concept of a pipe that presents data one record at a time to a downstream function, that corresponds to the J operator <code>@</code> but it's not clear how to demonstrate that usefully, in this task. (And, I could write pages of code, to accomplish what's being accomplished here with the two successive greps, but I find that concept distasteful and tedious.)


=={{header|Perl}}==
=={{header|Perl}}==