separate compilation [was Re: Global variables?]

2003-02-05 Thread Iavor S. Diatchki
hello, Andrew J Bromage wrote: ... What H98 does is it defines a language for which separate compilation is at best extremely difficult and at worst virtually impossible without extra information which is not part of H98 (such as GHC's hi-boot files). ... why do you think separate compilation

Re: separate compilation [was Re: Global variables?]

2003-02-05 Thread Andrew J Bromage
G'day all. On Wed, Feb 05, 2003 at 04:16:33PM -0800, Iavor S. Diatchki wrote: why do you think separate compilation is difficult to achieve in Haskell 98? Because of type inference over recursive module imports. Determining the type of a function may, in general, require inferring types

Re: separate compilation [was Re: Global variables?]

2003-02-05 Thread Jon Cast
Andrew J Bromage [EMAIL PROTECTED] wrote: G'day all. On Wed, Feb 05, 2003 at 04:16:33PM -0800, Iavor S. Diatchki wrote: why do you think separate compilation is difficult to achieve in Haskell 98? Because of type inference over recursive module imports. Determining the type of a

Re: separate compilation [was Re: Global variables?]

2003-02-05 Thread Andrew J Bromage
G'day all. On Wed, Feb 05, 2003 at 08:05:56PM -0600, Jon Cast wrote: I'm not sure I follow this. If you change the type of a value exported from a given module, that's a public change, no? And if you don't, why should re-compilation be needed? Consider this: module A where import B {-

Re: separate compilation [was Re: Global variables?]

2003-02-05 Thread Jon Cast
Andrew J Bromage [EMAIL PROTECTED] wrote: G'day all. On Wed, Feb 05, 2003 at 08:05:56PM -0600, Jon Cast wrote: I'm not sure I follow this. If you change the type of a value exported from a given module, that's a public change, no? And if you don't, why should re-compilation be needed?

Re: separate compilation [was Re: Global variables?]

2003-02-05 Thread Andrew J Bromage
G'day all. On Wed, Feb 05, 2003 at 09:28:05PM -0600, Jon Cast wrote: I think I see what you're saying. I still maintain, however, that, since you've changed the type of B.b (admittedly implicitly), and B.b is exported from B, that you've changed B's interface. There is a reason make is