module Data.MonoidMap.Internal.NonNull
(
NonNull
, nonNull
, unwrap
, apply
, apply2
)
where
import Prelude hiding
( null )
import Data.Monoid.Null
( MonoidNull (null) )
import Data.MonoidMap.Internal.NonNull.Unsafe
( NonNull, nonNull, unwrap )
apply :: (v -> a) -> (NonNull v -> a)
apply :: forall v a. (v -> a) -> NonNull v -> a
apply v -> a
f = v -> a
f (v -> a) -> (NonNull v -> v) -> NonNull v -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonNull v -> v
forall v. NonNull v -> v
unwrap
{-# INLINE apply #-}
apply2 :: (v1 -> v2 -> a) -> (NonNull v1 -> NonNull v2 -> a)
apply2 :: forall v1 v2 a. (v1 -> v2 -> a) -> NonNull v1 -> NonNull v2 -> a
apply2 v1 -> v2 -> a
f NonNull v1
v1 NonNull v2
v2 = v1 -> v2 -> a
f (NonNull v1 -> v1
forall v. NonNull v -> v
unwrap NonNull v1
v1) (NonNull v2 -> v2
forall v. NonNull v -> v
unwrap NonNull v2
v2)
{-# INLINE apply2 #-}