    {- |
    Module      :  Control.Monad.Trans.Memo.Vector.Instances
    Copyright   :  (c) Eduard Sergeev 2013
    License     :  BSD-style (see the file LICENSE)

    Maintainer  :  eduard.sergeev@gmail.com
    Stability   :  experimental
    Portability :  non-portable (multi-param classes, functional dependencies)

    Default instances for `VectorMemo` and `UVectorMemo`

    -}

    {-# LANGUAGE NoImplicitPrelude, MultiParamTypeClasses,
      UndecidableInstances, FlexibleInstances, TypeFamilies, FlexibleContexts #-}

    module Control.Monad.Memo.Vector.Instances
    (

    ) where

    import Data.Maybe

    import Data.MaybeLike
    import qualified Control.Monad.Memo.Vector as V
    import qualified Control.Monad.Memo.Vector.Expandable as E
    import qualified Control.Monad.Memo.Vector.Unsafe as U

    instance MaybeLike (Maybe v) v => V.VectorMemo v (Maybe v)

    instance MaybeLike v v => V.UVectorMemo v v

    instance MaybeLike (Maybe v) v => E.VectorMemo v (Maybe v)

    instance MaybeLike v v => E.UVectorMemo v v

    instance MaybeLike (Maybe v) v => U.VectorMemo v (Maybe v)

    instance MaybeLike v v => U.UVectorMemo v v