StoreFun.lhs An abstract data type of stores of integers, implemented as functions. (c) Simon Thompson, 1998. An alternative implementation of Store.lhs. Note that although it is equivalent to the list implementation as far as the operations initial, value, update are concerned, it is not possible to compare for equality or to show as a String. > module StoreFun > ( Store, > initial, -- Store > value, -- Store -> Var -> Int > update -- Store -> Var -> Int -> Store > ) where Var is the type of variables. > type Var = Char > newtype Store = Sto (Var -> Int) > initial :: Store > initial = Sto (\v -> 0) > value :: Store -> Var -> Int > value (Sto sto) v = sto v > update :: Store -> Var -> Int -> Store > update (Sto sto) v n > = Sto (\w -> if v==w then n else sto w)