You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Aqui você vai encontrar todos os exercícios, anotações, insights e até comparações com código semelhante em JavaScript.
Tudo relativo ao curso de Haskell do professor Marcos Castro que pode ser adquirido gratuítamente na Udemy.
JavaScript não é uma linguagem com tipos fortes. Ela trabalha com valores dinâmicos e por essa razão não existe overload, não há como declarar funções com o mesmo nome e argumentos diferentes o extremo oposto do Haskell que (até então nas aulas) parece usar overload pra abstrair parte da lógica da funções.
A saída para esse esse problema foi o uso da keywordif.
Guarda é como um short-circuit, switch/case ou um if, ela valida uma condição e faz um retorno.
A sintax é bem simples, após declarar a função adiciono pipes com as condições e seus retornos e um otherwise que é semelhante ao else do if ou o default do switch/case.
quantity n | (n ==0) ="None"| (n ==1) ="One"|otherwise="Many"
Pra falar sobre o código das comparações eu tomei como exemplo o código Haskell escrito pelo professor Marcos Castro na aula 2. Fiz apenas uma pequena alteração nele. Para manter um padrão de nomenclatura, cujas funções serão escritas em camel case troquei o nome da função de "soma" pra "incrementTo".
incrementTo 0=0
incrementTo n = incrementTo(n -1) + n
No início escrevi minhas comparações usando o JavaScript da forma mais funcional que consegui. Tentando deixar o mais próximo possível do Haskell, porém não é o código que escrevo no dia-a-dia e não me pareceu uma comparação válida.
Logo nos exemplos seguintes ficou trabalhoso demais e optei por escrever um misto dos dois, que de fato é muito próximo da forma como escrevo no dia-a-dia.