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