% $Id: DiscrimDesugared.oz,v 1.1 2008/01/18 21:58:00 leavens Exp leavens $ % This is a version of Discrim.oz that has been desugared % into the kernel language of chapter 2. declare % (declare is not part of the kernel, but needed by the OPI) Discrim = proc {$ A B C ?Res} local Square in Square = proc {$ N ?R} {Number.'*' N N R} end local A2 B2 in {Square A A2} {Square B B2} local A2B2 in {Number.'+' A2 B2 A2B2} local A4 in local Four in Four=4.0 {Number.'*' A Four A4} local A4C in {Number.'*' A4 C A4C} {Number.'-' A2B2 A4C Res} end end end end end end end local Temp in local Five in local Four in local Three in Five=5.0 Four=4.0 Three=3.0 {Discrim Five Four Three Temp} {Browse Temp} end end end end