[GHC] #11342: Character kind

GHC ghc-devs at haskell.org
Thu Feb 2 19:15:01 UTC 2017


#11342: Character kind
-------------------------------------+-------------------------------------
        Reporter:  alexvieth         |                Owner:  alexvieth
            Type:  feature request   |               Status:  patch
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.10.3
      Resolution:                    |             Keywords:  DataKinds
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #10776, #12162    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by zyla):

 I think that using the promoted `Char` datatype is a good idea.

 I wouldn't however put in all the related type families (`ToUpper`,
 `IsAlpha` etc). I think it's better to provide type families for
 converting between `Char` and `Nat`, and let the user implement the needed
 functions at type level if desired. The motivation is having less code in
 the compiler.

 To sum up, my proposal is to have:

 1. Promoted `Char` datatype (already there)

 2. Character literal syntax in types

 3. Type famililes for analyzing/constructing `Symbol`s:
 {{{
 -- Pattern match a Symbol. 'Nothing when empty, 'Just '(head, tail)
 -- otherwise.
 type family UnconsSymbol (s :: Symbol) :: Maybe (Character, Symbol)
 -- Put a Character at the head of a Symbol.
 type family ConsSymbol (c :: Character) (s :: Symbol) :: Symbol
 }}}

 4. Type families for converting between `Nat` and `Char`:
 {{{
 type family CharToNat (c :: Char) :: Nat
 type familt NatToChar (n :: Nat) :: Char
 }}}

 @alexvieth: Are you planning to work on this? If not, would you mind if I
 took your patch, implemented the changes mentioned above and posted it to
 Phab?

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


More information about the ghc-tickets mailing list