shithub: MicroHs

Download patch

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
--