ref: d7c1383311e70717d2d7f0d511d3d08de2115698
parent: ed1f511db8764fd91b8cfb1b984dbd9bd0422641
	author: Lennart Augustsson <lennart@augustsson.net>
	date: Sun Dec 24 07:43:59 EST 2023
	
Add a test
--- /dev/null
+++ b/tests/HigherKind.hs
@@ -1,0 +1,43 @@
+module HigherKind(main) where
+import Prelude
+
+data T f = C (f Int)
+
+showT :: forall f . (f Int -> String) -> T f -> String
+showT f (C x) = "(C " ++ f x ++ ")"
+
+data TT f a = CC (f a)
+
+showTT :: forall f a . (f a -> String) -> TT f a -> String
+showTT f (CC x) = "(CC " ++ f x ++ ")"
+
+type H :: (Type -> Type) -> Type
+data H a = H
+
+type HH :: forall (k::Kind) . k -> Type
+data HH a = HH
+
+hh1 :: HH Int
+hh1 = HH
+hh2 :: HH []
+hh2 = HH
+
+type List = []
+
+tt :: TT List Int
+tt = CC [1]
+
+x :: Int
+x =
+ let h :: H []
+ h = H
+ in 1
+
+showLI :: [Int] -> String
+showLI = show
+
+main :: IO ()
+main = do
+ let t = C [1]
+ putStrLn $ showT showLI t
+ putStrLn $ showTT showLI tt
--- /dev/null
+++ b/tests/HigherKind.ref
@@ -1,0 +1,2 @@
+(C [1])
+(CC [1])
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -52,6 +52,7 @@
$(TMHS) View && $(EVAL) > View.out && diff View.ref View.out
$(TMHS) IOArray && $(EVAL) > IOArray.out && diff IOArray.ref IOArray.out
$(TMHS) ST && $(EVAL) > ST.out && diff ST.ref ST.out
+ $(TMHS) HigherKind && $(EVAL) > HigherKind.out && diff HigherKind.ref HigherKind.out
errtest:
sh errtester.sh < errmsg.test
--
⑨