haskell / haskell/transformers

Add a kind synonym: MonadTransformer = (Type -> Type) -> (Type -> Type)

Open
#22 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Haskell
Stars
5
Forks
10
Avg merge
2h 21m
Merged PRs (30d)
1

Description

[original issue 83 by @Icelandjack]


-- The kind of monad transformers. When used, T :: MonadTransformer should serve as

-- an informal indicator that there is a MonadTrans T instance.
type MonadTransformer :: Type
type MonadTransformer = (Type -> Type) -> (Type -> Type)

Which appears all over the place, and simplifies a lot of messy kinds, MonadTrans reads fairly clear here and ComposeT (composition of monad transformers) does as well

type MonadTrans :: MonadTransformer -> Constraint

type ComposeT :: MonadTransformer -> MonadTransformer -> MonadTransformer
newtype ComposeT trans1 trans2 m a = ComposeT (trans1 (trans2 m) a)

From Elevator and others

type    Elevator :: MonadTransformer -> MonadTransformer

newtype Elevator trans m a = Elevator (trans m a)

type ReaderT :: Type -> MonadTransformer

type StateT :: Type -> MonadTransformer

type WriterT :: Type -> MonadTransformer

at very little cost (a single synonym).

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.