[GHC] #1799: ghci ':browse *<module>' does not list items in source order

GHC trac at galois.com
Tue Oct 23 18:51:11 EDT 2007


#1799: ghci ':browse *<module>' does not list items in source order
----------------------+-----------------------------------------------------
  Reporter:  guest    |          Owner:         
      Type:  bug      |         Status:  new    
  Priority:  normal   |      Milestone:         
 Component:  GHCi     |        Version:  6.6.1  
  Severity:  normal   |       Keywords:         
Difficulty:  Unknown  |             Os:  Unknown
  Testcase:           |   Architecture:  Unknown
----------------------+-----------------------------------------------------
 while trying to write a test for an extension of :browse, i encountered an
 issue with the existing functionality: the order of names is not stable,
 making it difficult to write meaningful tests for :browse.

 a reduced test case & output are appended below, showing that output order
 is affected by prior usage, in both 6.6.1 and HEAD.

 i would prefer for the items to appear in source order, but at the point
 :browse gets a hand on them, source location information might not be
 available; sorting by Name would be random due to uniqueIds, and
 lexicographic sorting would be confusing to users (spreading related items
 all over the alphabet, instead of keeping the order in which they appear
 in source and documentation).

 is there a way to keep the items in source order, within each module
 (modules themselves could be sorted lexicographically)? note that
 alphabetically sorting names would very much be a last resort!

 {{{
 --------------------------------------- testing :browse
 $ cat y.hs
 import Prelude()
 import Data.Maybe(catMaybes,mapMaybe)

 $ cat .ghci
 :t Data.Maybe.mapMaybe

 $ ghcii.sh --version
 The Glorious Glasgow Haskell Compilation System, version 6.6.1

 $ /cygdrive/c/fptools/ghc/compiler/stage2/ghc-inplace --interactive
 --version
 The Glorious Glasgow Haskell Compilation System, version 6.9.20071019

 $ (echo :l y.hs;echo :browse '*Main') | ghcii.sh -v0
 Data.Maybe.mapMaybe :: (a -> Maybe b) -> [a] -> [b]
 mapMaybe :: (a -> Data.Maybe.Maybe b) -> [a] -> [b]
 catMaybes :: [Data.Maybe.Maybe a] -> [a]

 $ (echo :l y.hs;echo :browse '*Main') | ghcii.sh -v0 -ignore-dot-ghci
 catMaybes :: [Data.Maybe.Maybe a] -> [a]
 mapMaybe :: (a -> Data.Maybe.Maybe b) -> [a] -> [b]

 $ (echo :l y.hs;echo :browse '*Main') |
 /cygdrive/c/fptools/ghc/compiler/stage2/ghc-inplace --inter
 active  -v0
 Data.Maybe.mapMaybe :: (a -> Maybe b) -> [a] -> [b]
 mapMaybe :: (a -> Data.Maybe.Maybe b) -> [a] -> [b]
 catMaybes :: [Data.Maybe.Maybe a] -> [a]

 $ (echo :l y.hs;echo :browse '*Main') |
 /cygdrive/c/fptools/ghc/compiler/stage2/ghc-inplace --inter
 active  -v0 -ignore-dot-ghci
 catMaybes :: [Data.Maybe.Maybe a] -> [a]
 mapMaybe :: (a -> Data.Maybe.Maybe b) -> [a] -> [b]
 }}}

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1799>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the Glasgow-haskell-bugs mailing list