Jump to content

User defined pipe and redirection operators: Difference between revisions

m
→‎{{header|Phix}}: added syntax colouring, marked p2js compatible (in distro)
(Added Wren)
m (→‎{{header|Phix}}: added syntax colouring, marked p2js compatible (in distro))
Line 801:
You could of course do things more character-by-character or line-by-line, and/or farm things out to separate
threads/tasks, but the latter would need some suspend/resume/scheduling, along with explicit eof markers.
The distributed version also has a couple of alternatives for pipe_head() and pipe_tail()., along with a
class-less version that is compatible with pwa/p2js.
<lang Phix>-- demo\rosetta\Fake_Redirection.exw
<!--<lang Phix>(phixonline)-->
requires("0.8.2")
<span style="color: #000080;font-style:italic;">-- demo\rosetta\Fake_Redirection.exw</span>
 
<span style="color: #008080;">without</span> <span style="color: #008080;">js</span> <span style="color: #000080;font-style:italic;">-- class (see other version in distro)</span>
constant fs = new_dict() -- fake file system
 
class pipe -- fake pipe
string data = ""
integer idx = 0
function getch()
if idx<length(data) then
idx += 1
return data[idx]
end if
return -1
end function
function getln()
if idx<length(data) then
integer start = idx+1
idx = find('\n',data,start)
return data[start..idx]
end if
return -1
end function
procedure putch(integer ch)
data &= ch
end procedure
procedure putln(string line)
data &= line
end procedure
function readall()
return split(data,'\n',no_empty:=true)
end function
function rawdata()
return data
end function
end class
 
function joinup(sequence lines)
return join(lines,"\n")&"\n"
end function
 
procedure toName(string name, pipe src) -- role of > operator
setd(name,src.rawdata(),fs)
end procedure
<span style="color: #008080;">constant</span> <span style="color: #000000;">fs</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">new_dict</span><span style="color: #0000FF;">()</span> <span style="color: #000080;font-style:italic;">-- fake file system</span>
function fromName(string name) -- role of < operator
return new(pipe,{getd(name,fs)})
end function
<span style="color: #008080;">class</span> <span style="color: #000000;">pipe</span> <span style="color: #000080;font-style:italic;">-- fake pipe</span>
function tee(pipe in, string name)
<span style="color: #004080;">string</span> <span style="color: #000000;">data</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">""</span>
string data = in.rawdata()
<span style="color: #004080;">integer</span> <span style="color: #000000;">idx</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
setd(name,data,fs)
<span style="color: #008080;">function</span> <span style="color: #000000;">getch</span><span style="color: #0000FF;">()</span>
return new(pipe,{data})
<span style="color: #008080;">if</span> <span style="color: #000000;">idx</span><span style="color: #0000FF;"><</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">data</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
end function
<span style="color: #000000;">idx</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">data</span><span style="color: #0000FF;">[</span><span style="color: #000000;">idx</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">return</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">getln</span><span style="color: #0000FF;">()</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">idx</span><span style="color: #0000FF;"><</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">data</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">start</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">idx</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span>
<span style="color: #000000;">idx</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #008000;">'\n'</span><span style="color: #0000FF;">,</span><span style="color: #000000;">data</span><span style="color: #0000FF;">,</span><span style="color: #000000;">start</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">data</span><span style="color: #0000FF;">[</span><span style="color: #000000;">start</span><span style="color: #0000FF;">..</span><span style="color: #000000;">idx</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">return</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">procedure</span> <span style="color: #000000;">putch</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">data</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">ch</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #008080;">procedure</span> <span style="color: #000000;">putln</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">line</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">data</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">line</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">readall</span><span style="color: #0000FF;">()</span>
<span style="color: #008080;">return</span> <span style="color: #7060A8;">split</span><span style="color: #0000FF;">(</span><span style="color: #000000;">data</span><span style="color: #0000FF;">,</span><span style="color: #008000;">'\n'</span><span style="color: #0000FF;">,</span><span style="color: #000000;">no_empty</span><span style="color: #0000FF;">:=</span><span style="color: #004600;">true</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">rawdata</span><span style="color: #0000FF;">()</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">data</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">joinup</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">lines</span><span style="color: #0000FF;">)</span>
function grep(pipe in, string pat)
<span style="color: #008080;">return</span> <span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #000000;">lines</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\n"</span><span style="color: #0000FF;">)&</span><span style="color: #008000;">"\n"</span>
pipe res = new()
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
while true do
object line = in.getln()
if atom(line) then exit end if
if match(pat,line) then
res.putln(line)
end if
end while
return res
end function
 
function multireader(sequence pipes)
pipe res = new()
for i=1 to length(pipes) do
pipe p = pipes[i]
res.putln(p.rawdata())
end for
return res
end function
 
function pipe_head(pipe in, integer lines)
return new(pipe,{joinup(head(in.readall(),lines))})
end function
 
function pipe_tail(pipe in, integer lines)
return new(pipe,{joinup(tail(in.readall(),lines))})
end function
 
function sort_unique(pipe in)
return new(pipe,{joinup(unique(in.readall()))})
end function
<span style="color: #008080;">procedure</span> <span style="color: #000000;">toName</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">name</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">pipe</span> <span style="color: #000000;">src</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- role of &gt; operator</span>
procedure showCount(string heading, name)
<span style="color: #7060A8;">setd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">name</span><span style="color: #0000FF;">,</span><span style="color: #000000;">src</span><span style="color: #0000FF;">.</span><span style="color: #000000;">rawdata</span><span style="color: #0000FF;">(),</span><span style="color: #000000;">fs</span><span style="color: #0000FF;">)</span>
if getd_index(name,fs)=NULL then crash("not found") end if
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
integer n = length(split(getd(name,fs), "\n",no_empty:=true))
printf(1,"%s: %v\n", {heading, n})
<span style="color: #008080;">function</span> <span style="color: #000000;">fromName</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">name</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- role of &lt; operator</span>
end procedure
<span style="color: #008080;">return</span> <span style="color: #7060A8;">new</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">getd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">name</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fs</span><span style="color: #0000FF;">)})</span>
 
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
constant lcs_txt = """
Wil van der Aalst business process management, process mining, Petri nets
<span style="color: #008080;">function</span> <span style="color: #000000;">tee</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span> <span style="color: #000000;">pin</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">string</span> <span style="color: #000000;">name</span><span style="color: #0000FF;">)</span>
Hal Abelson intersection of computing and teaching
<span style="color: #004080;">string</span> <span style="color: #000000;">data</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">pin</span><span style="color: #0000FF;">.</span><span style="color: #000000;">rawdata</span><span style="color: #0000FF;">()</span>
Serge Abiteboul database theory
<span style="color: #7060A8;">setd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">name</span><span style="color: #0000FF;">,</span><span style="color: #000000;">data</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fs</span><span style="color: #0000FF;">)</span>
Samson Abramsky game semantics
<span style="color: #008080;">return</span> <span style="color: #7060A8;">new</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">data</span><span style="color: #0000FF;">})</span>
Leonard Adleman RSA, DNA computing
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
Manindra Agrawal polynomial-time primality testing
Luis von Ahn human-based computation
<span style="color: #008080;">function</span> <span style="color: #000000;">grep</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span> <span style="color: #000000;">pin</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">string</span> <span style="color: #000000;">pat</span><span style="color: #0000FF;">)</span>
Alfred Aho compilers book, the 'a' in AWK
<span style="color: #000000;">pipe</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">new</span><span style="color: #0000FF;">()</span>
Stephen R. Bourne Bourne shell, portable ALGOL 68C compiler
<span style="color: #008080;">while</span> <span style="color: #004600;">true</span> <span style="color: #008080;">do</span>
Kees Koster ALGOL 68
<span style="color: #004080;">object</span> <span style="color: #000000;">line</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">pin</span><span style="color: #0000FF;">.</span><span style="color: #000000;">getln</span><span style="color: #0000FF;">()</span>
Lambert Meertens ALGOL 68, ABC (programming language)
<span style="color: #008080;">if</span> <span style="color: #004080;">atom</span><span style="color: #0000FF;">(</span><span style="color: #000000;">line</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
Peter Naur BNF, ALGOL 60
<span style="color: #008080;">if</span> <span style="color: #7060A8;">match</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pat</span><span style="color: #0000FF;">,</span><span style="color: #000000;">line</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
Guido van Rossum Python (programming language)
<span style="color: #000000;">res</span><span style="color: #0000FF;">.</span><span style="color: #000000;">putln</span><span style="color: #0000FF;">(</span><span style="color: #000000;">line</span><span style="color: #0000FF;">)</span>
Adriaan van Wijngaarden Dutch pioneer; ARRA, ALGOL
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
Dennis E. Wisnosky Integrated Computer-Aided Manufacturing (ICAM), IDEF
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
Stephen Wolfram Mathematica
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
William Wulf compilers
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
Edward Yourdon Structured Systems Analysis and Design Method
Lotfi Zadeh fuzzy logic
<span style="color: #008080;">function</span> <span style="color: #000000;">multireader</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">pipes</span><span style="color: #0000FF;">)</span>
Arif Zaman Pseudo-random number generator
<span style="color: #000000;">pipe</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">new</span><span style="color: #0000FF;">()</span>
Albert Zomaya Australian pioneer of scheduling in parallel and distributed systems
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipes</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
Konrad Zuse German pioneer of hardware and software
<span style="color: #000000;">pipe</span> <span style="color: #000000;">p</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">pipes</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
"""
<span style="color: #000000;">res</span><span style="color: #0000FF;">.</span><span style="color: #000000;">putln</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p</span><span style="color: #0000FF;">.</span><span style="color: #000000;">rawdata</span><span style="color: #0000FF;">())</span>
mainlist = "List_of_computer_scientists.lst"
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
setd(mainlist,lcs_txt,fs)
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
toName("aa", grep(tee(sort_unique(multireader({pipe_head(fromName(mainlist), 4),
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
tee(grep(fromName(mainlist), "ALGOL"),
"ALGOL_pioneers.lst"),
<span style="color: #008080;">function</span> <span style="color: #000000;">pipe_head</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span> <span style="color: #000000;">pin</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">lines</span><span style="color: #0000FF;">)</span>
pipe_tail(fromName(mainlist), 4)})),
<span style="color: #000000;">pipe</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">new</span><span style="color: #0000FF;">()</span>
"the_important_scientists.lst"),
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">lines</span> <span style="color: #008080;">do</span>
"aa"))
<span style="color: #004080;">object</span> <span style="color: #000000;">line</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">pin</span><span style="color: #0000FF;">.</span><span style="color: #000000;">getln</span><span style="color: #0000FF;">()</span>
 
<span style="color: #008080;">if</span> <span style="color: #004080;">atom</span><span style="color: #0000FF;">(</span><span style="color: #000000;">line</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
printf(1,"Pioneer: %s", getd("aa",fs))
<span style="color: #000000;">res</span><span style="color: #0000FF;">.</span><span style="color: #000000;">putln</span><span style="color: #0000FF;">(</span><span style="color: #000000;">line</span><span style="color: #0000FF;">)</span>
showCount("Number of ALGOL pioneers", "ALGOL_pioneers.lst")
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
showCount("Number of scientists", "the_important_scientists.lst")</lang>
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
<span style="color: #000080;font-style:italic;">-- or, nicer/neater but potentially much wasted effort:
-- return new(pipe,{joinup(head(pin.readall(),lines))})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">pipe_tail</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span> <span style="color: #000000;">pin</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">lines</span><span style="color: #0000FF;">)</span>
<span style="color: #000080;font-style:italic;">-- sequence ring = repeat("",lines)
-- integer rn = 0, full = false
-- while true do
-- object line = pin.getln()
-- if atom(line) then exit end if
-- rn += 1
-- if rn&gt;lines then {rn,full} = {1,true} end if
-- ring[rn] = line
-- end while
-- ring = iff(full?ring[rn+1..$]:{}) & ring[1..rn]
-- return new(pipe,{joinup(ring)})</span>
<span style="color: #008080;">return</span> <span style="color: #7060A8;">new</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">joinup</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">tail</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pin</span><span style="color: #0000FF;">.</span><span style="color: #000000;">readall</span><span style="color: #0000FF;">(),</span><span style="color: #000000;">lines</span><span style="color: #0000FF;">))})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">sort_unique</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span> <span style="color: #000000;">pin</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">return</span> <span style="color: #7060A8;">new</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pipe</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">joinup</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">unique</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pin</span><span style="color: #0000FF;">.</span><span style="color: #000000;">readall</span><span style="color: #0000FF;">()))})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">procedure</span> <span style="color: #000000;">showCount</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">heading</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">name</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">getd_index</span><span style="color: #0000FF;">(</span><span style="color: #000000;">name</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fs</span><span style="color: #0000FF;">)=</span><span style="color: #004600;">NULL</span> <span style="color: #008080;">then</span> <span style="color: #7060A8;">crash</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"not found"</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">n</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">split</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">getd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">name</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fs</span><span style="color: #0000FF;">),</span> <span style="color: #008000;">"\n"</span><span style="color: #0000FF;">))</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s: %d\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">heading</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">lcs_txt</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"""
Wil van der Aalst business process management, process mining, Petri nets
Hal Abelson intersection of computing and teaching
Serge Abiteboul database theory
Samson Abramsky game semantics
Leonard Adleman RSA, DNA computing
Manindra Agrawal polynomial-time primality testing
Luis von Ahn human-based computation
Alfred Aho compilers book, the 'a' in AWK
Stephen R. Bourne Bourne shell, portable ALGOL 68C compiler
Kees Koster ALGOL 68
Lambert Meertens ALGOL 68, ABC (programming language)
Peter Naur BNF, ALGOL 60
Guido van Rossum Python (programming language)
Adriaan van Wijngaarden Dutch pioneer; ARRA, ALGOL
Dennis E. Wisnosky Integrated Computer-Aided Manufacturing (ICAM), IDEF
Stephen Wolfram Mathematica
William Wulf compilers
Edward Yourdon Structured Systems Analysis and Design Method
Lotfi Zadeh fuzzy logic
Arif Zaman Pseudo-random number generator
Albert Zomaya Australian pioneer of scheduling in parallel and distributed systems
Konrad Zuse German pioneer of hardware and software
"""</span><span style="color: #0000FF;">,</span>
<span style="color: #000000;">mainlist</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"List_of_computer_scientists.lst"</span>
<span style="color: #7060A8;">setd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">mainlist</span><span style="color: #0000FF;">,</span><span style="color: #000000;">lcs_txt</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fs</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">toName</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"aa"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">grep</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tee</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sort_unique</span><span style="color: #0000FF;">(</span><span style="color: #000000;">multireader</span><span style="color: #0000FF;">({</span><span style="color: #000000;">pipe_head</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fromName</span><span style="color: #0000FF;">(</span><span style="color: #000000;">mainlist</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">4</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">tee</span><span style="color: #0000FF;">(</span><span style="color: #000000;">grep</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fromName</span><span style="color: #0000FF;">(</span><span style="color: #000000;">mainlist</span><span style="color: #0000FF;">),</span> <span style="color: #008000;">"ALGOL"</span><span style="color: #0000FF;">),</span>
<span style="color: #008000;">"ALGOL_pioneers.lst"</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">pipe_tail</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fromName</span><span style="color: #0000FF;">(</span><span style="color: #000000;">mainlist</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">4</span><span style="color: #0000FF;">)})),</span>
<span style="color: #008000;">"the_important_scientists.lst"</span><span style="color: #0000FF;">),</span>
<span style="color: #008000;">"aa"</span><span style="color: #0000FF;">))</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Pioneer: %s"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">getd</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"aa"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fs</span><span style="color: #0000FF;">))</span>
<span style="color: #000000;">showCount</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Number of ALGOL pioneers"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"ALGOL_pioneers.lst"</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">showCount</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Number of scientists"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"the_important_scientists.lst"</span><span style="color: #0000FF;">)</span>
<span style="color: #0000FF;">?</span><span style="color: #008000;">"done"</span>
<span style="color: #0000FF;">{}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">wait_key</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8;">abort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
<!--</lang>-->
{{out}}
<pre>
7,818

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.