packages feed

papa-0.4.0: src/Papa/Base/Data/Function.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -Wall #-}

module Papa.Base.Data.Function (
  module P,
  flip,
) where

import Data.Function as P (
  fix,
  on,
  ($),
  (&),
 )

import Data.Functor (Functor (fmap))

{-# INLINE flip #-}
-- | Apply a functorial function to a value.
--
-- >>> import Data.Maybe (Maybe(..))
-- >>> flip (Just (\x -> x)) 5
-- Just 5
-- >>> flip [(\x -> x), (\x -> x)] 3
-- [3,3]
flip ::
  (Functor f) =>
  f (a -> b) ->
  a ->
  f b
flip f a =
  fmap (\k -> k a) f