LINUX.ORG.RU

История изменений

Исправление Miguel, (текущая версия) :

class Monad m => MonadData m where getData :: m String
instance MonadData IO where
  getData =
    do putStr "Enter data:"
       readLine
instance Monad m => MonadData (ReaderT String m) where getData = ask

myCoolFunction :: MonadData m => SomeInput -> m Whatever
myCoolFunction input =
  do userData <- getData
     return (someCalculation userData input)

Исходная версия Miguel, :

class Monad m => MonadData m where getData :: m String
instance MonadData IO where
  getData =
    do putStr "Enter data:"
       readLine
instance Monad m => MonadData (ReaderT String m) where getData = ask

myCoolFunction :: MonadData m => SomeInput -> m Whatever
myCoolFunction input =
  do data <- getData
     return (someCalculation data input)