[Haskell-cafe] Re: [Haskell] Top Level <-
Ganesh Sittampalam
ganesh at earth.li
Sun Aug 31 10:39:00 EDT 2008
On Sun, 31 Aug 2008, Adrian Hey wrote:
> Thanks for taking the time to do this Dan. I think the safety
> requirement has been met, but I think it fails on the improved API. The
> main complaint would be what I see as loss of modularity, in that
> somehow what should be a small irrelevant detail of the implementation
> of some obscure module somewhere has propogated it's way all the way
> upto main.
That's the key point, as I see it - they aren't "irrelevant details of the
implementation", they are requirements the implementation places on its
context in order for that implementation to be correct. So they should be
communicated appropriately.
> To me this seems completely at odds with what I thought was generally
> accepted wisdom of how to write good maintainable, modular software.
> Namely hiding as much implemention detail possible and keeping APIs
> as simple and stable as they can be. I don't know if I'm alone in
> that view nowadays.
It's no problem to hide implementation detail, but I don't think you
should hide the *requirement* of the implementation that it has
constraints on how it is called, namely that it requires once-only
initialisation or whatever.
> Purists aren't going to like it, but I think folk *will* be using "real"
> global variables in I/O libs for the forseeable future. Seems a shame
> that they'll have to do this with unsafePerformIO hack though :-(
>From a "purist" point of view, it's a shame that they choose to do it at
all :-)
Ganesh
More information about the Haskell-Cafe
mailing list