The next big Haskell project is about to start! 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/2023.2/TCPF/Aulas/ λ> :i Num type Num :: * -> Constraint class Num a where (+) :: a -> a -> a (-) :: a -> a -> a (*) :: a -> a -> a negate :: a -> a abs :: a -> a signum :: a -> a fromInteger :: Integer -> a {-# MINIMAL (+), (*), abs, signum, fromInteger, (negate | (-)) #-} -- Defined in `GHC.Num' instance Num Word -- Defined in `GHC.Num' instance Num Integer -- Defined in `GHC.Num' instance Num Int -- Defined in `GHC.Num' instance Num Float -- Defined in `GHC.Float' instance Num Double -- Defined in `GHC.Float' λ> :t 3 3 :: Num a => a λ> :t 5645 5645 :: Num a => a λ> :t 5.5 5.5 :: Fractional a => a λ> x = 5.5 :: Float λ> :t x x :: Float λ> y = 5.5 :: Integer :15:5-7: error: * No instance for (Fractional Integer) arising from the literal `5.5' * In the expression: 5.5 :: Integer In an equation for `y': y = 5.5 :: Integer λ> z = 3 λ> :t z z :: Num a => a λ> :t w w :: Integer λ> w 3 λ> :t w w :: Integer λ> :t w w :: Integer λ> :t w w :: Num a => a λ> :i Fractional type Fractional :: * -> Constraint class Num a => Fractional a where (/) :: a -> a -> a recip :: a -> a fromRational :: Rational -> a {-# MINIMAL fromRational, (recip | (/)) #-} -- Defined in `GHC.Real' instance Fractional Float -- Defined in `GHC.Float' instance Fractional Double -- Defined in `GHC.Float' λ> :i [] type [] :: * -> * data [] a = [] | a : [a] -- Defined in `GHC.Types' instance Applicative [] -- Defined in `GHC.Base' instance Eq a => Eq [a] -- Defined in `GHC.Classes' instance Functor [] -- Defined in `GHC.Base' instance Monad [] -- Defined in `GHC.Base' instance Monoid [a] -- Defined in `GHC.Base' instance Ord a => Ord [a] -- Defined in `GHC.Classes' instance Semigroup [a] -- Defined in `GHC.Base' instance Show a => Show [a] -- Defined in `GHC.Show' instance MonadFail [] -- Defined in `Control.Monad.Fail' instance Read a => Read [a] -- Defined in `GHC.Read' instance Foldable [] -- Defined in `Data.Foldable' instance Traversable [] -- Defined in `Data.Traversable' λ> fun2 [5,6,7] 25 λ> fun2 [] 0 λ> fun2 [] 0 λ> :i Vazia type role Lista phantom type Lista :: forall {k}. k -> * data Lista a = Vazia -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:15:16 λ> :t Vazia Vazia :: forall {k} (a :: k). Lista a λ> :t Vazia Vazia :: Lista a λ> :t Cons Cons :: a -> Lista a -> Lista a λ> x = Cons 1 $ Cons 2 $ Cons 3 $ Vazia λ> x x :: Num a => Lista a λ> y = Cons 1 Cons :51:12-15: error: * Couldn't match expected type: Lista a with actual type: a0 -> Lista a0 -> Lista a0 * Probable cause: `Cons' is applied to too few arguments In the second argument of `Cons', namely `Cons' In the expression: Cons 1 Cons In an equation for `y': y = Cons 1 Cons * Relevant bindings include y :: Lista a (bound at :51:1) λ> y = Cons "Hugo" $ Cons " Nobrega" $ Vazia λ> y y :: Lista String λ> :t 1 1 :: Num a => a λ> :t "Hugo" "Hugo" :: String λ> x x :: Num a => Lista a λ> :i Show type Show :: * -> Constraint class Show a where showsPrec :: Int -> a -> ShowS show :: a -> String showList :: [a] -> ShowS {-# MINIMAL showsPrec | show #-} -- Defined in `GHC.Show' instance (Show a, Show b) => Show (Either a b) -- Defined in `Data.Either' instance Show a => Show [a] -- Defined in `GHC.Show' instance Show Word -- Defined in `GHC.Show' instance Show a => Show (Solo a) -- Defined in `GHC.Show' instance Show GHC.Types.RuntimeRep -- Defined in `GHC.Show' instance Show Ordering -- Defined in `GHC.Show' instance Show a => Show (Maybe a) -- Defined in `GHC.Show' instance Show Integer -- Defined in `GHC.Show' instance Show Int -- Defined in `GHC.Show' instance Show Char -- Defined in `GHC.Show' instance Show Bool -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d) => Show (a, b, c, d) -- Defined in `GHC.Show' instance (Show a, Show b, Show c) => Show (a, b, c) -- Defined in `GHC.Show' instance (Show a, Show b) => Show (a, b) -- Defined in `GHC.Show' instance Show () -- Defined in `GHC.Show' instance Show Float -- Defined in `GHC.Float' instance Show Double -- Defined in `GHC.Float' λ> x :62:1: error: Variable not in scope: x λ> x Cons 1 (Cons 2 (Cons 3 Vazia)) λ> y Cons "Hugo " (Cons "Nobrega" Vazia) λ> :t show show :: Show a => a -> String λ> x 1 SEP 2 SEP 3 SEP λ> y "Hugo " SEP "Nobrega" SEP λ> y "Hugo " SEP "Nobrega" SEP ? λ> x 1 SEP 2 SEP 3 SEP ? λ> :t () () :: () λ> y "Hugo " SEP "Nobrega" SEP ? λ> y "Hugo " SEP "Nobrega" SEP _|_ λ> y "Hugo " SEP "Nobrega" λ> x 1 SEP 2 SEP 3 λ> :i Eq type Eq :: * -> Constraint class Eq a where (==) :: a -> a -> Bool (/=) :: a -> a -> Bool {-# MINIMAL (==) | (/=) #-} -- Defined in `GHC.Classes' 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 a => Eq (Maybe a) -- Defined in `GHC.Maybe' instance (Eq a, Eq b) => Eq (Either a b) -- Defined in `Data.Either' instance Eq Integer -- Defined in `GHC.Num.Integer' λ> :i Ord type Ord :: * -> Constraint class Eq a => Ord a where compare :: a -> a -> Ordering (<) :: a -> a -> Bool (<=) :: a -> a -> Bool (>) :: a -> a -> Bool (>=) :: a -> a -> Bool max :: a -> a -> a min :: a -> a -> a {-# MINIMAL compare | (<=) #-} -- Defined in `GHC.Classes' instance Ord a => Ord [a] -- Defined in `GHC.Classes' instance Ord Word -- Defined in `GHC.Classes' instance Ord a => Ord (Solo a) -- Defined in `GHC.Classes' instance Ord Ordering -- Defined in `GHC.Classes' instance Ord Int -- Defined in `GHC.Classes' instance Ord Float -- Defined in `GHC.Classes' instance Ord Double -- Defined in `GHC.Classes' instance Ord Char -- Defined in `GHC.Classes' instance Ord Bool -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l) => Ord (a, b, c, d, e, f, g, h, i, j, k, l) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k) => Ord (a, b, c, d, e, f, g, h, i, j, k) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j) => Ord (a, b, c, d, e, f, g, h, i, j) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i) => Ord (a, b, c, d, e, f, g, h, i) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h) => Ord (a, b, c, d, e, f, g, h) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g) => Ord (a, b, c, d, e, f, g) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d) -- Defined in `GHC.Classes' instance (Ord a, Ord b, Ord c) => Ord (a, b, c) -- Defined in `GHC.Classes' instance (Ord a, Ord b) => Ord (a, b) -- Defined in `GHC.Classes' instance Ord () -- Defined in `GHC.Classes' instance Ord a => Ord (Maybe a) -- Defined in `GHC.Maybe' instance (Ord a, Ord b) => Ord (Either a b) -- Defined in `Data.Either' instance Ord Integer -- Defined in `GHC.Num.Integer' λ> :i Ordering type Ordering :: * data Ordering = LT | EQ | GT -- Defined in `GHC.Types' instance Eq Ordering -- Defined in `GHC.Classes' instance Monoid Ordering -- Defined in `GHC.Base' instance Ord Ordering -- Defined in `GHC.Classes' instance Semigroup Ordering -- Defined in `GHC.Base' instance Enum Ordering -- Defined in `GHC.Enum' instance Show Ordering -- Defined in `GHC.Show' instance Read Ordering -- Defined in `GHC.Read' instance Bounded Ordering -- Defined in `GHC.Enum' λ> :t Cons2 Cons2 :: a -> Lista2 a -> Lista2 a λ> z = Cons2 1 Vazia2 λ> :t z z :: Num a => Lista2 a λ> z = Cons2 1 Vazia2 Vazia2 λ> :t z z :: Lista2 [Char] λ> z Cons2 1 (Cons2 2 Vazia2) λ> sinal -1 :110:7: error: * No instance for (Num (Integer -> String)) arising from a use of `-' (maybe you haven't applied a function to enough arguments?) * In the expression: sinal - 1 In an equation for `it': it = sinal - 1 λ> sinal (-1) "Negativo" λ> sinal 0 "Zero" λ> sinal 32423 "Positivo" λ> sinal 32423 "Positivo" λ> sinal3 (-3) "Negativo" λ> sinal3 0 "Zero" λ> sinal3 23423 "*** Exception: /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:(51,12)-(53,14): Non-exhaustive patterns in case λ> sinal3 23423 "Positivo" λ> sinal4 13423 "Positivo" λ> sinal4 (-234324) "Negativo" λ> t No 65 Folha (No 3 (No 0 Folha Folha) Folha) λ> s No 65 Folha (No 3 (No 0 Folha Folha) Folha) λ> s == t :139:3-4: error: * No instance for (Eq (ArvBin Integer)) arising from a use of `==' * In the expression: s == t In an equation for `it': it = s == t λ> s == t True λ> s == u :145:6: error: * Couldn't match type `[Char]' with `Integer' Expected: ArvBin Integer Actual: ArvBin String * In the second argument of `(==)', namely `u' In the expression: s == u In an equation for `it': it = s == u λ> 3 == "Hugo" :146:1: error: * No instance for (Num String) arising from the literal `3' * In the first argument of `(==)', namely `3' In the expression: 3 == "Hugo" In an equation for `it': it = 3 == "Hugo" λ> s No 65 Folha (No 3 (No 0 Folha Folha) Folha) λ> :i Show type Show :: * -> Constraint class Show a where showsPrec :: Int -> a -> ShowS show :: a -> String showList :: [a] -> ShowS {-# MINIMAL showsPrec | show #-} -- Defined in `GHC.Show' instance Show a => Show (Lista2 a) -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:31:12 instance Show a => Show (Lista a) -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:19:10 instance Show a => Show (ArvBin a) -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:67:13 instance (Show a, Show b) => Show (Either a b) -- Defined in `Data.Either' instance Show a => Show [a] -- Defined in `GHC.Show' instance Show Word -- Defined in `GHC.Show' instance Show a => Show (Solo a) -- Defined in `GHC.Show' instance Show GHC.Types.RuntimeRep -- Defined in `GHC.Show' instance Show Ordering -- Defined in `GHC.Show' instance Show a => Show (Maybe a) -- Defined in `GHC.Show' instance Show Integer -- Defined in `GHC.Show' instance Show Int -- Defined in `GHC.Show' instance Show Char -- Defined in `GHC.Show' instance Show Bool -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e) -- Defined in `GHC.Show' instance (Show a, Show b, Show c, Show d) => Show (a, b, c, d) -- Defined in `GHC.Show' instance (Show a, Show b, Show c) => Show (a, b, c) -- Defined in `GHC.Show' instance (Show a, Show b) => Show (a, b) -- Defined in `GHC.Show' instance Show () -- Defined in `GHC.Show' instance Show Float -- Defined in `GHC.Float' instance Show Double -- Defined in `GHC.Float' λ> :i Functor type Functor :: (* -> *) -> Constraint class Functor f where fmap :: (a -> b) -> f a -> f b (<$) :: a -> f b -> f a {-# MINIMAL fmap #-} -- Defined in `GHC.Base' instance Functor (Either a) -- Defined in `Data.Either' instance Functor [] -- Defined in `GHC.Base' instance Functor Solo -- Defined in `GHC.Base' instance Functor Maybe -- Defined in `GHC.Base' instance Functor IO -- Defined in `GHC.Base' instance Functor ((->) r) -- Defined in `GHC.Base' instance Functor ((,,,) a b c) -- Defined in `GHC.Base' instance Functor ((,,) a b) -- Defined in `GHC.Base' instance Functor ((,) a) -- Defined in `GHC.Base' λ> :i ArvBin type ArvBin :: * -> * data ArvBin a where Folha :: ArvBin a No :: a -> ArvBin a -> ArvBin a -> ArvBin a -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:64:1 instance Eq a => Eq (ArvBin a) -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:67:19 instance Show a => Show (ArvBin a) -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:67:13 λ> :t fmap fmap :: Functor f => (a -> b) -> f a -> f b λ> t No 65 Folha (No 3 (No 0 Folha Folha) Folha) λ> :t (*2) (*2) :: Num a => a -> a λ> fmap (*2) t No 130 Folha (No 6 (No 0 Folha Folha) Folha) λ> :t show show :: Show a => a -> String λ> fmap show t No "65" Folha (No "3" (No "0" Folha Folha) Folha) λ> fmap (+ 15) t No 80 Folha (No 18 (No 15 Folha Folha) Folha) λ> fmap (+ 15) t No 80 Folha (No 18 (No 15 Folha Folha) Folha) λ> :t ArvBin :1:1-6: error: * Illegal term-level use of the type constructor `ArvBin' defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:64:1 * In the expression: ArvBin λ> :t ArvBin :1:1-6: error: * Illegal term-level use of the type constructor `ArvBin' defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:64:1 * In the expression: ArvBin λ> :i ArvBin type ArvBin :: * -> * data ArvBin a where Folha :: ArvBin a No :: a -> ArvBin a -> ArvBin a -> ArvBin a -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:64:1 instance Eq a => Eq (ArvBin a) -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:67:19 instance Functor ArvBin -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:67:23 instance Show a => Show (ArvBin a) -- Defined at /home/hugo/Academic/Teaching/2023.2/TCPF/Aulas/Aula10.hs:67:13 λ>