Abstract data types
-- packages
x:\E %a.{ val : %a, op : %a -> Int }
x = pack[%a = Int in { val:%a, op:%a -> Int } ]((3,S))
x.op(x.val) = 4
Encapsulation
pack [ representation in interface ]( contents )
interface
--
type
\E %a. { val : %a, op : %a -> Int }
representation
--
%a = Int
\zline{(hidden data type)}
contents
--
(3,S)
slide
:
Packages -- examples