Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
39 lines (28 sloc) 1.02 KB
{-# LANGUAGE NoImplicitPrelude #-}
module ITMOPrelude.Categories where
-- Реализовать для всего,
-- что только можно из
import ITMOPrelude.Primitive
import ITMOPrelude.List
import ITMOPrelude.Tree
-- всевозможные инстансы для классов ниже
--------------------------------------------------------------------------------
-- Классы
class Category cat where
id :: cat a a
(.) :: cat b c -> cat a b -> cat a c
class Functor f where
fmap :: (a -> b) -> f a -> f b
class Monad m where
return :: a -> m a
(>>=) :: m a -> (a -> m b) -> m b
(>>) :: Monad m => m a -> m b -> m b
ma >> mb = ma >>= (\_ -> mb)
--------------------------------------------------------------------------------
-- Инстансы писать сюда
--------------------------------------------------------------------------------
-- Монада State
newtype State s a = State { runState :: s -> (s, a) }
instance Monad (State s) where
return = ?
(>>=) = ?