Buscar

12 - Tipos Algébricos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tipos	
  Algébricos	
  
Renata	
  Carvalho	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Tipos	
  Algébricos	
  
•  Representar	
  meses:	
  Janeiro,	
  ...,	
  Dezembro	
  
•  Representar	
  um	
  Hpo	
  cujos	
  elementos	
  podem	
  
ser	
  um	
  inteiro	
  ou	
  uma	
  string	
  
•  Representar	
  o	
  Hpo	
  árvore	
  
•  Tipos	
  sinônimos	
  não	
  podem	
  ser	
  recursivos	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Tipos	
  Enumerados	
  
•  Criar	
  novos	
  Hpos	
  de	
  dados	
  e	
  novos	
  
construtores	
  de	
  Hpos:	
  
data	
  Bool	
  =	
  True	
  |	
  False	
  
data	
  Estacao	
  =	
  Primavera	
  |	
  Verao	
  |	
  Outono	
  |	
  Inverno	
  
data	
  Tempo	
  =	
  Frio	
  |	
  Quente	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Tipos	
  Enumerados	
  
•  Funções	
  usam	
  casamento	
  de	
  padrões	
  
	
  
clima	
  ::	
  Estacao	
  -­‐>	
  Tempo	
  
clima	
  Inverno	
  =	
  Frio	
  
clima	
  _	
  =	
  Quente	
  
•  Relembrando:	
  casamento	
  de	
  padrões	
  uHliza	
  
construtores	
  de	
  dados	
  (listas,	
  tuplas,	
  etc)	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Produtos	
  
type	
  Nome	
  =	
  String	
  
type	
  Idade	
  =	
  Int	
  
data	
  Pessoas	
  =	
  Pessoa	
  Nome	
  Idade	
  
	
  
Pessoa	
  “José”	
  22	
  
Pessoa	
  “Maria”	
  23	
  
	
  
showPessoa	
  ::	
  Pessoas	
  -­‐>	
  String	
  
showPessoa	
  (Pessoa	
  n	
  i)	
  =	
  n	
  ++	
  “	
  -­‐-­‐	
  ”	
  ++	
  show	
  a	
  
	
  
pessoa	
  ::	
  Nome	
  -­‐>	
  Idade	
  -­‐>	
  Pessoas	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Por	
  que	
  não	
  usar	
  tuplas?	
  
type	
  Pessoas	
  =	
  (Nome,	
  Idade)	
  
•  Com	
  Hpos	
  algébricos	
  
•  Cada	
  objeto	
  do	
  Hpo	
  tem	
  um	
  rótulo	
  explícito	
  
•  Não	
  se	
  pode	
  confundir	
  um	
  Hpo	
  com	
  outro,	
  devido	
  
ao	
  construtor	
  (definições	
  fortemente	
  Hpadas)	
  
•  Tipos	
  recursivos	
  e	
  enumerados	
  
•  Com	
  Hpos	
  sinônimos	
  
•  Elementos	
  mais	
  compactos,	
  definições	
  mais	
  curtas	
  
•  Maior	
  probabilidade	
  de	
  reusar	
  funções	
  polimórficas	
  	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Alternativas	
  
•  Construtores	
  com	
  argumentos	
  
data	
  Forma	
  =	
  Circulo	
  Float	
  |	
  Retangulo	
  Float	
  Float	
  
	
  
Circulo	
  4.9	
  ::	
  Shape	
  
Retangulo	
  4.2	
  2.0	
  ::	
  Shape	
  
	
  
eRedondo	
  ::	
  Shape	
  -­‐>	
  Bool	
  
eRedondo	
  (Circle	
  _)	
  =	
  True	
  
eRedondo	
  (Retangulo	
  _	
  _)	
  =	
  False	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Exercício	
  
•  Definir	
  a	
  função	
  abaixo:	
  
area	
  ::	
  Shape	
  -­‐>	
  Int	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Forma	
  Geral	
  
data	
  Nome_do_Tipo	
  
	
  =	
  Construtor1	
  t11	
  ...	
  t1k1	
  
	
  |	
  Construtor2	
  t21	
  ...	
  t2k2	
  
	
  ...	
  
	
  |	
  Construtorn	
  tn1	
  ...	
  tnkn	
  
•  O	
  Hpo	
  pode	
  ser	
  recursivo	
  
•  A	
  definição	
  pode	
  ser	
  polimórfica,	
  adicionando	
  
argumentos	
  ao	
  Nome_do_Tipo	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Tipos	
  Recursivos	
  
•  Tipos	
  de	
  dados	
  recursivos	
  
data	
  Expr	
  =	
  Lit	
  Int	
  |	
  Add	
  Expr	
  Expr	
  |	
  Sub	
  Expr	
  Expr	
  
	
  
•  Funções	
  definidas	
  recursivamente	
  
eval	
  ::	
  Expr	
  -­‐>	
  Int	
  
eval	
  (Lit	
  n)	
  =	
  n	
  
eval	
  (Add	
  e1	
  e2)	
  =	
  (eval	
  e1)	
  +	
  (eval	
  e2)	
  
eval	
  (Sub	
  e1	
  e2)	
  =	
  (eval	
  e1)	
  –	
  (eval	
  e2)	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Tipos	
  PolimórAicos	
  
•  Tipos	
  de	
  dados	
  polimórficos	
  
data	
  Pares	
  t	
  =	
  Par	
  t	
  t	
  
Par	
  6	
  8	
  ::	
  Pares	
  
Par	
  True	
  True	
  ::	
  Pares	
  
Par	
  []	
  [1,3]	
  ::	
  Pares	
  
•  Listas	
  
data	
  Lista	
  t	
  =	
  Nil	
  |	
  Cons	
  t	
  (List	
  t)	
  
•  Árvores	
  
data	
  Arvore	
  t	
  =	
  NilT	
  |	
  Node	
  t	
  (Arvore	
  t)	
  (Arvore	
  t)	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Exercícios	
  
•  Defina	
  as	
  seguintes	
  funções:	
  
showExpr	
  ::	
  Expr	
  -­‐>	
  String	
  
toList	
  ::	
  List	
  t	
  -­‐>	
  [t]	
  
fromList	
  ::	
  [t]	
  -­‐>	
  List	
  t	
  
depth	
  ::	
  Arvore	
  t	
  -­‐>	
  Int	
  
colapse	
  ::Arvore	
  t	
  -­‐>	
  [t]	
  
Tipos	
  
Algébricos	
  
Tipos	
  
Enumerados	
  
Produtos	
  
Por	
  que	
  não	
  
usar	
  tuplas?	
  
AlternaHvas	
  
Exercício	
  
Forma	
  Geral	
  
Tipos	
  
Recursivos	
  
Tipos	
  
Polimórficos	
  
Exercícios

Continue navegando