-
Notifications
You must be signed in to change notification settings - Fork 0
/
ficha4.hs
39 lines (33 loc) · 1 KB
/
ficha4.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
module Ficha4 where
import Data.List
import Data.Char
type Nome = String
type Agenda = [(Nome,[Contacto])]
data Contacto = Casa Integer
| Trab Integer
| Email String
| Tlm Integer
deriving Show
--3
emails :: [Contacto] -> [String]
emails [] = []
emails (Email x : t) = x : emails t
emails (_ : t) = emails t
--a)
acrescEmail :: Nome -> String -> Agenda -> Agenda
acrescEmail n email [] = [(n, [Email email])]
acrescEmail n email ((a,b):t) | n == a = (a, Email email : b) : t
| otherwise = (a,b) : acrescEmail n email t
--b)
verEmails :: Nome -> Agenda -> Maybe [String]
verEmails _ [] = Nothing
verEmails nome ((a,b):t) | x == nome = Just (emails b)
| x /= nome = verEmails n t
--c)
casa :: Nome -> Agenda -> Maybe Integer
casa nome [] = Nothing
casa nome ((x,c):t) | x == nome = casa x c
| x /= nome = casa nome t
consTelefs :: [Contacto] -> [Integer]
consTelefs [] = []
consTelefs c =