{-# LANGUAGE NoImplicitPrelude #-}

module Papa.Prelude.Core.Data.Functor(
  map
, flip
, unzip
) where

import Data.Functor(Functor(fmap), (<$>))

map ::
  Functor f =>
  (a -> b)
  -> f a
  -> f b
map =
  fmap

flip ::
  Functor f =>
  f (a -> b)
  -> a
  -> f b
flip f a =
  (\k -> k a) <$> f

unzip ::
  Functor f =>
  f (a, b)
  -> (f a, f b)
unzip x =
  ((\(a, _) -> a) <$> x, (\(_, b) -> b) <$> x)