
#10188: prefix type-level cons can't be parsed -------------------------------------+------------------------------------- Reporter: Kinokkory | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.4 (Parser) | Keywords: Resolution: | Architecture: Operating System: Unknown/Multiple | Unknown/Multiple Type of failure: GHC rejects | Test Case: valid program | Blocking: Blocked By: | Differential Revisions: Related Tickets: | -------------------------------------+------------------------------------- Description changed by Kinokkory: Old description:
Whereas other type operators (whether used as type families or used as data constructors) can be safely used in a prefix form, only the type- level cons of the built-in list kind can't be used in a prefix form.
It really is a problem because we don't have any means to express type- level cons itself in source code. This for example prevents us from writing a generic type-level foldr that takes the built-in list and other similar data types alike.
In a ghci:
{{{#!hs
:set -XDataKinds -XTypeOperators data Listy a = a ::: Listy a :kind! (:::) (:::) :: k -> Listy k -> Listy k = forall (k :: BOX). (':::) :kind! (:)
<interactive>:1:2: parse error on input ‘:’ }}}
New description: Whereas other type operators (whether used as type families or used as data constructors) can be safely used in a prefix form, only the type- level cons of the built-in list kind can't be used in a prefix form. It really is a problem because we don't have any means to express the type-level cons itself in source code. This for example prevents us from writing a generic type-level foldr that takes the built-in list and other similar data types alike. In a ghci: {{{#!hs
:set -XDataKinds -XTypeOperators data Listy a = a ::: Listy a | Nily :kind! (:::) (:::) :: k -> Listy k -> Listy k = forall (k :: BOX). (':::) :kind! (:)
<interactive>:1:2: parse error on input ‘:’ }}} -- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10188#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler