Skip to content

Relax qualified import syntax

Problem

Case 1.

import Data.HashMap (HashMap)
import qualified Data.HashMap as HashMap
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Set (Set)
import qualified Data.Set as Set
import Data.Text (Text)
import qualified Data.Text as Text

Module names start in different columns, so the user cannot search it without help of tools, so the code is unreadable.

Case 2.

import           Data.HashMap (HashMap)
import qualified Data.HashMap as HashMap
import           Data.Map (Map)
import qualified Data.Map as Map
import           Data.Set (Set)
import qualified Data.Set as Set
import           Data.Text (Text)
import qualified Data.Text as Text

Too many space used, too less space left for imported items list, too hard to maintain without special tools.

Proposal

Allow to write qualified keyword after module name:

import Data.HashMap (HashMap)
import Data.HashMap qualified as HashMap
import Data.Map (Map)
import Data.Map qualified as Map
import Data.Set (Set)
import Data.Set qualified as Set
import Data.Text (Text)
import Data.Text qualified as Text

All the problems solved!

This proposal looks a little like ShorterImportSyntax and #10478, but differs from them in such ways:

  1. It doesn't actually make imports shorter in visible symbols, only in lines used (in case of very long imported items list), a little.
  2. It doesn't introduce new syntax constructions looking like existing but doing other things.
  3. It is easy to implement and understand.
  4. It looks more natural from the point of view of English language.
Trac metadata
Trac field Value
Version 8.0.1
Type FeatureRequest
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler (Parser)
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information