% $Id: SuperSize.oz,v 1.1 2008/02/01 15:44:04 leavens Exp leavens $ % ::= % single(name: diskSizes: >) % | grid(name: elements: >) % ::= > % ::= % ::= null % | T '|' declare % prepend "super-" to the given string % SuperName: }: > fun {SuperName N} {Append "super-" N} end % DoubleAll: >}: > fun {DoubleAll Ls} {Map Ls fun {$ N} 2*N end} end % SuperSize: >: fun {SuperSize Comp} case Comp of single(name: N diskSizes: Disks) then single(name: {SuperName N} diskSizes: {DoubleAll Disks}) [] grid(name: N elements: Computers) then grid(name: {Append "super-" N } elements: {Map Computers SuperSize}) end end