4 ms·
I guess the counterexample would be library functions that look like: foo :: (BarMonad m, BazApplicative b) => ConfigurationStructure t -> (b -> m t) -> [
by 14113 10y ago
I guess the counterexample would be library functions that look like:
foo :: (BarMonad m, BazApplicative b) => ConfigurationStructure t -> (b -> m t) -> [b] -> t
You can figure out a little of what it does, but how that fits into the application it supports, and what exactly it should be used for is non trivial.
Haskell programmers (whose numbers I count myself amongst) saying that "the types are the documentation" is like expecting someone to build a lego model from the picture on the box, and saying "well the studs are the documentation of how the pieces fit together". It's correct, but it misses all the nuance of how the functions should be composed, not just how they can be composed.