between-0.11.0.0: src/Data/Function/Between/Strict/Internal.hs
{-# LANGUAGE NoImplicitPrelude #-}
-- |
-- Module: $HEADER$
-- Description: Definitions used by family of strict function combinators.
-- Copyright: (c) 2013-2015, Peter Trško
-- License: BSD3
--
-- Maintainer: peter.trsko@gmail.com
-- Stability: experimental
-- Portability: NoImplicitPrelude
--
-- Definitions used by family of strict function combinators. These may come
-- handy, but clash with definitions available via "Prelude".
--
-- /Module available since version 0.11.0.0./
module Data.Function.Between.Strict.Internal
( (.)
, flip
)
where
import Prelude (($!))
-- | Strict variant of function composition. Defined as:
--
-- @
-- (f . g) x = f '$!' g '$!' x
-- @
--
-- /Internally used since version 0.10.0.0. Moved to/
-- /"Data.Function.Between.Strict.Internal" module and exposed in version/
-- /0.11.0.0./
(.) :: (b -> c) -> (a -> b) -> a -> c
(f . g) x = f $! g $! x
infixr 9 .
{-# INLINE (.) #-}
-- | Strict variant of 'Data.Function.flip'. Defined as:
--
-- @
-- 'flip' f b a = f '$!' a '$!' b
-- @
--
-- /Since version 0.11.0.0./
flip :: (a -> b -> c) -> b -> a -> c
flip f b a = (f $! a) $! b
{-# INLINE flip #-}