[Haskell-cafe] FP design
Tim Docker
timd at macquarie.com.au
Wed Nov 7 21:21:08 EST 2007
levi.stephen wrote:
> My concern (which may be inexperience ;) ) is with the monads here
> though. What if I hadn't seen that the IO monad (or any other Monad)
> was going to be necessary in the type signatures?
You'd have some refactoring to do :-) But actually, it's not possible
to create an interface that works this way without using some monad,
as the interface relies on side-effects. A pure interface would have
to look something like:
data ObjectStore = ObjectStore {
save :: Object -> (ID,ObjectStore),
retrieve :: ID -> Maybe Object,
retrieveByName :: Maybe Object
}
(ie the save method would have to return a new object store).
Instead of using IO, you could have parameterised the store over the
monad:
data ObjectStore m = ObjectStore {
save :: Object -> m ID,
retrieve :: ID -> m (Maybe Object),
retrieveByName :: String -> m (Maybe Object)
}
but given your planned use, this may well be over-abstraction.
Tim
More information about the Haskell-Cafe
mailing list