Haskell/Soluções: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Adicionados exercícios a →‎Declaração de tipos
Linha 638:
| Casamento Nome Nome Data -- nome 1, nome 2, Data
</source>
 
 
{{Exercícios|1=
# Reescreva a função <code>mostrarData</code> usando a declaração de <tt>Data</tt> na forma de registro e usando suas funções de acesso.
# Trantado-se de registros e dentro de um mesmo módulo, por que dois campos, de dois tipos diferentes, não podem ter o mesmo nome?}}
 
# <source lang="haskell">
data Data = Data {ano :: Int, mes :: Int, dia :: Int}
 
mostrarData :: Data -> String
mostrarData d = show (ano d) ++ "-" ++ show (mes d) ++ "-" ++ show (dia d)
</source>
#
# Cada campo torna-se uma função de acesso. Sendo estas funções realacionadas as tipos distintos, suas assinaturas de tipos serão diferentes para cada caso. Entretanto, Haskell não permite que uma função tenha mais que uma assinatura de tipo. Em outras palavras, é impossível ter <code>campo1 :: Dado1 -> Int</code> e <code>campo1 :: Dado2 -> Int</code> no mesmo lugar, por exemplo.
 
== [[Haskell/Lambdas e operadores|Lambdas e operadores]] ==