In that case, there is no language that is "good enough", because liking code folding is language agnostic.

Personally, I like imports at the top, as they let me know what functions I can expect to find in the module. At least, if used properly. Which shows the real problem with this suggestion: some modules will have imports at the top and some at the bottom, so if you're looking at the middle of the module and want to check on them, you've got to guess where they are.

Frankly, if the goal is to get them out of the way, I'd rather see "local imports" in a where or in clause, so you can add them to the expression that needs them. But that has little enough utility that I'd rather not do it, either. Hmm, maybe only in the "import Module (thing ...)" form? Nah.


On Tue, Apr 22, 2014 at 1:18 PM, Thiago Negri <evohunz@gmail.com> wrote:
The desired editor features are written in the haskell spec?
I'm talking about the language in an editor/IDE agnostic way.
If the IDE/editor is hiding it for you, it is because the language failed to be good enough to be "out of the way".
So, I guess this is a +1.




2014-04-22 15:04 GMT-03:00 Ben Foppa <benjamin.foppa@gmail.com>:
Why not have an editor that collapses them?


On Tue, Apr 22, 2014 at 1:59 PM, Thiago Negri <evohunz@gmail.com> wrote:
When reading code, I find it quite distracting to have to get past the import list to reach the actual module code, as the import list can be (and often is) quite big.

So, why not issue import statements at the bottom of a module file?

Likewise, we can use "where" statements to define names used in a function after using them, so they don't distract the reader.

I'm against imports at the middle of the file.
But I guess being able to issue them at the end of the module could make sense if you want to get the reader straight to the code.

A language pragma could be used to select between top imports or bottom imports (can't use both).

What do you think?

Example:

"""
{-# LANGUAGE LateImports #-}
module Foo where

bar :: String
bar = "quux"

baz :: Fiz
baz = mkFiz

import Fiz (Fiz, mkFiz)
"""


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe




_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe