[GHC] #12531: Holes should be kind-polymorphic
GHC
ghc-devs at haskell.org
Wed Aug 24 16:19:14 UTC 2016
#12531: Holes should be kind-polymorphic
-------------------------------------+-------------------------------------
Reporter: mniip | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 8.0.1
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: Other | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by mniip:
@@ -5,2 +5,2 @@
- near unlifted types and results in kind check messages obscuring the holes
- or having hole errors not show up at all:
+ near unlifted types and that results in kind check messages obscuring the
+ holes or having hole errors not show up at all:
New description:
I often use holes while writing long expressions out in GHCi in order to
let the typechecker assist me with type inference.
Sometimes though I find myself in a situation where I want to use holes
near unlifted types and that results in kind check messages obscuring the
holes or having hole errors not show up at all:
{{{#!hs
> I# (_ +# 1#)
<interactive>:5:5: error:
• Couldn't match a lifted type with an unlifted type
When matching the kind of ‘Int#’
• In the first argument of ‘(+#)’, namely ‘_’
In the first argument of ‘I#’, namely ‘(_ +# 1#)’
In the expression: I# (_ +# 1#)
<interactive>:5:5: error:
• Found hole: _ :: Int#
• In the first argument of ‘(+#)’, namely ‘_’
In the first argument of ‘I#’, namely ‘(_ +# 1#)’
In the expression: I# (_ +# 1#)
• Relevant bindings include it :: Int (bound at <interactive>:5:1)
}}}
(Don't be deceived, the type of `_` there is actually `Int# |> (TYPE
U(hole:{a1qG}, 'IntRep, 'PtrRepLifted)_N)_N`)
Perhaps the type of `_` should be `forall r (a :: TYPE r). a` or even
`forall k (a :: k). a` instead?
This might lead to issues with `-fdefer-typed-holes` but maybe we could at
first disallow deferred unlifted-kinded holes? But in theory a hole is
just a call to `error` which is representation-polymorphic already.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12531#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list