{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_HADDOCK -show-extensions #-}
module Data.IntermediateStructures1
(
mapI
, map2I
, inter
, swapinter
)
where
import GHC.Base
import GHC.List (concatMap)
mapI :: (a -> Bool) -> (a -> [a]) -> [a] -> [a]
mapI :: forall a. (a -> Bool) -> (a -> [a]) -> [a] -> [a]
mapI a -> Bool
p a -> [a]
f = (a -> [a]) -> [a] -> [a]
forall a b. (a -> [b]) -> [a] -> [b]
concatMap (\a
x -> if a -> Bool
p a
x then a -> [a]
f a
x else [a
x])
{-# INLINE mapI #-}
map2I :: (a -> Bool) -> (a -> [[a]]) -> [a] -> [a]
map2I :: forall a. (a -> Bool) -> (a -> [[a]]) -> [a] -> [a]
map2I a -> Bool
p a -> [[a]]
f = [[a]] -> [a]
forall a. Monoid a => [a] -> a
mconcat ([[a]] -> [a]) -> ([a] -> [[a]]) -> [a] -> [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> [[a]]) -> [a] -> [[a]]
forall a b. (a -> [b]) -> [a] -> [b]
concatMap (\a
x -> if a -> Bool
p a
x then a -> [[a]]
f a
x else [[a
x]])
{-# INLINE map2I #-}
inter :: (a -> b) -> (a -> c) -> (a -> b -> c -> d) -> a -> d
inter :: forall a b c d.
(a -> b) -> (a -> c) -> (a -> b -> c -> d) -> a -> d
inter a -> b
fb a -> c
fc a -> b -> c -> d
f3d a
x = a -> b -> c -> d
f3d a
x (a -> b
fb a
x) (a -> c
fc a
x)
{-# INLINE inter #-}
swapinter :: (a -> c) -> (a -> b) -> (a -> b -> c -> d) -> a -> d
swapinter :: forall a c b d.
(a -> c) -> (a -> b) -> (a -> b -> c -> d) -> a -> d
swapinter a -> c
fc a -> b
fb a -> b -> c -> d
f3d a
x = a -> b -> c -> d
f3d a
x (a -> b
fb a
x) (a -> c
fc a
x)
{-# INLINE swapinter #-}