Skip to content

Instantly share code, notes, and snippets.

@romulogarofalo
Created March 7, 2021 05:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save romulogarofalo/b5a4e6bc313ec5b7266c8fa1bc0b4c5e to your computer and use it in GitHub Desktop.
Save romulogarofalo/b5a4e6bc313ec5b7266c8fa1bc0b4c5e to your computer and use it in GitHub Desktop.
module Exercicios3 where
media:: [Double] -> Double
media xs = foldl (\x y -> x + y) 0.0 xs / foldl (\x _ -> x + 1) 0.0 xs
data Correncia = Dolar | Real deriving (Show, Eq)
data Dinheiro = Dinheiro { valor:: Double, correncia:: Correncia } deriving Show
converteToDolar :: Dinheiro -> Dinheiro
converteToDolar (Dinheiro valor Dolar) = (Dinheiro valor Dolar)
converteToDolar (Dinheiro valor Real) = (Dinheiro (valor*0.18) Dolar)
operaVariosDinheiros :: [Dinheiro] -> (Dinheiro -> Dinheiro)-> [Dinheiro]
operaVariosDinheiros xs func = map func xs
pegaDolar :: Dinheiro -> Bool
pegaDolar (Dinheiro _ Dolar) = True
pegaDolar (Dinheiro _ Real) = False
pegaVariosDolar :: [Dinheiro] -> [Dinheiro]
pegaVariosDolar xs = filter(\x -> pegaDolar x) xs
somaVariosDolares :: [Dinheiro] -> Double
somaVariosDolares xs = foldl (\y (Dinheiro valor tipo) -> valor + y) 0.0 $ pegaVariosDolar xs
contaDolar :: [Dinheiro] -> Int
contaDolar xs = length $ pegaVariosDolar xs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment