linguagem haskell

Download Linguagem Haskell

Post on 22-Feb-2016

91 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Linguagem Haskell. Riocemar S. de Santana . Haskell, o que é? É uma  linguagem de programação puramente funcional , de propósito geral. Nomeada em homenagem ao matemático americano Haskell B. Curry (1900–1982 ). - PowerPoint PPT Presentation

TRANSCRIPT

Linguagem Haskell

Linguagem HaskellRiocemar S. de Santana

Haskell, o que ?

umalinguagem de programao puramente funcional, de propsito geral.Nomeada em homenagem ao matemtico americano Haskell B. Curry (19001982).Concebida para ensino e tambm para o desenvolvimento de aplicaes reais.Resultado de mais de vinte anos de investigao por uma comunidade de base acadmica muito ativa.Implementaes abertas e livremente disponveis.Como uma linguagem funcional, a estrutura de controle primria afuno.

O que a programao funcional?

um paradigma de programao.No paradigma imperativo, um programa uma sequncia de instrues que mudam clulas na memria.No paradigma funcional, um programa um conjunto de denies de funes que so aplicadas a valores.Podemos programar num estilo funcional em muitas linguagens.Exemplos: Scheme, ML, OCaml, Haskell, F#

Programao Funcional

A programao funcional modela um problema computacional como uma coleo de funes matemticas, cada uma com um domnio de entrada e um resultado.

As funes interagem e combinam entre si usando composio funcional, condies e recurso.

Linguagem HaskellExemploPara somar os nmeros inteiros de 1 a 10 podemos escrever em linguagem C:

int total = 0, i;for (i = 1; i sum[1..10]

O mtodo da computao baseado em aplicao de argumentos funes.

WinHugs

WinHugs

Hugs uma implementao da linguagem Haskell que pode ser executada em PCs e sistemas Unix, incluindo Linux.

Pode ser obtido gratuitamente em http://cvs.haskell.org/Hugs/pages/downloading.htm

WinHugsSuporte para:Microsoft WindowsDebian GNU/Linux Fedora Core (Linux)OpenSUSE (Linux)FreeBSDMac OS X

Haskell Funo

Uma funo pode ser representada daseguinte maneira:

A partir dos valores de entrada obtido ovalor de sada.

Haskell Funo

Funes em Haskell so normalmentedefinidas pelo uso de equaes.Por exemplo, a funo soma pode ser escrita:soma x y = x + yChamada da seguinte maneira: >soma 10 20 30

Haskell Funo

A funo soma pode ser implementada emum arquivo (bloco de notas) e salvo com aextenso .hs

Haskell Funo

Carregando o arquivo de funes:Hugs>:load caminho

Haskell Funo

Chamando a funo soma: Main>soma 10 2

Haskell Funo

Incluindo mais funes no arquivo:incrementa n = n + 1

Haskell Funo

Funo que chama uma funo:

Hugs Alguns comandos importantes:

Tipos bsicos

A linguagem Haskell possui uma disciplina rigorosa de tipos de dados, sendo fortemente tipada. Neste caso, toda funo, varivel, constante tem apenas um tipo de dado, que sempre pode ser determinado.

Embora fortemente tipada, a linguagem Haskell possui um sistema de deduo automtica de tipos para funes cujos tipos no foram definidos.

A partir dos tipos pr-definidos na linguagem Haskell, novos tipos podem ser construdos pelo programador.

Tipos primitivos em Haskell

Para definir que uma expresso E tem o tipo T (E do tipo T) escreve-seE ::T-> Saida

Prototipao de tiposExemplos:-- Funo que verifica se um nmero inteiro par.par::Int->Boolpar x = if mod x 2 == 0 then True else False

-- Funo para converter um valor Fahrenheit em CelsiusconverteFC::Float->FloatconverteFC x = (x - 32)/ 1.8

Prototipao de tipos

Tipo Booleano:O tipo booleano representado pela abreviatura Bool epossui os valores: True ou False.

Tipo Inteiro:Os inteiros so referenciados por Int, o domnio matemtico dos inteiros (at 2147483647).

Funes do mdulo PreludeO arquivo de biblioteca Prelude.hs oferece um grande nmero de funes definidas no padro da linguagem atravs do mdulo Prelude.

even - verifica se um valor dado parodd - verifica se um valor dado imparrem - resto da diviso inteiramod - resto da diviso inteira ceiling - arredondamento para cimafloor - arredondamento para baixoround - arredondamento para cima e para baixotruncate - parte inteira do nmerofromIntegral - converte um inteiro em realsin - seno de ngulo em radianoscos - cossenotan tangente

Funes do mdulo Prelude(Cont...)

asin - arco senoacos - arco cossenoatan - arco tangente atan - arco tangenteabs - valor absolutosqrt - raiz quadrada, valor positivo apenasexp - exponencial base elog - logaritmo natural (base e)logBase - logaritmo na base dadamin - menor de 2 objetos dadosmax - maior de 2 objetos dados

Listas e Tuplas

A linguagem Haskell nos fornece dois mecanismos para a construo de dados compostos: listas e tuplas.

A lista possibilita a unio de vrios elementos todos do mesmo tipo - numa nica estrutura.

Numa tupla podemos combinar os componentes de um dado numa nica estrutura, e os componentes podem ter tipos e propriedades distintas

ListasFundamento

Uma lista uma estrutura de dados que representa uma coleo de objetos homogneos em sequncia.

Para alcanar qualquer elemento, todos os anteriores a ele devem ser recuperados.

Em programao, uma lista vazia (representada por [ ] em Haskell) a estrutura base da existncia de uma lista.

ListasFundamento

Uma lista composta sempre de dois segmentos: cabea (head) e corpo (tail). A cabea da lista sempre o primeiro elemento.

['a','b','c','d']"abcd"> 'a':['b','c','d']"abcd

ListasOperador (:)

O smbolo (:) o operador de construo de listas. Toda lista construda atravs deste operador. Exemplos:

Hugs> 'a':['b','c','d']"abcd"Hugs> 2:[4,6,8][2,4,6,8]

Listas

Hugs> 'a':['b','c','d']"abcd"Hugs> 1:[2,3][1,2,3]Hugs> ['a','c','f'] == 'a':['c','f'] TrueHugs> [1,2,3] == 1:2:3:[]TrueHugs> 1:[2,3] == 1:2:[3]TrueHugs> "papel" == 'p':['a','p','e','l']True

Escrevendo Listas

Pode-se definir uma lista indicando os limites inferior e superior de um conjunto conhecido, onde existe uma relao de ordem entre os elementos, no seguinte formato: [ .. ]> [1..4][1,2,3,4]> ['m'..'n']"mn"> [1,3..6][1,3,5]> ['a','d'..'p']"adgjmp"> [3.1..7][3.1,4.1,5.1,6.1,7.1]

Escrevendo Listas

Podemos definir qualquer progresso aritmtica em uma lista utilizando a seguinte notao: [ , .. ]

> [7,6..3][7,6,5,4,3]> [6,5..0][6,5,4,3,2,1,0]> [-5,2..16][-5,2,9,16]> [5,6..5][5]> [1,1.1 .. 2][1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0]

Listas por compreenso

A descrio de uma lista pode ser feita em termos dos elementos de uma outra lista. Por exemplo, temos a lista L1 = [2,4,7]. Uma lista definida por compreenso pode ser escrita:> [ 2 * n | n elem 4 listaQuadInfTrue

A funo elem verifica se um elemento pertence a uma lista. Retorna True ou False

ListasFunes Pr-definidas

ListasFunes Pr-definidas

ListasFunes Pr-definidas

ListasFunes Pr-definidas

Fim.

Refernciashttp://www-usr.inf.ufsm.br/~juvizzotto/elc117-2010b/http://pt.wikipedia.orghttp://www2.fct.unesp.br/docentes/dmec/olivete/lp/arquivos/Aula14.pdf

Recommended

View more >