RosettaCodeData/Task/Function-composition/PostScript/function-composition.ps

13 lines
373 B
PostScript

/compose { % f g -> { g f }
[ 3 1 roll exch
% procedures are not executed when encountered directly
% insert an 'exec' after procedures, but not after operators
1 index type /operatortype ne { /exec cvx exch } if
dup type /operatortype ne { /exec cvx } if
] cvx
} def
/square { dup mul } def
/plus1 { 1 add } def
/sqPlus1 /square load /plus1 load compose def