Original-Via: uk.ac.ed.mrcvax; Tue, 15 Oct 91 16:19:08 BST
| Our Haskell in Haskell compiler modules are often unavoidably mutually
| recursive. For small programs you may be right, but for large programs
| mutually recursive modules are almost inevitable:
|
| i) There's always some implementation limit
| on module size, even with a C compiler...
|
| ii) Readability or the need for separate working
| may demand that a large module be broken into parts.
I'm not sure I buy this. Surely if a collection of mutually recursive
functions were to big to fit through the compiler then either some
non-recursive portions could be extracted into a separate module,
or some partition be found which minimises the inter module references,
with those that remain being passed as additional parameters (sort
or run-time linking) from a parent module. And don't forget that a
suitably pathological collection of modules could defeat even the current
provisions.
I just have the feeling that with mutual recursion allowed across
modules, then the concept of 'module' becomes a rather weak one; we
can chop up our monolithic code almost arbitrarily and call the bits
'modules' (I used to do this for my 1st year programming exercises!).
Of course I accept the facility is here to stay --- once you've given
a dog a bone ....!
| Don't functional programmers write large programs? :-) :-)
Yes they do, and the bigger the program the greater the need for
genuine structure :-)
Ian