Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
20cc2b66
Commit
20cc2b66
authored
Nov 28, 2011
by
dreixel
Browse files
Add a test by Julien
parent
4e0e38e9
Changes
2
Hide whitespace changes
Inline
Side-by-side
testsuite/tests/polykinds/PolyKinds12.hs
0 → 100644
View file @
20cc2b66
{-# LANGUAGE PolyKinds, TypeFamilies, GADTs #-}
module
PolyKinds12
where
type
family
If1
b
t
f
type
instance
If1
True
t
f
=
t
type
instance
If1
False
t
f
=
f
type
family
If2
(
b
::
Bool
)
t
f
type
instance
If2
True
t
f
=
t
type
instance
If2
False
t
f
=
f
data
SBool
b
where
STrue
::
SBool
True
SFalse
::
SBool
False
test1
::
SBool
b
->
If1
b
Int
Char
test1
STrue
=
42
test1
SFalse
=
'H'
test2
::
SBool
b
->
If2
b
Int
Char
test2
STrue
=
42
test2
SFalse
=
'H'
type
family
Apply
f
x
type
instance
Apply
f
x
=
f
x
-- Does not work because we do not abstract the return kind of type families
-- Currently If1 returns kind *, which is too restrictive
higher1v1
::
SBool
b
->
(
If1
b
Maybe
[]
)
Char
higher1v1
STrue
=
Just
'H'
higher1v1
SFalse
=
"Hello"
higher1v2
::
SBool
b
->
Apply
(
If1
b
Maybe
[]
)
Char
higher1v2
STrue
=
Just
'H'
higher1v2
SFalse
=
"Hello"
-- higher2 :: SBool b -> (If2 b Maybe []) Int
-- higher2 STrue = Just 42
-- higher2 SFalse = "Hello"
testsuite/tests/polykinds/all.T
View file @
20cc2b66
...
...
@@ -13,3 +13,5 @@ test('PolyKinds02', normal, compile_fail, [''])
test
('
PolyKinds04
',
normal
,
compile_fail
,
[''])
test
('
PolyKinds06
',
normal
,
compile_fail
,
[''])
test
('
PolyKinds07
',
normal
,
compile_fail
,
[''])
test
('
PolyKinds12
',
expect_fail
,
compile
,
[''])
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment