
On Tue, 12 Aug 2008, ajb@spamcop.net wrote:
G'day all.
Quoting Thomas Davie
: I'm not sure that it does make a lot of sense -- we allow (mutually) recursive functions, even though they come with an efficiency penalty. Why should we not allow (mutually) recursive modules, even though they too come with an efficiency penalty.
The problem is not mutually recursive modules. Plenty of statically typed languages support mutually recursive modules.
The problem is that it's impossible in general to say what the "interface" of a module is by examining the module alone. This is a very unusual property as real-world programming languages go.
You could fix this by, for example, requiring that all symbols exported from a module have an explicit type annotation.
As far as I know the real difficulties come from mutually recursive class definitions.