[GHC] #13823: Use NonEmpty lists in more places in the GHC API

GHC ghc-devs at haskell.org
Sat Aug 12 20:18:17 UTC 2017


#13823: Use NonEmpty lists in more places in the GHC API
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  RyanGlScott
            Type:  task              |               Status:  patch
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #8782             |  Differential Rev(s):  Phab:D3823
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by Ryan Scott <ryan.gl.scott@…>):

 In [changeset:"7d699782bf6148c115a49b5f31ada9bd7c32a7d6/ghc" 7d69978/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="7d699782bf6148c115a49b5f31ada9bd7c32a7d6"
 Use NonEmpty lists to represent lists of duplicate elements

 Summary:
 Three functions in `ListSetOps` which compute duplicate elements
 represent lists of duplicates of `[a]`. This is a really bad way to go
 about
 things, because these lists are guaranteed to always have at least one
 element
 (the "representative" of the duplicates), and several places in the GHC
 API
 call `head` (a partial function) on these lists of duplicates to retrieve
 the
 representative.

 This changes the representation of duplicates to `NonEmpty` lists instead,
 which allow for many partial uses of `head` to be made total.

 Fixes #13823.

 Test Plan: ./validate

 Reviewers: bgamari, austin, goldfire

 Reviewed By: bgamari

 Subscribers: goldfire, rwbarton, thomie

 GHC Trac Issues: #13823

 Differential Revision: https://phabricator.haskell.org/D3823
 }}}

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13823#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list