module AddressDB (
  Address(..),
  AddressBook,
  newAddressBook, -- :: AddressBook
  insertAddress,  -- :: AddressBook -> Address -> AddressBook
  deleteAddress,  -- :: AddressBook -> Address -> AddressBook
                  -- delete address in adr. book, returns
                  -- org. book if adr. not in book
  findMatches,    -- :: AddressBook -> String -> [Address]
                  -- given a search string, find all entries
                  -- where str is a prefix of first or last name
) where

import Database

type FirstName = String
type LastName  = String
type PhoneNr   = Int

data Address = Address  FirstName LastName PhoneNr
               deriving (Ord, Eq)


type AddressBook = Database Address