*Main> :info Monoid class Semigroup a => Prelude.Monoid a where mempty :: a mappend :: a -> a -> a mconcat :: [a] -> a {-# MINIMAL mempty #-} -- Defined in ‘GHC.Base’ instance Prelude.Monoid [a] -- Defined in ‘GHC.Base’ instance Prelude.Monoid Ordering -- Defined in ‘GHC.Base’ instance Semigroup a => Prelude.Monoid (Maybe a) -- Defined in ‘GHC.Base’ instance Prelude.Monoid a => Prelude.Monoid (IO a) -- Defined in ‘GHC.Base’ instance Prelude.Monoid b => Prelude.Monoid (a -> b) -- Defined in ‘GHC.Base’ instance (Prelude.Monoid a, Prelude.Monoid b, Prelude.Monoid c, Prelude.Monoid d, Prelude.Monoid e) => Prelude.Monoid (a, b, c, d, e) -- Defined in ‘GHC.Base’ instance (Prelude.Monoid a, Prelude.Monoid b, Prelude.Monoid c, Prelude.Monoid d) => Prelude.Monoid (a, b, c, d) -- Defined in ‘GHC.Base’ instance (Prelude.Monoid a, Prelude.Monoid b, Prelude.Monoid c) => Prelude.Monoid (a, b, c) -- Defined in ‘GHC.Base’ instance (Prelude.Monoid a, Prelude.Monoid b) => Prelude.Monoid (a, b) -- Defined in ‘GHC.Base’ instance Prelude.Monoid () -- Defined in ‘GHC.Base’ class Main.Monoid a -- Defined at lec7.hs:3:1 *Main> :r [1 of 1] Compiling Main ( lec7.hs, interpreted ) lec7.hs:8:14: error: • Illegal type signature in instance declaration: mempty' :: [a] (Use InstanceSigs to allow this) • In the instance declaration for ‘Monoid' [a]’ | 8 | mempty' :: [a] | ^^^ Failed, no modules loaded. Prelude> :r [1 of 1] Compiling Main ( lec7.hs, interpreted ) lec7.hs:7:10: warning: [-Wmissing-methods] • No explicit implementation for ‘mappend'’ • In the instance declaration for ‘Monoid' [a]’ | 7 | instance Monoid' [a] where | ^^^^^^^^^^^ Ok, one module loaded. *Main> :r [1 of 1] Compiling Main ( lec7.hs, interpreted ) Ok, one module loaded. *Main> :t 'a' 'a' :: Char *Main> :k Char Char :: * *Main> :t 1 :: Int 1 :: Int :: Int *Main> :t True True :: Bool *Main> :k Bool Bool :: * *Main> :t Nothing Nothing :: Maybe a *Main> :k Maybe Maybe :: * -> * *Main> :k [] [] :: * -> * *Main> :r [1 of 1] Compiling Main ( lec7.hs, interpreted ) lec7.hs:15:21: error: Illegal kind signature: ‘* -> *’ Perhaps you intended to use KindSignatures In the declaration for class ‘Functor’ | 15 | class Functor (f :: * -> *) where | ^^^^^^ Failed, no modules loaded. Prelude> :r [1 of 1] Compiling Main ( lec7.hs, interpreted ) Ok, one module loaded. *Main> :r [1 of 1] Compiling Main ( lec7.hs, interpreted ) Ok, one module loaded. *Main> :t (\ x -> x + 1) (\ x -> x + 1) :: Num a => a -> a *Main> :t (\ x -> x + 1 :: Int) (\ x -> x + 1 :: Int) :: Int -> Int *Main> :k (Int -> Int) (Int -> Int) :: * *Main> :k [Int] [Int] :: * *Main> :k [] [] :: * -> * *Main> :k Maybe Maybe :: * -> * *Main> :k Maybe Int Maybe Int :: * *Main> :k (\ x -> Maybe [x]) :1:2: error: parse error on input ‘\’ *Main>