Este documento fornece um resumo da linguagem de programação Haskell em 3 frases:
1) Haskell é uma linguagem funcional criada em 1990 que suporta avaliação preguiçosa, funções recursivas, tipos de dados algébricos e list comprehensions.
2) Quicksort é mais fácil de implementar em Haskell do que em C devido às características da linguagem.
3) O documento apresenta exemplos básicos de funções e programas em Haskell como cálculo de média e contagem de números maiores que dez.
Haskell é uma linguagem de programação funcional pura. Programas em Haskell são funções que avaliam expressões para produzir valores. Haskell tem tipagem estática forte, suporte a abstrações poderosas como funções de alta ordem, e avaliação preguiçosa.
O documento apresenta uma introdução sobre a linguagem de programação funcional Haskell. Resume os principais pontos da apresentação em três frases:
1) Haskell é uma linguagem funcional puramente funcional, polimorficamente e staticamente tipada, baseada no lambda cálculo e nomeada em homenagem ao lógico Haskell Brooks Curry.
2) A apresentação discute os benefícios de usar Haskell como rapidez no desenvolvimento de softwares robustos, suporte para programação concorrente e paralela, e aprendizado de programação funcional.
3) Por
O documento discute o paradigma funcional de programação, apresentando conceitos como:
1) Linguagens funcionais onde variáveis não mudam de valor durante a execução;
2) Funções como valores de primeira classe que podem ser passadas como argumentos;
3) Uso de recursão para definição de funções.
Este documento apresenta uma introdução à linguagem de programação Haskell. Aborda tópicos como tipos de dados, operadores, funções, recursividade, pattern matching, guards e listas. Haskell é uma linguagem funcional pura com variáveis imutáveis que permite raciocinar sobre programas de forma elegante e concisa.
Este documento apresenta uma introdução à programação funcional. Resume as seguintes informações essenciais:
1) Apresenta o palestrante Natan J. Mai e fornece um breve resumo sobre o nível e linguagem abordados.
2) Explica os principais conceitos da programação funcional como paradigma baseado em funções, avaliação preguiçosa, funções de alta ordem e estados imutáveis.
3) Lista alguns exemplos de empresas que utilizam linguagens funcionais como Haskell, Erlang e Scala.
O documento discute programação funcional em JavaScript, incluindo como funções são objetos primários, a importância de imutabilidade e recursividade, e ferramentas como map, filter e reduce. Também cobre tópicos como funções puras, closures, partial application e currying.
1. O documento introduz os principais conceitos do paradigma funcional e da linguagem Scala.
2. É destacado que no paradigma funcional a computação é baseada em avaliações de expressões imutáveis, diferentemente do paradigma imperativo que permite mudanças de estado.
3. Características como funções de primeira classe, recursividade, avaliação preguiçosa e tipagem são apresentadas como fundamentais no paradigma funcional e implementadas na linguagem Scala.
O documento descreve como o Python foi utilizado para automatizar a geração de listas de pontos para subestações do setor elétrico. O autor desenvolveu um script em Python que lê dados de configuração de uma planilha Excel e gera automaticamente uma nova planilha contendo a lista de pontos para cada subestação. O script facilitou o trabalho ao eliminar tarefas manuais repetitivas e reduzir erros.
Haskell é uma linguagem de programação funcional pura. Programas em Haskell são funções que avaliam expressões para produzir valores. Haskell tem tipagem estática forte, suporte a abstrações poderosas como funções de alta ordem, e avaliação preguiçosa.
O documento apresenta uma introdução sobre a linguagem de programação funcional Haskell. Resume os principais pontos da apresentação em três frases:
1) Haskell é uma linguagem funcional puramente funcional, polimorficamente e staticamente tipada, baseada no lambda cálculo e nomeada em homenagem ao lógico Haskell Brooks Curry.
2) A apresentação discute os benefícios de usar Haskell como rapidez no desenvolvimento de softwares robustos, suporte para programação concorrente e paralela, e aprendizado de programação funcional.
3) Por
O documento discute o paradigma funcional de programação, apresentando conceitos como:
1) Linguagens funcionais onde variáveis não mudam de valor durante a execução;
2) Funções como valores de primeira classe que podem ser passadas como argumentos;
3) Uso de recursão para definição de funções.
Este documento apresenta uma introdução à linguagem de programação Haskell. Aborda tópicos como tipos de dados, operadores, funções, recursividade, pattern matching, guards e listas. Haskell é uma linguagem funcional pura com variáveis imutáveis que permite raciocinar sobre programas de forma elegante e concisa.
Este documento apresenta uma introdução à programação funcional. Resume as seguintes informações essenciais:
1) Apresenta o palestrante Natan J. Mai e fornece um breve resumo sobre o nível e linguagem abordados.
2) Explica os principais conceitos da programação funcional como paradigma baseado em funções, avaliação preguiçosa, funções de alta ordem e estados imutáveis.
3) Lista alguns exemplos de empresas que utilizam linguagens funcionais como Haskell, Erlang e Scala.
O documento discute programação funcional em JavaScript, incluindo como funções são objetos primários, a importância de imutabilidade e recursividade, e ferramentas como map, filter e reduce. Também cobre tópicos como funções puras, closures, partial application e currying.
1. O documento introduz os principais conceitos do paradigma funcional e da linguagem Scala.
2. É destacado que no paradigma funcional a computação é baseada em avaliações de expressões imutáveis, diferentemente do paradigma imperativo que permite mudanças de estado.
3. Características como funções de primeira classe, recursividade, avaliação preguiçosa e tipagem são apresentadas como fundamentais no paradigma funcional e implementadas na linguagem Scala.
O documento descreve como o Python foi utilizado para automatizar a geração de listas de pontos para subestações do setor elétrico. O autor desenvolveu um script em Python que lê dados de configuração de uma planilha Excel e gera automaticamente uma nova planilha contendo a lista de pontos para cada subestação. O script facilitou o trabalho ao eliminar tarefas manuais repetitivas e reduzir erros.
Este documento apresenta um roteiro sobre programação funcional. Ele discute linguagens de programação, funções matemáticas, programação funcional, vantagens e desvantagens, implementações e comandos básicos da linguagem Haskell.
O documento discute estruturas de dados, definindo-as como métodos particulares de implementar tipos abstratos de dados. Apresenta listas como uma estrutura de dados linear na qual os elementos preservam uma ordem sequencial, e descreve listas ordenadas como listas cujos elementos estão ordenados de acordo com um critério pré-estabelecido. Detalha a implementação de listas sequenciais e ordenadas sequenciais usando arrays.
O documento discute linguagens procedurais para manipulação de bancos de dados relacionais, incluindo PL/SQL, stored procedures, stored functions e triggers. Também aborda tópicos como declaração de variáveis, estruturas de controle, cursores e programas PL/SQL como procedures e packages.
O documento discute estruturas de controle em programação, incluindo variáveis, tipos de dados, operadores aritméticos e lógicos, e instruções básicas como entrada, saída e atribuição. É apresentada a estrutura básica de algoritmos com delimitadores e como construir comandos simples para cálculos como área de uma circunferência.
1) O documento discute algoritmos estruturados, definindo algoritmos como uma descrição lógica dos passos para realizar uma tarefa e estruturando algoritmos usando sequência, seleção e repetição.
2) É apresentada uma linguagem de descrição de algoritmos com variáveis, operadores, entrada e saída de dados e outros elementos para modelar soluções de problemas computacionais.
3) São descritos algoritmos de pesquisa sequencial para localizar um elemento em um vetor.
O documento descreve Jessé de Oliveira, um aluno de computação na UEPB que programa para a Rede Paraíba de Comunicação. Ele explica que PHP é uma linguagem para criação de sites dinâmicos que permite interação com usuários. Quando uma página PHP é requisitada, o servidor processa a página e retorna apenas o código HTML para o cliente. PHP é uma linguagem livre e portável que roda em diversos sistemas operacionais e é amplamente utilizada na internet.
1) O documento descreve os diferentes tipos de dados em Pascal, incluindo inteiros, reais, caracteres e cadeias de caracteres.
2) São fornecidos exemplos dos intervalos de valores para cada tipo de dado inteiro.
3) A representação de números reais em computadores através da técnica de ponto flutuante é explicada.
TDC 2014 POA: Programacao funcional Por que Importa?Diego Pacheco
A apresentação discute a importância da programação funcional, destacando sua longa história e conceitos como funções puras e imutabilidade. Apesar de linguagens funcionais como Lisp e Haskell serem menos populares que Java e .NET, há crescimento no uso de Clojure e Scala. A programação funcional oferece abstrações úteis para big data e sistemas reativos, além de melhorar a reusabilidade de código e a refatoração.
O documento descreve as principais novidades introduzidas no Java 8. Em destaque estão: (1) interfaces funcionais e métodos default e estáticos em interfaces, (2) Stream API para manipulação de fluxos de dados, (3) expressões lambda para criação de funções anônimas, e (4) nova Date Time API.
O documento apresenta um resumo do Scilab 5.1.1, um software livre para cálculos numéricos. É dividido em capítulos que descrevem a interface gráfica, operações básicas, comandos de fluxo, vetores e matrizes, polinômios, listas, funções e gráficos. Inclui também um apêndice sobre equações diferenciais.
Funções são blocos de código reutilizáveis que podem receber parâmetros e retornar valores. O documento explica como definir novas funções no PHP e como utilizar funções pré-existentes, incluindo exemplos de funções para manipular strings, arrays, matemática e sessões. Também mostra como passar parâmetros por valor ou referência e definir valores padrão para argumentos.
O documento fornece uma introdução às principais características da linguagem C++, incluindo sua história, compilação, tipos de dados, ponteiros, referências, arrays, estruturas de controle e namespaces. É destacado que C++ é uma linguagem multi-paradigma que oferece programação procedural, orientada a objetos e metaprogramação.
O documento apresenta conceitos básicos sobre PHP e programação web. Explica o que é PHP, como funciona e para que serve, incluindo variáveis, operadores, estruturas de controle e funções. Também discute conceitos da internet como protocolos HTTP e TCP/IP e métodos GET e POST.
Esse material tem o objetivo de ser uma introdução as principais características da linguagem Python, tais como sintaxe básica, tipos de dados, operadores, estrutura condicional, estrutura de repetição e orientação a objetos. Após a introdução a linguagem, o Django é apresentado de maneira pratica, desenvolvendo um CRUD para exemplificar suas principais características e vantagens, esse CRUD é feito passo a passo e após seu termino é feito uma introdução básica aos recursos do Admin do Django.
A linguagem Python foi criada por Guido van Rossum em 1989 para facilitar o ensino e uso da programação. Python é uma linguagem de programação interpretada, dinamicamente tipada e multiplataforma projetada para ser simples e fácil de ler. Sua biblioteca padrão contém diversos recursos úteis para desenvolvimento de aplicações.
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
Fundamentos da Programação 14:
• Interfaces
• Listas e cadeias ligadas
• Iteradores
Apresentação 14 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
O documento apresenta uma introdução à linguagem de programação Java, descrevendo conceitos básicos como declaração de classes e métodos, tipos de dados, operadores, estruturas condicionais e de repetição.
O documento discute os conceitos fundamentais de programação orientada a objetos, incluindo herança, polimorfismo, atributos, métodos, tipos de dados, variáveis, constantes e operadores aritméticos. Também apresenta a estrutura básica de um programa C#, como namespaces, classes e métodos.
Paradigmas de linguagens de programacao - aula#10Ismar Silveira
O documento discute os conceitos fundamentais do paradigma funcional de programação, incluindo:
1) Funções como cidadãs de primeira classe que podem ser passadas como parâmetros e retornadas;
2) A técnica de currying para transformar funções multivariadas em funções univariadas encadeadas;
3) O cálculo-λ como a base formal do paradigma, tratando funções como objetos de primeira classe.
O documento discute o paradigma funcional de programação e linguagens funcionais. Ele apresenta os problemas da crise do software e como as linguagens funcionais podem ajudar a resolvê-los, permitindo programas mais claros, concisos e seguros. Em seguida, explica os conceitos-chave de programação funcional e fornece exemplos nas linguagens Haskell e Lisp.
Este documento apresenta um roteiro sobre programação funcional. Ele discute linguagens de programação, funções matemáticas, programação funcional, vantagens e desvantagens, implementações e comandos básicos da linguagem Haskell.
O documento discute estruturas de dados, definindo-as como métodos particulares de implementar tipos abstratos de dados. Apresenta listas como uma estrutura de dados linear na qual os elementos preservam uma ordem sequencial, e descreve listas ordenadas como listas cujos elementos estão ordenados de acordo com um critério pré-estabelecido. Detalha a implementação de listas sequenciais e ordenadas sequenciais usando arrays.
O documento discute linguagens procedurais para manipulação de bancos de dados relacionais, incluindo PL/SQL, stored procedures, stored functions e triggers. Também aborda tópicos como declaração de variáveis, estruturas de controle, cursores e programas PL/SQL como procedures e packages.
O documento discute estruturas de controle em programação, incluindo variáveis, tipos de dados, operadores aritméticos e lógicos, e instruções básicas como entrada, saída e atribuição. É apresentada a estrutura básica de algoritmos com delimitadores e como construir comandos simples para cálculos como área de uma circunferência.
1) O documento discute algoritmos estruturados, definindo algoritmos como uma descrição lógica dos passos para realizar uma tarefa e estruturando algoritmos usando sequência, seleção e repetição.
2) É apresentada uma linguagem de descrição de algoritmos com variáveis, operadores, entrada e saída de dados e outros elementos para modelar soluções de problemas computacionais.
3) São descritos algoritmos de pesquisa sequencial para localizar um elemento em um vetor.
O documento descreve Jessé de Oliveira, um aluno de computação na UEPB que programa para a Rede Paraíba de Comunicação. Ele explica que PHP é uma linguagem para criação de sites dinâmicos que permite interação com usuários. Quando uma página PHP é requisitada, o servidor processa a página e retorna apenas o código HTML para o cliente. PHP é uma linguagem livre e portável que roda em diversos sistemas operacionais e é amplamente utilizada na internet.
1) O documento descreve os diferentes tipos de dados em Pascal, incluindo inteiros, reais, caracteres e cadeias de caracteres.
2) São fornecidos exemplos dos intervalos de valores para cada tipo de dado inteiro.
3) A representação de números reais em computadores através da técnica de ponto flutuante é explicada.
TDC 2014 POA: Programacao funcional Por que Importa?Diego Pacheco
A apresentação discute a importância da programação funcional, destacando sua longa história e conceitos como funções puras e imutabilidade. Apesar de linguagens funcionais como Lisp e Haskell serem menos populares que Java e .NET, há crescimento no uso de Clojure e Scala. A programação funcional oferece abstrações úteis para big data e sistemas reativos, além de melhorar a reusabilidade de código e a refatoração.
O documento descreve as principais novidades introduzidas no Java 8. Em destaque estão: (1) interfaces funcionais e métodos default e estáticos em interfaces, (2) Stream API para manipulação de fluxos de dados, (3) expressões lambda para criação de funções anônimas, e (4) nova Date Time API.
O documento apresenta um resumo do Scilab 5.1.1, um software livre para cálculos numéricos. É dividido em capítulos que descrevem a interface gráfica, operações básicas, comandos de fluxo, vetores e matrizes, polinômios, listas, funções e gráficos. Inclui também um apêndice sobre equações diferenciais.
Funções são blocos de código reutilizáveis que podem receber parâmetros e retornar valores. O documento explica como definir novas funções no PHP e como utilizar funções pré-existentes, incluindo exemplos de funções para manipular strings, arrays, matemática e sessões. Também mostra como passar parâmetros por valor ou referência e definir valores padrão para argumentos.
O documento fornece uma introdução às principais características da linguagem C++, incluindo sua história, compilação, tipos de dados, ponteiros, referências, arrays, estruturas de controle e namespaces. É destacado que C++ é uma linguagem multi-paradigma que oferece programação procedural, orientada a objetos e metaprogramação.
O documento apresenta conceitos básicos sobre PHP e programação web. Explica o que é PHP, como funciona e para que serve, incluindo variáveis, operadores, estruturas de controle e funções. Também discute conceitos da internet como protocolos HTTP e TCP/IP e métodos GET e POST.
Esse material tem o objetivo de ser uma introdução as principais características da linguagem Python, tais como sintaxe básica, tipos de dados, operadores, estrutura condicional, estrutura de repetição e orientação a objetos. Após a introdução a linguagem, o Django é apresentado de maneira pratica, desenvolvendo um CRUD para exemplificar suas principais características e vantagens, esse CRUD é feito passo a passo e após seu termino é feito uma introdução básica aos recursos do Admin do Django.
A linguagem Python foi criada por Guido van Rossum em 1989 para facilitar o ensino e uso da programação. Python é uma linguagem de programação interpretada, dinamicamente tipada e multiplataforma projetada para ser simples e fácil de ler. Sua biblioteca padrão contém diversos recursos úteis para desenvolvimento de aplicações.
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
Fundamentos da Programação 14:
• Interfaces
• Listas e cadeias ligadas
• Iteradores
Apresentação 14 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
O documento apresenta uma introdução à linguagem de programação Java, descrevendo conceitos básicos como declaração de classes e métodos, tipos de dados, operadores, estruturas condicionais e de repetição.
O documento discute os conceitos fundamentais de programação orientada a objetos, incluindo herança, polimorfismo, atributos, métodos, tipos de dados, variáveis, constantes e operadores aritméticos. Também apresenta a estrutura básica de um programa C#, como namespaces, classes e métodos.
Paradigmas de linguagens de programacao - aula#10Ismar Silveira
O documento discute os conceitos fundamentais do paradigma funcional de programação, incluindo:
1) Funções como cidadãs de primeira classe que podem ser passadas como parâmetros e retornadas;
2) A técnica de currying para transformar funções multivariadas em funções univariadas encadeadas;
3) O cálculo-λ como a base formal do paradigma, tratando funções como objetos de primeira classe.
O documento discute o paradigma funcional de programação e linguagens funcionais. Ele apresenta os problemas da crise do software e como as linguagens funcionais podem ajudar a resolvê-los, permitindo programas mais claros, concisos e seguros. Em seguida, explica os conceitos-chave de programação funcional e fornece exemplos nas linguagens Haskell e Lisp.
O documento descreve uma linguagem de programação chamada Pascal. O Pascal foi criado em 1971 por Niklaus Wirth para promover o uso de código estruturado. O Pascal foi muito popular na década de 1980 e é frequentemente usado para ensinar conceitos básicos de programação. O documento explica elementos-chave do Pascal como variáveis, constantes, operadores, estruturas de decisão e repetição.
- R é uma linguagem e ambiente de desenvolvimento para estatística e gráficos criada originalmente por Ross Ihaka e Robert Gentleman e desenvolvida colaborativamente por pessoas em vários locais.
- Sua estrutura de código aberto e gratuita atraiu muitos desenvolvedores, resultando em inúmeros pacotes que expandem suas funcionalidades.
- R se tornou padrão na mineração de dados de empresas devido à sua capacidade de análise e modelagem de grandes conjuntos de dados.
Slide completo sobre a Linguagem de Programação Lua.
Conteúdo:
- Definição.
- Mercado.
- Quem a utiliza.
- Características.
- Sintaxe da Linguagem.
- Códigos de Exemplos.
O documento descreve a origem e usos da linguagem de programação Lua, destacando sua rapidez, portabilidade e capacidade de ser embutida em outros sistemas. Lua foi criada no Tecgraf da PUC-Rio e é amplamente usada em jogos, sistemas embarcados e como linguagem de extensão. Sua sintaxe simples e tipagem dinâmica tornam a linguagem flexível e fácil de aprender.
A linguagem UAL foi desenvolvida para auxiliar o aprendizado de programação de alunos iniciantes, permitindo a execução e visualização gráfica dos passos de um algoritmo. O documento descreve os principais recursos da linguagem, como declaração de variáveis, tipos de dados, operadores, comandos de entrada/saída, repetição e tomada de decisão. A linguagem está disponível gratuitamente e com código aberto para desenvolvimento.
O documento discute registros e arrays no Pascal, definindo-os como estruturas de dados para armazenar coleções de dados similares. Registros armazenam variáveis sequencialmente na memória, permitindo acesso aos campos por índice. Arrays podem ter múltiplas dimensões e são úteis para repetições. O comando With no Pascal simplifica o acesso aos campos dos registros.
O documento apresenta um curso básico de C++, abordando tópicos como: uma breve história da linguagem C++; introdução à lógica de programação; tipos de variáveis como inteiro, float e char; e comandos básicos como entrada e saída de dados.
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Kratos879
O documento apresenta um curso básico de C++, abordando tópicos como: uma breve história da linguagem C++; introdução à lógica de programação; tipos de variáveis como inteiro, float e char; e comandos básicos como entrada e saída de dados.
O documento apresenta um curso básico de C++, abordando breve história da linguagem, tipos de variáveis, comandos básicos, controle de fluxo e arrays unidimensionais.
Este documento discute o paradigma funcional usando a linguagem Haskell. Apresenta os tipos primitivos de Haskell como Int, Float e Char, e explica o tipo função que mapeia valores de entrada para saída. Demonstra como declarar funções de forma polimórfica para que possam operar em diferentes tipos. A inferência automática de tipos permite que o compilador determine o tipo de uma função sem que seja explicitamente declarado. Por fim, lista exercícios para praticar operações matemáticas e lógicas usando funções em Haskell.
O documento apresenta uma agenda para um seminário sobre a linguagem funcional Haskell. A agenda inclui tópicos como origem do nome Haskell, características da linguagem, avaliação preguiçosa, inferência de tipos, listas, tuplas, funções e classes.
O documento apresenta um tutorial sobre shell script, abordando tópicos como:
1) Variáveis, operadores lógicos e a estrutura condicional IF;
2) Apresenta diversos comandos do shell como echo, read, sleep e operadores de redirecionamento;
3) Explica o uso de variáveis, operadores lógicos numéricos e alfanuméricos.
O documento discute a motivação para programação funcional usando Haskell, descrevendo suas vantagens como código menor e mais claro, facilitando reuso através de abstrações poderosas e aumento da produtividade.
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
O documento resume as principais características da linguagem de programação C, incluindo sua estrutura, sintaxe, bibliotecas, funções e palavras reservadas. É definida como uma linguagem de propósito geral projetada para programação estruturada que possui facilidade de uso e geração de código eficiente.
O documento descreve a história e características da linguagem Object Pascal, começando com suas origens no Pascal e como foi estendida para suporte a orientação a objetos. Ele também discute a relação entre a linguagem e o ambiente de desenvolvimento Delphi da Borland.
O documento apresenta conceitos básicos da linguagem de programação C, incluindo sua história, características, estrutura básica de um programa, comentários e diretivas. É uma apostila destinada a estudantes da Universidade Federal de Uberlândia.
Semelhante a Linguagem de programação haskell (20)
1. 1
LINGUAGEM DE PROGRAMAÇÃO HASKELL
Francisco Daniel Farias Graciano
Francisco Lourenço de Oliveira Neto
Rubens Medeiros Cardoso
Sidney Damasceno Nobre
RESUMO
Este trabalho faz uma demonstração da linguagem de programação Haskell.
Palavras-chave: LIP, Haskell, programação.
2. 2
1. HISTÓRICO
O conceito de avaliação preguiçosa já estava difundido no meio
acadêmico desde o final da década de 1970. Esforços nessa área incluíam
técnicas de grafia e a possibilidade de uma mudança radical na arquitetura de
Von Neumann. Após o lançamento de Miranda em 1985, diversas outras
linguagens funcionais de semântica não rígida proliferaram, como Lazy ML,
Orwell, Alfl, Id, Clean, Ponder e Daisy (um dialeto de Lisp). Mesmo após dois
anos, Miranda ainda era a mais usada, mas não estava em domínio público.
Em setembro 1987 foi realizada uma conferência Functional
Programming Languages and Computer Architecture (FPCA '87), em Oregon, o
consenso foi a criação de um comitê com o objetivo de construir um padrão
aberto para tais linguagens. Isso consolidaria as linguagens existentes, servindo
como base para pesquisas futuras no desenvolvimento de linguagens. A primeira
reunião do comitê foi realizada em janeiro de 1988, e algumas das metas da
linguagem foram discutidas. A linguagem deveria ser de fácil ensino, deveria ser
completamente descrita através de uma sintaxe e semântica formal, deveria estar
disponível livremente.
A primeira versão de Haskell foi definida em 1 de abril de 1990. Seguiuse a versão 1.1 em agosto de ano seguinte, a versão 1.2 em março de 1992, a
versão 1.3 em maio de 1996 e a versão 1.4 em abril de 1997. Esforços
posteriores culminaram no Haskell 98, publicado em janeiro de 1999 e que
especifica uma versão mínima, estável e portável da linguagem e
a biblioteca para ensino. Esse padrão sofreu uma revisão em janeiro de 2003.
A
linguagem
continua
evoluindo,
sendo
as
implementações Hugs e GHC consideradas os padrões de fato. A partir de 2006
começou o processo de definição de um sucessor do padrão 98, conhecido
informalmente por Haskell′ ("Haskell Prime").
2. CARECTERÍSTICAS INOVADORAS
Características do Haskell incluem o suporte a funções recursivas e tipos
de dados, casamento de padrões, list comprehensions, guard statements e
avaliação preguiçosa, esta, um elo em comum entre os diversos grupos de
desenvolvimento da linguagem. A combinação destas características pode fazer
com que a construção de funções que seriam complexas em uma linguagem
procedimental de programação tornem-se uma tarefa quase trivial em Haskell.
Em questão de características inovadoras em Haskell, segundo a
pesquisa, é relação ao quicksort que é o mais rápido de implementar e mais
direto.
3. 3
2.1 QUICKSORT EM HASKELL
qsort [] = []
qsort (x:xs) = qsort (filter (<x) xs) ++ qsort (filter
(>=x) xs)
2.2 QUICKSORT EM C
void qsort(int a[], int lo, int hi){
{
int h, l, p, t;
if (lo < hi){
l = lo;
h = hi;
p = a[hi];
do{
while ((l < h) && (a[l]<=p))
l = l+1;
while ((h > 1) && (a[h] >= p))
h = h-1;
if (l < h){
t = a[1];
a[1] = a[h];
a[h] = t;
}
} while (l < h);
t = a[l];
a[l] = a[hi];
qsort (a, lo, l-1);
qsort (a, l+1, hi);
}
}
3. TIPOS DE DADOS
TIPO DE
DADO
Bool
Char
DESCRIÇÃO
Enumeração de valores booleanos, que permitem certas
operações lógicas, como conjunção (&&), disjunção (||) e
negação (not).
Enumeração de caracteres 16-bit, Unicode. A faixa dos
primeiros 128 caracteres é idêntica ao ASCII.
CLASSES
EXEMPLO
Read, Show,
Eq, Ord,
Enum,
Bounded
Read, Show,
Eq, Ord,
Enum,
Bounded
True
False
„a‟
4. 4
Double
Float
Int
Integer
Maybe
String
Tuplas
Listas
Ponto flutuante com maior intervalo e precisão que Float.
Ponto flutuante.
Inteiro que cobre, pelo menos, o intervalo de valores [-2^29,
2^29-1].
Inteiro de precisão limitada, com as mesmas funções e
operadores de Int.
Lida com valores opcionais sem terminar o programa e sem
usar o IOError.
Cadeia de caracteres, representada sob forma de lista de Char.
A sintaxe tanto pode ser de lista quanto a abreviação, entre
aspas.
Tipo de dado algébrico de definição de registros heterogêneos,
tuplas. A quantidade máxima de elementos dependa da
implementação, mas a quantidade mínima de quinze elementos
é sempre garantida.
Tipo de dado algébrico de definição de registros homogêneos
listas. Entre os operadores disponíveis encontra-se !!, que
retorna o n-ésimo elemento da lista, e ++, que concatena duas
listas de mesmo tipo. Relacionado a concatenação, há o
operador :, que adiciona um elemento no top de uma lista
RealFloat
RealFloat
Integral
6553.612
123
Integral
123
Read, Show,
Eq, Ord
Eq, Ord,
Bounded,
Read, Show
Eq, Ord
“Casa”
[„C‟, „a‟, „s‟,
„a‟]
(„A‟, 11, True)
[1, 2, 3,]
[1...4]
(1:(2:(3:(4:[]))))
4. COMANDOS BÁSICOS
Começamos com o clássico exemplo do programa Hello Word, que pode
ser escrito, em Haskell, do seguinte modo:
module Main where
main = putStrLn "Hello World!"
Como resultado da execução deste programa, é enviada uma mensagem
ao sistema operacional, indicando que o texto passado como argumento para a
função putStrLn deve ser impresso na tela (ou seja, no dispositivo de saída
padrão).
As seguintes funções podem ser usadas para imprimir uma string na tela,
sendo a única diferença entre elas o fato de que a segunda inicia uma nova linha,
depois de imprimir a string:
putStr :: String -> IO ()
putStrLn :: String -> IO ()
O tipo de retorno dessas funções – IO () – indica que é executada uma
ação de E/S e nenhum valor é retornado1. Dizemos que funções como putStr e
putStrLn são funções de E/S ou funções de interação, em contraposição a
funções puras, tais como, por exemplo (++).
Para ler uma linha de caracteres do teclado, podemos usar a função:
5. 5
getLine :: IO(String)
O tipo desta função indica que ela executa uma ação de entrada de dados
e retorna um valor do tipo String.
As ações getLine e putStr podem ser usadas para ler e escrever strings de
caracteres. Para valores de outros tipos, devemos usar as funções readLn e print.
As funções readFile, writeFile e appendFile são implementadas em
termos de funções mais elementares definidas no módulo IO.
5. FUNÇÕES EM HASKELL
Apesar de existirem diversas funções pré-definidas em Haskell, o
interessante da programação funcional é que o usuário defina suas próprias
funções. As funções são definidas através de scripts. Um script é um arquivo que
contém definições de funções associando nomes com valores e tipos.
Ex¹: Função que recebe um inteiro e calcula seu quadrado.
quadrado :: Int -> Int
quadrado x = x * x
A primeira linha de código indica que a função receberá
como argumento um inteiro e retornará um inteiro. A
segunda linha corresponde ao algoritmo para calcular o
quadrado de um número inteiro.
O arquivo deve ser salvo com a extensão “.hs”. Por exemplo,“funcao.hs”.
Depois é só carregar o script no compilador de sua preferência (neste caso
estamos usando o WinHugs) e chamar a função passando um inteiro como
parâmetro.
Ex²:
6. 6
6. IMPLEMENTAÇÃO
Como programa exemplo nada melhor que um programa que calcule a
media de dois números, pois é um exemplo simples de compreender em quase
todas as linguagens de programação.
A função Media no exemplo é uma função que recebe como entrada
números do tipo float que são representados em ponto flutuante.
A função através de seu argumento calcula uma resposta utilizando uma
equação ((nota1 + nota2)/2), onde é dado como entrada dois números: nota1 e
nota2, e a saída é a soma dos dois números divido por dois, ou seja, sua média.
Ex¹:
do {nota1 <- readLn;
nota2 <- readLn
print ((nota1+nota2)/2)}
No exemplo acima, é lido um número do teclado através
de readLn e atribuindo esse número a nota1, da mesma
forma ele faz para ler a nota2. Já no print, a função está
imprimindo na tela o valor de nota1+ nota2 divido por dois,
e por fim finalizando o programa com a chave “}”.
Ex²: Outro exemplo de programa é dado logo abaixo. No
programa seguinte, é dado como entrada vários números inteiros,
devolvendo como saída o total de números que são maiores que
dez.
nsup10 :: [Int] ->Int--Percorrendo toda lista
nsup10[] = 0-- o nsup10 é inicializado com 0, aqui
ele é o nosso contador.
nsup10(x:xs) | x > 10 = 1 +nsup10 xs-- Aqui é feita
a comparação se o numero que entrou é
maior que 10, se caso verdadeiro, então nosso
contador(nsup10), é incrementado em mais um.
|otherwise = nsup10 xs-- mostra na tela o nsup10
xs, ou seja o final do programa, onde mostra o
nosso contador
7. 7
7. DIFICULDADES
A disponibilidade de material para Haskell é grande, nesse trabalho
especificamente foram usados dois livros:
Real World Haskell
Haskell - Uma Abordagem
Prática
Sobre dificuldade no momento da instalação, não houve complicações,
são vários os compiladores com suporte a linguagem Haskell como: GHC,
WinHugs, nhc98, HBC, Helium. Para esse trabalho foi usado como exemplo o
WinHugs:
7.1 INSTALANDO O WINHUGS
Passo 1: