Anonymous user
Parametric polymorphism: Difference between revisions
m
→{{header|REXX}}: added/changed comments and whitespace, changed separator.
m (Sorry I meant C# not C++!) |
m (→{{header|REXX}}: added/changed comments and whitespace, changed separator.) |
||
Line 870:
=={{header|REXX}}==
This REXX programming example is modeled after the '''D''' example.
<lang rexx>/*REXX program demonstrates (with displays) a method of parametric polymorphism in REXX.*/
call newRoot 1.00, 3 /*new root, and also indicate 3 stems.
/* [↓] no need to label the stems. */
call addStem 1.10 /*a new stem and its initial value. */
call addStem 1.11 /*" " " " " " " */
call addStem 1.12 /*" " " " " " " */
call addStem 1.20 /*" " " " " " " */
call addStem 1.21 /*" " " " " " " */
call addStem 1.22 /*" " " " " " " */
call modRoot 50 /*
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
do k=1 for stems; _=root.j.k; ?=datatype(_,'N')▼
modRoot: do j=1 for nodes
end /*k*/ /* [↑] only add if numeric stem value.*/
end /*j*/
return
newRoot: stems=arg(2); nodes=-1; /*set NODES to a kind of "null". */▼
/*──────────────────────────────────────────────────────────────────────────────────────*/
call addStem copies('─',9); call addStem arg(1)▼
return
/*──────────────────────────────────────────────────────────────────────────────────────*/
sayNodes: say; do j=0 to nodes;
end /*k*/
say substr(_, 2) /*ignore the first (leading) blank. */
end /*j*/
say left('', stems*
return</lang>
{{out|output|text= when using the default input:}}
<pre>
═════════ ═════════ ═════════
1.00 1.00 1.00
1.10 1.10 1.10
Line 915:
1.21 1.21 1.21
1.22 1.22 1.22
(7 nodes)
═════════ ═════════ ═════════
51.00 51.00 51.00
51.10 51.10 51.10
Line 925:
51.21 51.21 51.21
51.22 51.22 51.22
(7 nodes)
</pre>
|