[Haskell-cafe] Imports at bottom, why not?

Niklas Haas haskell at nand.wakku.to
Tue Apr 22 18:28:00 UTC 2014


On Tue, 22 Apr 2014 14:59:44 -0300, Thiago Negri <evohunz at 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)
> """

A practical reason is that this lets you process modules dependency
graphs without ever analyzing the structure past the import list.


More information about the Haskell-Cafe mailing list