I'm looking at the pipes library source code and for instance in the Core module I don't understand why the author is all over the place using the pattern of defining functions like that:
runEffect = go
where
go p = ...
Or:
pull = go
where
go a' = ...
Or:
reflect = go
where
go p = ...
Is this some trick to enable some optimizations? I find it ugly, if it's some optimization trick I really wish the compiler could do it without things like that. But maybe there's another reason?