Testsuite: delete Windows line endings [skip ci] (#11631)
[ghc.git] / testsuite / tests / gadt / karl1.hs
index e3af7ad..b671db7 100644 (file)
@@ -1,79 +1,79 @@
-{-# LANGUAGE GADTs, KindSignatures #-}\r
-\r
--- See Trac #301\r
--- This particular one doesn't use GADTs per se, \r
--- but it does use dictionaries in constructors \r
-\r
-module Expr1 where\r
-\r
-data Expr :: * -> * where      -- Not a GADT at all\r
-  Const :: Show a => a -> Expr a\r
-               -- Note the Show constraint here\r
-  Var   :: Var a -> Expr a\r
-\r
-newtype Var a = V String\r
-\r
-instance Show (Var a) where show (V s) = s\r
-\r
---------------------------\r
-e1 :: Expr Int\r
-e1 = Const 42\r
-\r
-e2 :: Expr Bool\r
-e2 = Const True\r
-\r
-e3 :: Expr Integer\r
-e3 = Var (V "mersenne100")\r
-\r
---------------------------\r
-eval :: Expr a -> a\r
-eval (Const c) = c\r
-eval (Var v) = error ("free variable `" ++ shows v "'")\r
-\r
-{-\r
-    Up to here, everything works nicely:\r
-\r
-    \begin{verbatim}\r
-    *Expr0> eval e1\r
-    42\r
-    *Expr0> eval e2\r
-    True\r
-    *Expr1> eval e3\r
-    *** Exception: free variable `mersenne100'\r
-    \end{verbatim}\r
-\r
-    But let us now try to define a |shows| function.\r
-\r
-    In the following, without the type signature we get:\r
-    \begin{verbatim}\r
-    *Expr1> :t showsExpr\r
-    showsExpr :: forall a. (Show a) => Expr a -> String -> String\r
-    *Expr1> showsExpr e1 ""\r
-    "42"\r
-    *Expr1> showsExpr e2 ""\r
-    "True"\r
-    *Expr1> showsExpr e3 ""\r
-    "mersenne100"\r
-    \end{verbatim}\r
-\r
-    However, in the last case, the instance |Show Integer| was not used,\r
-    so should not have been required.\r
-    Therefore I would expect it to work as it is now, i.e.,\r
-    with the type signature:\r
--}\r
-\r
-showsExpr :: Expr a -> ShowS\r
-showsExpr (Const c) = shows c\r
-showsExpr (Var v) = shows v\r
-\r
-{- \r
-\r
-We used to get a complaint about the |Const| alternative (then line\r
-63) that documents that the constraint in the type of |Const| must\r
-have been ignored:\r
-\r
-    No instance for (Show a)\r
-      arising from use of `shows' at Expr1.lhs:63:22-26\r
-    Probable fix: add (Show a) to the type signature(s) for `showsExpr'\r
-    In the definition of `showsExpr': showsExpr (Const c) = shows c\r
--}\r
+{-# LANGUAGE GADTs, KindSignatures #-}
+
+-- See Trac #301
+-- This particular one doesn't use GADTs per se,
+-- but it does use dictionaries in constructors
+
+module Expr1 where
+
+data Expr :: * -> * where       -- Not a GADT at all
+  Const :: Show a => a -> Expr a
+                -- Note the Show constraint here
+  Var   :: Var a -> Expr a
+
+newtype Var a = V String
+
+instance Show (Var a) where show (V s) = s
+
+--------------------------
+e1 :: Expr Int
+e1 = Const 42
+
+e2 :: Expr Bool
+e2 = Const True
+
+e3 :: Expr Integer
+e3 = Var (V "mersenne100")
+
+--------------------------
+eval :: Expr a -> a
+eval (Const c) = c
+eval (Var v) = error ("free variable `" ++ shows v "'")
+
+{-
+    Up to here, everything works nicely:
+
+    \begin{verbatim}
+    *Expr0> eval e1
+    42
+    *Expr0> eval e2
+    True
+    *Expr1> eval e3
+    *** Exception: free variable `mersenne100'
+    \end{verbatim}
+
+    But let us now try to define a |shows| function.
+
+    In the following, without the type signature we get:
+    \begin{verbatim}
+    *Expr1> :t showsExpr
+    showsExpr :: forall a. (Show a) => Expr a -> String -> String
+    *Expr1> showsExpr e1 ""
+    "42"
+    *Expr1> showsExpr e2 ""
+    "True"
+    *Expr1> showsExpr e3 ""
+    "mersenne100"
+    \end{verbatim}
+
+    However, in the last case, the instance |Show Integer| was not used,
+    so should not have been required.
+    Therefore I would expect it to work as it is now, i.e.,
+    with the type signature:
+-}
+
+showsExpr :: Expr a -> ShowS
+showsExpr (Const c) = shows c
+showsExpr (Var v) = shows v
+
+{-
+
+We used to get a complaint about the |Const| alternative (then line
+63) that documents that the constraint in the type of |Const| must
+have been ignored:
+
+    No instance for (Show a)
+      arising from use of `shows' at Expr1.lhs:63:22-26
+    Probable fix: add (Show a) to the type signature(s) for `showsExpr'
+    In the definition of `showsExpr': showsExpr (Const c) = shows c
+-}