Haskell/Verdadeiro ou falso: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
mSem resumo de edição
m <source> -> <syntaxhighlight> (phab:T237267)
Linha 8:
No capítulo usamos sinais de igualdade para definir variáveis e funções em Haskell desta forma:
 
<sourcesyntaxhighlight lang = "haskell">
r = 5
</syntaxhighlight>
</source>
 
Isso significa que durante a avaliação do programa, todas as ocorrências de <code>r</code> são substituídas por <code>5</code> dentro do mesmo escopo. De modo similar, ao avaliar
 
<sourcesyntaxhighlight lang = "haskell">
f x = x + 3
</syntaxhighlight>
</source>
 
todas os ocorrências de <code>f</code> seguidas de um número (o argumento de <code>f</code>), são substituídas por tal valor mais três.
Linha 126:
Haskell já possui o operador de diferençal: <code>/=</code>, ''não é igual a''. Entretanto, poderíamos definí-lo facilmente usando <code>not</code> e <code>==</code>:
 
<sourcesyntaxhighlight lang = "haskell">
x /= y = not (x == y)
</syntaxhighlight>
</source>
 
Note que podemos a notação de operadores infixos até mesmo na hora de definí-los. Além disso, um operador pode ser definido a partir de qualquer símbolo [[w:ASCII|ASCII]].
Linha 172:
Nesta função, a expressão usada para calcular <math>|x|</math> depende do próprio valor de <math>x</math>. Se <math>x \ge 0</math> for verdadeiro, então usamos a primeira expressão; se for falso, a segunda. Para expressar esse processo de decisão em Haskell, usamos guardas, sendo que a função ficaria assim:<ref group=nota>Esta função já está disponível nas bibliotecas padrões de Haskell, chamada de <code>abs</code>. Não há necessidade de reimplementá-la.</ref>
 
<sourcesyntaxhighlight lang="haskell">
absoluto x
| x < 0 = 0 - x
| otherwise = x
</syntaxhighlight>
</source>
 
É interessante ver que o código acima se parece bastante com a definição matemática. Vamos por partes:
Linha 195:
Usar <code>where</code> dentro de uma função com guardas é bastante comum. Por exemplo: para saber quantas soluções reais uma [[w:Equação quadrática|equação de segundo grau]] possui, do tipo <math>ax^2+bx+c=0</math>, temos que calcular seu discriminante, <math>\Delta = b^2 - 4ac</math>. Se ele for maior que zero, há duas raízes reais; se for nulo, há uma; se for menor que zero, nenhuma. Uma função <code>numSolsReais</code> em Haskell para calcular esta quantidade, poderia ser escrita assim:
 
<sourcesyntaxhighlight lang = "haskell">
numSolsReais a b c
| delta > 0 = 2
Linha 202:
where
delta = b^2 - 4*a*c
</syntaxhighlight>
</source>
 
==Notas==