mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 18:21:52 +00:00
27 lines
744 B
Haskell
27 lines
744 B
Haskell
module Util.Function where
|
|
|
|
import Startlude
|
|
|
|
(.*) :: (b -> c) -> (a0 -> a1 -> b) -> a0 -> a1 -> c
|
|
(.*) = (.) . (.)
|
|
|
|
(.**) :: (b -> c) -> (a0 -> a1 -> a2 -> b) -> a0 -> a1 -> a2 -> c
|
|
(.**) = (.) . (.*)
|
|
|
|
preimage :: Eq b => (a -> b) -> b -> [a] -> [a]
|
|
preimage f target = filter ((== target) . f)
|
|
|
|
mapFind :: ([a] -> Maybe a) -> (b -> a) -> [b] -> Maybe b
|
|
mapFind _ _ [] = Nothing
|
|
mapFind finder mapping (b : bs) =
|
|
let mB = mapFind finder mapping bs
|
|
mA = finder [mapping b]
|
|
in case (mB, mA) of
|
|
(Just b', _ ) -> Just b'
|
|
(Nothing, Just _) -> Just b
|
|
_ -> Nothing
|
|
|
|
(<<&>>) :: (Functor f, Functor g) => f (g a) -> (a -> b) -> f (g b)
|
|
f <<&>> fab = fmap (fmap fab) f
|
|
|