{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} {-# HLINT ignore "Use camelCase" #-} {-# HLINT ignore "Redundant bracket" #-} module Aula08 where y :: Integer y = 600 fun :: Integer -> Integer fun 10 = 100 fun x = x + 50 g :: (Integer -> Integer) -> String g _ = "Oi amigo" h :: String -> (Integer -> Integer) h "Hugo" = fun h _ = id mais :: (Integer, Integer) -> Integer mais (x,y) = x+y mais' :: Integer -> Integer -> Integer mais' x y = x + y lista_de_nomes :: [String] lista_de_nomes = ["Hugo", "Fellipe", "Tales", "..."] lista_de_nomes' :: [String] lista_de_nomes' = "Hugo" : "Fellipe" : "Tales" : "..." : [] ao_quadrado :: Integer -> Integer ao_quadrado x = x^2 naturais :: [Integer] naturais = [0 ..] quadrados :: [Integer] quadrados = map ao_quadrado naturais quadrados_impares :: [Integer] quadrados_impares = filter odd quadrados fibo_rec :: Integer -> Integer fibo_rec 0 = 0 fibo_rec 1 = 1 fibo_rec n = (fibo_rec (n-1)) + (fibo_rec (n-2)) fibos :: [Integer] fibos = map fibo_rec naturais fibos_magico :: [Integer] -- fibos_magico = 0 : 1 : (zipWith mais' fibos_magico (tail fibos_magico)) fibos_magico = 0 : 1 : (zipWith (+) fibos_magico (tail fibos_magico)) a = mais' 10 (mais' 20 (mais' 30 40)) b = mais' 10 $ mais' 20 $ mais' 30 40 c = 10 + 20 + 30 + 40 d = (+) 10 20 data AlunosPresentes = Fellipe | Pedro | Bruna | Mariane | Tales | Antonio | Vitor | Stefanne | Igor deriving (Show, Eq) data Lista a = Vazia | Junta a (Lista a) deriving (Show, Eq) cauda :: Lista a -> Lista a cauda Vazia = Vazia cauda (Junta _ lista_de_a) = lista_de_a minha_lista = Junta "Hugo" Vazia minha_outra_lista = Junta "Nobrega" minha_lista instance Functor Lista where fmap :: (a -> b) -> Lista a -> Lista b fmap _ Vazia = Vazia fmap f (Junta bla ble) = Junta (f bla) (fmap f ble) alguns_naturais :: Lista Integer alguns_naturais = Junta 0 (Junta 1 (Junta 2 (Junta 3 Vazia))) quadrados_de_alguns_naturais = fmap (^2) alguns_naturais data Naturais = Zero | Suc Naturais deriving (Show, Eq) um :: Naturais um = Suc Zero dois :: Naturais dois = Suc um tres :: Naturais tres = Suc dois quatro = Suc um -- crime