Metaprogramming: Difference between revisions
Content deleted Content added
Line 57: | Line 57: | ||
{{libheader|initlib}} |
{{libheader|initlib}} |
||
<lang postscript> |
<lang postscript> |
||
/ift { |
/ift { |
||
4 dict begin |
|||
[/.if /.then] let* |
[/.if /.then] let* |
||
count array astore /.stack exch def |
count array astore /.stack exch def |
||
Line 79: | Line 80: | ||
>| 2 dup 1 gt {=} ift |
>| 2 dup 1 gt {=} ift |
||
2 |
2 |
||
</lang> |
|||
Note that even the let expression was implemented using meta programming |
|||
<lang postscript> |
|||
/let* {reverse {exch def} forall}. |
|||
</lang> |
</lang> |
||