:: (a -> b) -> (c -> a) -> c -> b -package:protolude package:streamly-core