Skip to content

Jean-Lukas/haskell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

image

O que é Haskell

Haskell é uma linguagem de paradigma funcional, fortemente tipada e estática.

Toda linguagem com paradigma funcional é imutável e usa expressões matemática, não têm efeitos colaterais, evita bugs.

Haskell tem laziness que seria processamento preguiçoso, ele não calcula coisas desnecessárias, só o que é preciso.

Haskell não é uma linguagem para iniciantes! se você for bastante curioso e inteligente, mesmo ela sendo diferente de todas linguagens você poderá compreendê-la com o tempo,e seu conhecimento vai se expandir bastante.

Como instalar o Haskell no Linux

Instalação no Ubuntu

sudo add-apt-repository -y ppa:hvr/ghc
sudo apt-get update
sudo apt-get install -y cabal-install-XXX ghc-YYY

Instalação no Manjaro/Arch

sudo pacman -S ghc cabal-install happy alex haskell-haddock-library

Instalação no Fedora

sudo dnf install ghc cabal-install stack

Instalação no Windows

Para instalar no Windows acesse o site oficial do Haskell -> Site do Haskell

Uma breve introdução ao haskell

Já vou supor que você já instalou o Haskell tanto pro Windows/Linux. O Haskell tem o compilador e o interpretador.

  1. Compilador é chamado de GHC, que seria Glasgow Haskell Compiler.
  2. Interpretador é chamado de GHCI.

Introdução ao Haskell

Abra o terminal e digite ghci, depois disso aparecerá uma mensagem assim:

GHCi, version 8.10.2: https://www.haskell.org/ghc/  :? for help** 
Prelude>

2020-11-28-142858_1920x1080_scrot

Agora já estamos dentro do interpreter do Haskell, vamos fazer nosso primeiro Hello world nele, Digite o seguinte ->

putStrLn "Hello, world!"

depois que você digitar isso terá que aparecer o seguinte:

2020-11-28-143916_1920x1080_scrot Se você seguiu tudo corretamente até agora, você terá o mesmo resultado que eu.

Como colocar esse Hello World dentro de uma função ->

main = putStrLn "Hello world"

Uma maneira mais Hard de criar um Hello world com Polimorfismo Paramétrico ->

Para fazer essa forma abaixo é necessário abrir o seu editor de código e instalar a extensão do haskell.

data HelloWorld x = Hello x deriving(Show)
(£) :: HelloWorld x -> HelloWorld x
(£) x = x

data é para criar um tipo, o HelloWorld é o nome do tipo, a primeira letra sempre maiúscula, o x é um parâmetro.

esse meu tipo está definindo uma função Hello com o parâmetro x, e deriving é pra derivar a classe Show, para exibir na tela o resultado, sem ela daria erro. Resultado:

2020-11-28-153831_1920x1080_scrot

Bom, vamos aprender sobre Compreensão de lista agora ->

Em haskell é possivel construir listas de quaisquer tipos usando expressões que podem ser distribuidas a todos os elementos de um dado vetor, usando compreensão de listas.

lista :: [Int] -> [Int]
lista xs = [4*x | x <- xs]

Definimos nossa assinatura da função na primeira linha, na segunda já criamos a função com o parâmetro xs, se x estiver dentro de xs multiplique todos elementos que você digitou na lista por 4.

Resultado -> 2020-11-28-155335_1920x1080_scrot

Vamos ver um pouco sobre lambda, uma lambda é uma função anônima, você usa e depois sai mais cedo, lambda não precisa definir pra usar ela

Alguns exemplos de lambdas

(\x -> (x * x)) 100
(\x y -> x /y) 10 2
(\x1 y1 -> y1 : x1) [] "Lambda"
foldl (\x1 y1 -> y1 : x1) [] "Lambda Russa!"

Esses são alguns exemplos de como é uma lambda em haskell, elas servem para cálculos, como disse você usa e depois sai mais cedo,não precisa definir, mas se quiser pode. Definindo uma lambda ->

lambda = (\y x -> x / y) 2 10

Vamos ver agora Recursão, uma recursão ela serve para não cair em loops infinitos, ela precisa ter uma base (inicio de partida) exemplo

fibonacci x
   | x == 0 = 0
   | x == 1 = 1
   | otherwise = fibonacci(x-1) + fibonacci(x-2)

Resultado -> 2020-11-28-161736_1920x1080_scrot

o | é chamado de guards em haskell, ele é mesma coisa que um if, por exemplo:

se x == 0 = 0**
se x == 1 = 1**
senao = fibonacci(x-1) + fibonacci(x-2)**

Bom, vou ficando por aqui, quem se interesso e quiser estudar mais procure por livros na internet sobre haskell.

  • Qualquer duvida abra uma ISSUE!

About

Uma base sobre Haskell.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published