module NHC.Binary
( (<<)
, castFst
) where
infixl <<
(<<) :: ((a->b),c) -> (c->(a,d)) -> (b,d)
-- Strict <<
--(f,c) << g = castFst f (g c)
-- Lazy <<
(f,c) << g = (\a-> (f (fst a), snd a)) (g c)
castFst :: (a->c) -> (a,b) -> (c,b)
castFst f (x,y) = (f x, y)
|