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)