[GHC] #12550: Inconsistent unicode display for kinds

GHC ghc-devs at haskell.org
Sun Aug 28 21:12:06 UTC 2016


#12550: Inconsistent unicode display for kinds
--------------------------------------+---------------------------------
           Reporter:  johnleo         |             Owner:
               Type:  bug             |            Status:  new
           Priority:  normal          |         Milestone:
          Component:  Compiler        |           Version:  8.0.1
           Keywords:                  |  Operating System:  MacOS X
       Architecture:  x86_64 (amd64)  |   Type of failure:  None/Unknown
          Test Case:                  |        Blocked By:
           Blocking:                  |   Related Tickets:
Differential Rev(s):                  |         Wiki Page:
--------------------------------------+---------------------------------
 With `:set -fprint-unicode-syntax`, the kind `*` should always be printed
 as `★`.  However the output is extremely inconsistent.  Here are a few
 examples from ghci, and I will add more as I run across them.

 {{{
 :t fmap
 fmap ∷ ∀ {f ∷ ★ → ★} {a} {b}. Functor f ⇒ (a → b) → f a → f b

 :i fmap
 class Functor (f ∷ * → *) where
   fmap ∷ forall a b. (a → b) → f a → f b

 :k Functor
 Functor ∷ (★ → ★) → Constraint

 :m + GHC.Generics

 :i Functor
 -- (among other output)
 instance ∀ (f ∷ * → ★). Functor f ⇒ Functor (Rec1 f)
   -- Defined in ‘GHC.Generics’
 instance Functor Par1 -- Defined in ‘GHC.Generics’
 instance ∀ i (c ∷ Meta) (f ∷ * → ★). Functor f ⇒ Functor (M1 i c f)
   -- Defined in ‘GHC.Generics’
 instance ∀ i c. Functor (K1 i c) -- Defined in ‘GHC.Generics’
 instance ∀ (f ∷ * → ★) (g ∷ * → *).
          (Functor f, Functor g) ⇒
          Functor (f :.: g)
   -- Defined in ‘GHC.Generics’
 instance ∀ (f ∷ * → ★) (g ∷ * → ★).
          (Functor f, Functor g) ⇒
          Functor (f :+: g)
   -- Defined in ‘GHC.Generics’
 instance ∀ (f ∷ * → ★) (g ∷ * → ★).
          (Functor f, Functor g) ⇒
          Functor (f :*: g)
   -- Defined in ‘GHC.Generics’

 :t datatypeName
 datatypeName
   ∷ ∀ {d} {t ∷ ★ → (* → *) → ★ → ★} {f ∷ * → *} {a}.
     Datatype ★ d ⇒
     t d f a → [Char]

 :i datatypeName
 class Datatype k (d ∷ k) where
   datatypeName ∷ forall {k1} (t ∷ k → (* → *) → k1 → *) (f ∷ *
                                                              → *) (a ∷
 k1).
                  t d f a → [Char]
   ...
         -- Defined in ‘GHC.Generics’
 }}}

 Note that `:t datatypeName` causes a panic in 8.1; I have filed a separate
 bug [https://ghc.haskell.org/trac/ghc/ticket/12549]

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


More information about the ghc-tickets mailing list