{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}

module Data.Annotated.Monadic where

import BinderAnn.SrcInfo

----------------------------------------
-- Monadic types that can be annotated using some effect

class Monad m => AnnotatedM m a where
  annotateM :: m a -> SrcInfo -> m a

instance {-# INCOHERENT #-} Monad m => AnnotatedM m a where
  annotateM ma _ = ma