previous up next
Go backward to Quantification and Modules
Go up to Top
Go forward to A Circle Package
RISC-Linz logo

Parametric Modules

type ExtendedPointWRT[PointRep] =
   PointWRT[PointRep] &
   {add: (PointRep x PointRep) -> PointRep}

type ExtendedPoint =
   exists PointRep. ExtendedPointWRT[PointRep]

value extendPointPackage =
   fun(pointPackage: Point)
   open pointPackage as p[PointRep] in
      pack[PointRep' = PointRep
         in ExtendedPointWRT[PointRep']]
      p &
     {add = fun(a: PointRep, b: PointRep)
      p.mkpoint(p.x-coord(a)+p.x-coord(b),
      p.y-coord(a)+p.x-coord(b))}

value extendedCartesianPointPackage =
   extendPointPackage(cartesianPointPackage)


Author: Wolfgang Schreiner
Last Modification: May 27, 1998

previous up next