module Lens.Family.State.Focus where

import Control.Applicative (Applicative, pure, (<*>))
import Control.Monad (liftM)
import Data.Monoid (Monoid, mempty, mappend)

newtype Focusing m c a = Focusing { unFocusing :: m (c, a) }

instance Monad m => Functor (Focusing m c) where
  fmap f (Focusing m) = Focusing (liftM (fmap f) m)