Quoth Mike Meyer <[EMAIL PROTECTED]>: | [EMAIL PROTECTED] (Alex Martelli) writes: ... |> But then, the above criticism applies: if interface and implementation |> of a module are tightly coupled, you can't really do fully modular |> programming AND static typing (forget type inferencing...). | | I beg to differ. Eiffel manages to do this quite well. Then again, | every Eiffel environment comes with tools to extract the interface | information from the code. With SmartEiffel, it's a command called | "short". Doing "short CLASSNAME" is like doing "pydoc modulename", | except that it pulls routine headers and DbC expression from the code, | and not just from comments.
And you probably think Eiffel supports fully modular programming, as I thought Objective CAML did. But Alex seems not to agree. The way I understand it, his criteria go beyond language level semantics to implementation details, like whether a change to a module may require dependent modules to be recompiled when they don't need to be rewritten. I don't know whether it's a reasonable standard, but at any rate hopefully he will explain it better than I did and you can decide for oneself whether it's an important one. Donn Cave, [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list