# [Haskell-cafe] What are the problems with instances for polymorphic types?

Ki Yung Ahn kyagrd at gmail.com
Mon Jun 16 08:47:40 UTC 2014

```The only value that inhabits (forall a. [a]), except bottom, is the
empty list []. You can actually experiment this with ghci.

shell-prompt\$ ghci -XRankNTypes
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help

Prelude> [] :: (forall a. [a])
[]

Prelude> [True] :: (forall a. [a])

<interactive>:7:2:
Couldn't match expected type `a1' with actual type `Bool'
`a1' is a rigid type variable bound by
an expression type signature: [a1] at <interactive>:7:1
In the expression: True
In the expression: [True] :: forall a. [a]
In an equation for `it': it = [True] :: forall a. [a]

Prelude> ['a'] :: (forall a. [a])

<interactive>:8:2:
Couldn't match expected type `a1' with actual type `Char'
`a1' is a rigid type variable bound by
an expression type signature: [a1] at <interactive>:8:1
In the expression: 'a'
In the expression: ['a'] :: forall a. [a]
In an equation for `it': it = ['a'] :: forall a. [a]

Prelude> [\x -> x] :: (forall a. [a])

<interactive>:9:2:
Couldn't match expected type `a1' with actual type `t0 -> t0'
`a1' is a rigid type variable bound by
an expression type signature: [a1] at <interactive>:9:1
The lambda expression `\ x -> x' has one argument,
but its type `a1' has none
In the expression: \ x -> x
In the expression: [\ x -> x] :: forall a. [a]

2014년 06월 15일 12:47, Gábor Lehel 쓴 글:
> In other words instances for forall-types, such as:
>
>      instance Foo (forall a. [a]) where ...
>
> It feels obvious to me that there *would* be problems with this, but I'm
> curious about what, exactly, they are.
>
> Could someone familiar with the matter either elaborate on them, or
> refer me to an existing explanation, a previous discussion, or something
> of the sort?
>
> I *don't* have any kind of use case in mind, I'm merely seeking a better
> understanding of the type-system issues involved.
>
> (I attempted Google, but didn't have much success.)
>