blob: dfc7409fa36d57eb64b881744e8a9689365ce43f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
{-# LANGUAGE MultiParamTypeClasses, FlexibleContexts, FlexibleInstances
, DataKinds, NoMonomorphismRestriction, UndecidableInstances
, TypeFamilies #-}
{-# OPTIONS_GHC -Wall #-}
module T19336 where
import GHC.TypeLits
class X a b where
convert :: a -> b
instance X Int String where
convert = show
instance X String String where
convert = id
instance {-# OVERLAPPABLE #-} TypeError ('Text "Oops") => X a b where
convert = error "unreachable"
type family F a where
F String = String
F Int = String
convert_f :: X a (F a) => a -> a -> F a
convert_f _ = convert
----------
class Poly a where
poly :: a
instance Poly String where
poly = "hi"
instance Poly Int where
poly = 2
----------
oops = convert_f poly
|