preMapSP :: SP a b -> (c -> a) -> SP c b postMapSP :: (a -> b) -> SP c a -> SP c b prepostMapSP :: (a -> b) -> (c -> d) -> SP b c -> SP a d
sp `preMapSP` f = sp `serCompSP` mapSP f f `postMapSP` sp = mapSP f `serCompSP` sp prePostMapSP pre post sp = post `postMapSP` sp `preMapSP` pre