hsdata Name = Name String
data User = User { name :: Name, age :: Int }
class Monad m => MonadDatabase m where
getUser :: Name -> m User
deleteUser :: User -> m ()
User
型を(特定の場面で)便利に使用するために、 MonadDatabase
というApplication Monadを定義している AppM
がそれに相当する