The lambdas must flow. If I break, you can: 1. Restart: M-x haskell-process-restart 2. Configure logging: C-h v haskell-process-log (useful for debugging) 3. General config: M-x customize-mode 4. Hide these tips: C-h v haskell-process-show-debug-tips Changed directory: /home/hugo/Academic/Teaching/_Atual/TCPF/Aulas/ λ> :i Eq type Eq :: * -> Constraint class Eq a where (==) :: a -> a -> Bool (/=) :: a -> a -> Bool {-# MINIMAL (==) | (/=) #-} -- Defined in `GHC.Classes' instance Eq Cla -- Defined at /home/hugo/Academic/Teaching/_Atual/TCPF/Aulas/Aula23.hs:24:10 instance Eq Bla -- Defined at /home/hugo/Academic/Teaching/_Atual/TCPF/Aulas/Aula23.hs:8:19 instance Eq a => Eq (Maybe a) -- Defined in `GHC.Maybe' instance (Eq a, Eq b) => Eq (Either a b) -- Defined in `Data.Either' instance Eq a => Eq [a] -- Defined in `GHC.Classes' instance Eq Word -- Defined in `GHC.Classes' instance Eq a => Eq (Solo a) -- Defined in `GHC.Classes' instance Eq Ordering -- Defined in `GHC.Classes' instance Eq Int -- Defined in `GHC.Classes' instance Eq Float -- Defined in `GHC.Classes' instance Eq Double -- Defined in `GHC.Classes' instance Eq Char -- Defined in `GHC.Classes' instance Eq Bool -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) => Eq (a, b, c, d, e, f, g, h, i, j, k, l) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) => Eq (a, b, c, d, e, f, g, h, i, j, k) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) => Eq (a, b, c, d, e, f, g, h, i, j) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) => Eq (a, b, c, d, e, f, g, h, i) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) => Eq (a, b, c, d, e, f, g, h) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Eq (a, b, c, d, e, f, g) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Eq (a, b, c, d, e, f) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d) -- Defined in `GHC.Classes' instance (Eq a, Eq b, Eq c) => Eq (a, b, c) -- Defined in `GHC.Classes' instance (Eq a, Eq b) => Eq (a, b) -- Defined in `GHC.Classes' instance Eq () -- Defined in `GHC.Classes' instance Eq Integer -- Defined in `GHC.Num.Integer' λ> Gun (Gun Cle Cli) Clo == Gun (Cle (Gun Cli Clo)) :14:26-48: error: * Couldn't match expected type `Cla' with actual type `Cla -> Cla' * Probable cause: `Gun' is applied to too few arguments In the second argument of `(==)', namely `Gun (Cle (Gun Cli Clo))' In the expression: Gun (Gun Cle Cli) Clo == Gun (Cle (Gun Cli Clo)) In an equation for `it': it = Gun (Gun Cle Cli) Clo == Gun (Cle (Gun Cli Clo)) :14:31-47: error: * Couldn't match expected type `Cla -> Cla' with actual type `Cla' * The function `Cle' is applied to one value argument, but its type `Cla' has none In the first argument of `Gun', namely `(Cle (Gun Cli Clo))' In the second argument of `(==)', namely `Gun (Cle (Gun Cli Clo))' λ> Gun (Gun Cle Cli) Clo == Gun Cle (Gun Cli Clo) True λ>