On 14-10-19 08:10 AM, Erik Hesselink wrote:
I feel that this extension, while looking tempting for writing code
from scratch, might hurt maintainability of code.

        That depends on how you define maintainability.

Adding an explicit
import can suddenly cause type errors in completely unrelated places
(when it hides an implicit import and the new function is type
incorrect), or worse, can cause semantic change (when it hides an
implicit import and the new function is type correct, but has
different behavior). Remember that not all code is written by the same
person, or in a short time frame, so not everybody might fully
understand every module and every import of the code they're editing.

Your example requires somebody actively editing the import list. A code change causes a compile error or worse? That is not all that surprising.

No, what I find much worse is a cabal update causing an error in a module that was correct before the update. Consider

> module Main where
>
> import Foo (foo)
> import Bar
>
> main = foo

Now suppose Bar came from the package bar-1.0, and the new version bar-1.0.1 decides to export foo. With the current behaviour, this change would break my module. With Malcolm's proposal the old code would continue to work.

Anyway, count me as +1 on the proposal. It would improve the long-term stability of Haskell code.

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to