{-|
Module      : Data.Vinyl.Utils.Compose
Copyright   : (c) Marcin Mrotek, 2014
License     : BSD3
Maintainer  : marcin.jan.mrotek@gmail.com

Operations on composed functor records.
-}

{-# LANGUAGE
      DataKinds
    , PolyKinds
    #-}

{-# OPTIONS_HADDOCK show-extensions #-}

module Data.Vinyl.Utils.Compose 
  ( rtraverse1 ) where

import Data.Vinyl.Functor
import Data.Vinyl

rtraverse1 :: Applicative f => Rec (Compose f g) rs -> f (Rec g rs)
-- ^Traverse a record parametrized with a composition of functors, leaving the inner functor.
rtraverse1 = rtraverse getCompose