[GHC] #9182: Empty case analysis for function clauses

GHC ghc-devs at haskell.org
Sat Jun 7 18:19:22 UTC 2014


#9182: Empty case analysis for function clauses
-------------------------------------+------------------------------------
        Reporter:  dfranke           |            Owner:
            Type:  feature request   |           Status:  new
        Priority:  low               |        Milestone:
       Component:  Compiler          |          Version:  7.8.2
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown      |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+------------------------------------
Description changed by dfranke:

Old description:

> Thanks to `-XEmptyCase`, the following is legal:
>
> {{{
>   module Empty where
>
>   data Empty
>
>   empty :: Empty -> a
>   empty x = case x of { }
> }}}
>
> However, if I leave off the last line, GHC will complain that `The type
> signature for ‘empty’ lacks an accompanying binding`.
>
> I think this program should be accepted. It isn't that I'm not giving a
> definition for `empty`; it's that I'm defining it to be a function with
> no accompanying equations, as could be represented in Template Haskell by
>
>   $(return [FunD (mkName "empty") []])
>
> Currently, this too is rejected, with GHC complaining `Function binding
> for ‘empty’ has no equations`. I think this should be legal, with an
> empty list of clauses in a function definition being treated the same way
> as an empty list of matches in a case expression.

New description:

 Thanks to `-XEmptyCase`, the following is legal:

 {{{
   module Empty where

   data Empty

   empty :: Empty -> a
   empty x = case x of { }
 }}}

 However, if I leave off the last line, GHC will complain that `The type
 signature for ‘empty’ lacks an accompanying binding`.

 I think this program should be accepted. It isn't that I'm not giving a
 definition for `empty`; it's that I'm defining it to be a function with no
 accompanying equations, as could be represented in Template Haskell by

   {{{$(return [FunD (mkName "empty") []])}}}

 Currently, this too is rejected, with GHC complaining `Function binding
 for ‘empty’ has no equations`. I think this should be legal, with an empty
 list of clauses in a function definition being treated the same way as an
 empty list of matches in a case expression.

--

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


More information about the ghc-tickets mailing list