View Full Version : Haskell.. Para kem gosta de programar


mpLopes
06-10-2004, 01:46
http://www.haskell.org/


Haskell é uma linguagem pouco divulgada e familiar, mas podem crer que está cada vez mais a aparecer, e irá tornar-se em breve numa das linguagens de top..


para quem gosta e aprecia programar, pesquisem e informem-se um pouco sobre esta linguagem..


abraço..

fap
06-10-2004, 08:15
isto que disseste foi a brincar não foi? :D :D :D irá tornar-se em breve numa das linguagens de top????? mas se nem o LISP que é o rei das linguagens funcionais conseguiu isso (ok, ganhou um certo estatuto), achas mesmo que será o Haskell que o vai conseguir? oh yeah... :)

Sadino
06-10-2004, 09:55
Já ouço falar da linguagem desde 2000 e parece que tem conquistado suporte aos poucos mas consistentemente.

mpLopes
07-10-2004, 22:18
boas..

pode nao xegar a ser de top, mas vai ficar mt perto disso..

está a dar muito dinheiro neste momento..kem domina dessa *****, tem emprego bem pago garantido..e isso é muito bom

SoundSurfer
07-10-2004, 22:32
e ML2000? isso sim grande linguagem! (LEIC/IST private joke ;) )

redhat
17-10-2004, 23:12
Lol passo a explicar!
Haskell eh uma linguagem que tem muitas vantagens em relacao a linguagens imperativas MAS...... Lopes, (lol somos colegas de apartamento estudamos juntos esta cagada mas va) sabes bem que em haskell conseguem em 5 linhas fazer o equivalente a 30 ou 40 linhas em C mas..... Ja te provei por A+B que C eh bem melhor, e mais eficaz!! Agora temos um problema....

O haskell como linguagem funcional torna-se bastante facil de aplicar, mesmo ate (sim ja tive a ler o livro do valença (para quem nao esta a par, pode procurar pelo livro Programaçao Funcional de Manuel Valença e Joao Barros, professores na universidade do minho)) em casos dificeis!!
Tenho um exemplo na familia, que é neste momento tambem ele professor na Uminho e que esta a fazer investigaçao em haskell no ramo de software slicing e ao que parece com bastante sucesso isto porque o haskell goza da propriedade de ser mto "cansado" ou de executar "lazy evaluation" o que torna mais rapido a execucao do programa, pois so executa o que eh realmente necessario!

Ui podia tar aqui 15 dias a falar bem e mal do haskell!! como neste momento tenho para apresentar um trabalho daqui a 2 dias.... ya vou falar MAL! pois ha certos parametros do C que estao encrustrados e que custa a sair!
Este meu amigo teve cerca de 30 min a explicar-me recursividade e que os while's nao existem em haskell! Paxorra de santo!

Va vou voltar ao trabalho e deixo a discussao em aceso!
Querem procurar ?

http://www.haskell.org/

ou

http://www.haskell.org/hawiki/

abraços

Chip
17-10-2004, 23:19
isto que disseste foi a brincar não foi? :D :D :D irá tornar-se em breve numa das linguagens de top????? mas se nem o LISP que é o rei das linguagens funcionais conseguiu isso (ok, ganhou um certo estatuto), achas mesmo que será o Haskell que o vai conseguir? oh yeah... :)


Ahhh LISP aka Lots Of Irritating Parentesis, tive de fazer uma rotina para o AutoCAD em LISP, no final sabia mais que o prof :D Quando lá ia tirar dúvidas ele respondia "Oh Nuno, vá-se lá embora... não me pergunte nada" :D

Tirei a melhor nota e os dois caramelos que se colaram a mim sem fazer/perceber nada ainfa ficaram com um 16 :D

redhat
24-10-2004, 19:09
oh chip, por acaso n das aulas na uminho pois n?

Chip
24-10-2004, 20:08
Não, mas tirei lá o curso :D

Os profs que na altura percebiam menos que eu eram os de desenho e sistemas de representação computacional, Prof. Monteiro (Teóricas) e Flores (o meu das práticas, mas na generalidade, nenhum dos profs da cadeira percebia daquilo :D)

Tendo uma peça desenhada a 3d em CAD, o que o programa fazia era ler um ficheiro CNC e simular o aspecto final da maquinação da peça no CAD, passo a passo, ferramenta a ferramenta :)

Era giro :D

Raphael Mateus
06-06-2005, 14:01
BOm dia,

Estudo Haskell via um curso On line, e preciso de uma ajuda urgente.

Preciso entregar um trabalho ainda hj com uma funçao alternativa para o CONCAT , usando a assinatura original concat :: [[a]] -> [a] .

Alguem poderia me ajudar ???????

raphamateus@ig.com.br

mpLopes
06-06-2005, 15:18
Tens PM..

A função que te mandei foi sem sequer ver a função original, por isso espero que seja alternativa..

a não ser que tenha feito sem querer a mesma função, mas isso seria muita sorte.
ve la isso e se por acaso é a mesma que a função original, diz que eu faço outra ok?

mpLopes
06-06-2005, 15:37
Já agora e desconhecendo o nivel em que te encontras nesse curso, deixo ficar aqui o que considero ser a melhor função (alternativa) do concat:

concat = foldr append empty

Espero que chegues brevemente a aprender a programar haskell desta forma, e assim sim vais ficar maravilhado com o haskell..

Neo4
20-10-2005, 23:58
pessoal eu estou em LESI na UM e so digo que nao pesco nada de haskell!nas aulas praticas so vejo lume! teoricas igual! (faltei as 2 primeiras :s) o meu stor é o Joao Barros (aka jbb) ate esplica bem mas eu gostava de saber se nao ha por ai algum tuturial em portugues com 1 pekena introduçao ao haskell...tnho 1 work pa fazer chapeu!!
thnks

inginheiiro
21-10-2005, 09:44
pessoal eu estou em LESI na UM e so digo que nao pesco nada de haskell!nas aulas praticas so vejo lume! teoricas igual! (faltei as 2 primeiras :s) o meu stor é o Joao Barros (aka jbb) ate esplica bem mas eu gostava de saber se nao ha por ai algum tuturial em portugues com 1 pekena introduçao ao haskell...tnho 1 work pa fazer chapeu!!
thnks

Dou-te uma dica de conhecedor... Não repitas as calinadas de português que dás aqui no forum, nos exames/trabalhos de informática, pq senão para além de não fazeres as cadeiras, arriscas-te a ter o teu nome gravado no quadro numa aula de AC (Proença) ou DSI (Martins) ou PPII (Pedro h.) etc, com o docente a gozar com a tua capacidade de expressão... Tenho a certeza que se algum aluno me entreguasse um trabalho/exame com tantos erros ortográficas, o recambiava para o Curso de Português/Latin.

Quanto ao Haskell.
É simples tal como o prolog, camila, xmeetoo, etc etc...
Melhor... Torna-se simples depois de passares umas horas no PC a tentar fazer os exercicios, pois adquires o raciocinio necessário e muito particular neste tipo de paradigma.

Quando digo horas no PC, não é a olhar para os exercicios 10m, e jogar 2h :rolleyes: ...
Para tudo é necessário trabalho, e com o curso de LESI passa-se o mesmo.
Se foste para LESI sem nenhuma experiencia em programação (raciocinio no desenvolvimento de software) então aplicas-te um bocadinho mais e vais ver que tudo se faz facilmente.

[N]
21-10-2005, 10:18
pessoal eu estou em LESI na UM e so digo que nao pesco nada de haskell!nas aulas praticas so vejo lume! teoricas igual! (faltei as 2 primeiras :s) o meu stor é o Joao Barros (aka jbb) ate esplica bem mas eu gostava de saber se nao ha por ai algum tuturial em portugues com 1 pekena introduçao ao haskell...tnho 1 work pa fazer chapeu!!
thnks

lol o JBB, dás-lhe umas ganzas que ele fica logo teu amigo.

Haskell sinceramente não tou a ver para que vai servir andares a aprender isso... talvez para daqui a uns anos... Mas tambem sinceramente isto de linguagens de programação é mais para nos habituarmos pois qd acabarem o curso tem que aprender uma linguagem nova que não vo sensinaram na universidade.

redhat
21-10-2005, 11:58
']lol o JBB, dás-lhe umas ganzas que ele fica logo teu amigo.

Haskell sinceramente não tou a ver para que vai servir andares a aprender isso... talvez para daqui a uns anos... Mas tambem sinceramente isto de linguagens de programação é mais para nos habituarmos pois qd acabarem o curso tem que aprender uma linguagem nova que não vo sensinaram na universidade.

@neo

tas e es meu caloiro! :P ja te apanho 2a feira :D

@[N]

pah... o jbb so' eh o maior barao do DI da universidade... o homem tem uma cabeça que ate faz do'
Quanto a haskell nao servir para nada... pah.. serve... infelizmente ja cai' na realidade e serve mesmo... sempre fui adepto incondicional do C (e continuo a ser) mas o haskell tem ali kk koisinha que faz os seus milagres (e tou a ver isso agr em MPI, se conheces o curso sabes que cadeira se trata).
A brutalidade do haskell em relaçao ao C (por ex.. existem mtas outras nesta situaçao) eh sem duvida o polimorfismo... transformas o que queres, no que queres... ponto.
de resto.. eh trabalhar com a recursividade (no caso de PPI) e para nos em MPI eh usar a "cola" como lhe chama o professor Bacelar (outro barao do haskell)

Neo, se achas que nao percebeste puto de haskell devias ter ido (infelizmente nao pude comparecer mas relato-te aquilo que o meu companheiro de casa me contou) ah "palestra" de programacao funcional que houve... parece que foi qualquer coisa de brutal em que ah mesa estavam sentados todos os "baroes" de programacao funcional da universidade... a falarem de point free como quem bebe agua...

Enfim, tenho agr de fazer um trabalho que consta na resolucao do sudoku... em haskell... como disse aos meus colegas em C ate se fazia... em haskell vai ser dureza, ate pk nao sei como trabalhar com matrizes em haskell (ou melhor, sei mas baralha-me, seriam as listas de listas, ou [[_],[_],[_]] ou ate com [(_),(_),(_)] (este segundo exemplo ja nao seriam listas de listas (nao sei como lhe vou pegar...))

Ja fiz o meu discurso...
Haskell sim... mas com moderaçao... eh potente (so as listas serem dinamicas ja parte a loiça) mas tem uma compreensao um pouco dificil.
Como disse o inginheiro... estuda.

Abraço

Na Sei
22-10-2005, 13:01
Já agora n me kerem ajudar a fazer este trabalho?

3w.di.uminho.pt/~jbb/pp1/page7/files/tp1.pdf

Agradecido

redhat
22-10-2005, 13:55
rotfl....
eu nem vou comentar...

Na Sei
22-10-2005, 15:06
Ao menos a primeira alinea!

Pls

mpLopes
22-10-2005, 15:20
Mais um adepto de haskell e aluno de LESI da UM..

Estou no 3º ano (como tal tb és meu caloiro...:D:D:D) e continuo a ter haskell, por isso é bom que comeces a perder tempo com isso e a estudar isso..e nao comeces a meter na cabeça que nao gostas disso pk senao tas desgraçado..

Vai-te mentalizando que isso é fixe, e daki a uns tempos vai curtir mt mais isso do que outra linguagem de programação qq, seja ela funcional ou nao..

Quanto ao tutorial, procura por um livro do professor Valença, em portugues, pk isso é o que há mais por aí, e ate se aprende qq coisa..no meu caso nao aprendi mt, pk na altura entrei na segunda fase e nao tive a sorte de puder ir as aulas e como tal li o livro mts mts vezes e nao me serviu de nada..moral da historia: faltar as aulas nao te ajuda em nada..

Tens k ir as aulas, tens k perder tempo com as coisas, a estudar..
Se tens como objectivo não ir as aulas, dizer k nao percebes nada, e pedir num forum para te fazerem os trabalhos, muda de curso urgentemente!

cold
26-10-2005, 17:27
ate te podia fazer o trabalho nao é que fosse dificil a questao é que assim iamos apenas te enterrar assim como me enterrei quando era caloiro a pensar que faziam me o trabalho e depois passava no exame. aulas praticas nao faltes e tira duvidas lá
qualquer duvida posta aqui

LaNgSuYaR
28-10-2005, 12:57
humm, nc pensei k houvessem tantos LESI's pr aki....
eu tb sou caloiro e tb tenho esse tal trabalho pr fazer...tenho-m safado, tenho lido o livro do JBB k ajuda a compreender algumas coisas, mas, mais que isso, ver exercicios resolvidos e/ou resolvê-los para dp os interpretar é crucial! penso k ter a paciência d pegar num exercicio feito, matutar nele até o compreender na totalidade acaba por ser melhor do k ler o livro....

mas voltando ao trabalho, já tou kuase no fim mas o prob é k encravei aki numa função... pr km viu o enunciado do trabalho pratico é a 3 (d)...já tentei de diversas formas, mas n consigo fazer a lista d strings finais, consigo apenas que ela tenha um elemento, ao tentar fazer a recursividade pr preencher o resto da lista dá-m smpr erro!!! :\
alguém m pode dar uma ajudinha?!

mpLopes
28-10-2005, 13:51
O ideal seria mostrares aqui a tua função, para um gajo ver o erro e dizer-te..nao vamos fazer nos a função sem saber o definição que tens nas alineas anteriores..

Cumps

LaNgSuYaR
28-10-2005, 14:03
eu tenho isto d momento

saudaveis_rec :: Float -> [InfoNutricional] -> Refeicao -> [String]
saudaveis_rec v (h:t) [] = error ("Nao existem alimentos na refeicao!")
saudaveis_rec v (h:t) ((a, b):t) = saudaveis_rec' v (h:t) ((a, b):t) []

e para fazer a segunda parte da função já tentei através d acumuladores e a recursividade existia então numa função auxiliar chamada saudaveis_rec':

saudaveis_rec' v ((x, y, z, w):xs) ((a, b):t) (h:c) = if ((a==x) && (z < v)) then --> aki é k agora n sei o k colocar

v : é o valor dado
((x, y, z, w):xs) : é a lista dos alimentos
((a, b):t) : é a lista dos alimentos da refeição
(h:c) : é o acumulador. n sei s deva coloca-lo assim ou []

eu sei k td isto tá bastante confuso e tb eu m confundo um bocado à volta da função!!!
já tentei de outras formas, ms apaguei-as :\ pk n conseguia, bloqueava smpr qnd kero acrescentar elementos á lista final!!

dsc a confusão td!!
cumps

oldmaxx
28-10-2005, 14:17
e irem pro forum da um ñ?????:x2: :x2: :x2:

emfim eu só fasso é esta pergunta, pk raio é k só ensinam isso na um, e num aplicam isso ás outras univs?

Datwo
28-10-2005, 14:36
e irem pro forum da um ñ?????:x2: :x2: :x2:

emfim eu só fasso é esta pergunta, pk raio é k só ensinam isso na um, e num aplicam isso ás outras univs?

No IST em Leic damos Scheme :tareon:

LaNgSuYaR
28-10-2005, 14:41
pessoalmente penso k o facto de usarmos haskell na UM p.ex. e scheme em outras univs é para nos habituarmos a uma estrutura logica diferente dakela k se calhar estamos habituados.
eu dei Pascal e C ao longo do secundário e agora tenho uma certa dificuldade em abstrair-me dessas linguagens pr programar em haskell!
penso k se pretende que todos os alunos assumam o mesmo patamar e comecem do zero a adquirir determinadas estruturas lógicas....
tudo isto pk nem todos os alunos provêem d cursos de informática e nem todos os alunos já tinham funcionado com programação antes....

espero n ter errado!!!... :)

Datwo
28-10-2005, 14:46
pessoalmente penso k o facto de usarmos haskell na UM p.ex. e scheme em outras univs é para nos habituarmos a uma estrutura logica diferente dakela k se calhar estamos habituados.
eu dei Pascal e C ao longo do secundário e agora tenho uma certa dificuldade em abstrair-me dessas linguagens pr programar em haskell!
penso k se pretende que todos os alunos assumam o mesmo patamar e comecem do zero a adquirir determinadas estruturas lógicas....
tudo isto pk nem todos os alunos provêem d cursos de informática e nem todos os alunos já tinham funcionado com programação antes....

espero n ter errado!!!... :)

é... de acordo com o que a MRC diz, "isto é para vocês ganharem bons hábitos de programação!!"

ok ok, mas há muita gente (eu incluido) que nunca programou na vida...

LaNgSuYaR
28-10-2005, 15:15
tb penso k sim...daí k haskell seja extremamente rigoroso!!
visto k em Pascal ou até em C a capitulação é indiferente em qualquer situação penso!...humm, podemos ter uma função definida a começar com letra maiúscula e ao longo do programa invoca-la com letra minúscula!
já em haskell há essa diferenciação pelo k nos obriga a ser mais rigorosos na programação que penso ser um bom hábito!!! :D no entanto dificil de conseguir, pelo menos pr mim!!!

lol...a minha dúvida persiste...ng m consegue dar uma ajudinha!? eu sei k tá bastante confuso, cm já disse, até pr mim tá confuso....se calhar o meu erro tenha passado somente por um parêntesis ou algo que pareça insignificante...lol

Neo4
30-10-2005, 16:17
eu tantas respostas :| sim o naosei dve gostar que lhe façam o trabalho e depois vai apresenta-lo e nao sabe explicar nada! o stor manda-te dar uma curva!
eu ja peguei um bocado nisto, tambem tenho tido ajuda de algum pessoal do 2 e 3º ano..
penso que depois de feito se percebe bastante bem mas conseguir chegar la...
txii tantos engs!!!

DarTaKaum
30-10-2005, 19:13
pessoal eu estou em LESI na UM e so digo que nao pesco nada de haskell!nas aulas praticas so vejo lume! teoricas igual! (faltei as 2 primeiras :s) o meu stor é o Joao Barros (aka jbb) ate esplica bem mas eu gostava de saber se nao ha por ai algum tuturial em portugues com 1 pekena introduçao ao haskell...tnho 1 work pa fazer chapeu!!
thnks


tens sorte de teres este ano o sauromon... jbb digo.. em x da frade... :)


Para quem queria a resposta da primeira:


cena :: [InfoNutricional] -> InfoNutricional
cena ((x,t,u,i):(o,p,k,l):[]) = if t>p then (x,t,u,i) else (o,p,k,l)
cena ((x,t,u,i):(o,p,k,l):tail) = if t>p then cena ((x,t,u,i):tail) else cena ((o,p,k,l):tail)

nao cheguei a testar mas deve tar bem.

Mitch
30-10-2005, 19:23
No ano passado tive a frade... depois deixei de ir às aulas porque não se aprendia nada lá :d bastava ler os acetatos e pronto... era a mesma coisa.

mas a cadeira foi facil... tive 15 de nota final sem grande esforço...

redhat
30-10-2005, 22:54
pk que em Lisboa se da Scheme e em Braga haskell?
Simples, pk virou-se para a programacao funcional (e nao para o haskell ou para o scheme). Lembraram-se disto, e agr eh ate se lembrarem de outra coisa =)
Agr, tb eh verdade, as univs podiam ter escolhido todas a mm linguagem :|

EDIT
@DarTaKaum

Nao uses o tail ali, pois ele ta erro com a funcao que existe no prelude, aqui na um usamos o xs (tb n gosto mto))

LaNgSuYaR
31-10-2005, 08:17
já agora....eu ao colocar toUpper no ghc dá-m erro....alguém conhece alguma função k susbstitua esta?
é k kero fazer uma auxiliar pr verificar 2 strings e dá-m erro ao fazer o toUpper :\

DarTaKaum
01-11-2005, 21:38
já agora....eu ao colocar toUpper no ghc dá-m erro....alguém conhece alguma função k susbstitua esta?
é k kero fazer uma auxiliar pr verificar 2 strings e dá-m erro ao fazer o toUpper :\

import Char

a seguir ao module main deve ser dai o problema.

redhat:

sou de LESI tb.. ;) n curto o xs! :} mas axo k com o tail ali n deve dar problema pk é apenas um nome duma variavel... nao tou a invocar para fazer operações, mas como nao testei nao posso garantir. (:

Raquel_Pires
07-11-2005, 11:04
Olá a todos,

Será que me podem ajudar ?

Estou aqui com um problema numa função, que passo a explicar:

Tenho de fazer uma função q recebe um filename e processa o conteudo desse ficheiro. O ficheiro é constituido por:
2 -> número de macros
A -> nome da Macro
456 -> string associada a macro
B -> idem
789 -> idem
123$A78$B -> texto

O output seria 12345678789
Alguem me ajuda no raciocínio do algoritmo desta função??
A função de leitura do file está feita.

Bgda

Craft
18-11-2005, 00:34
Não, mas tirei lá o curso :D
Os profs que na altura percebiam menos que eu eram os de desenho e sistemas de representação computacional, Prof. Monteiro (Teóricas) e Flores (o meu das práticas, mas na generalidade, nenhum dos profs da cadeira percebia daquilo :D)


Oh Chip, hehehe Monteiro rules huh?
Bom, ao menos do Flores safei-me, apanhei o Mega.
Na altura da recepção e do enterro, era ver quem tinha a maior ressaca, o ppl ou o Mega.
Ahhh, bons tempos.

Btw: como alguém disse mas incompleto: LISP - Lots of Irritating and Stupid Parenthesis

Jorge Sousa
12-12-2005, 10:18
Sou um novato em programação e preciso resolver o seguinte:

1- iguais2 que, dados dois números dê como resultado verdadeiro (True) se esses números forem iguais e falso (False) caso eles sejam diferentes.

2- iguais4 que, dados quatro números dê como resultado verdadeiro (True) se esses números forem iguais e falso (False) caso eles sejam diferentes, recorrendo à função iguais2.

3- iguala20 que, dado um número inteiro, retorna verdadeiro np caso desse número ser 20 e falso caso contário. (a) usando IFs. (b) usando "pattern matching"

o 1º ja resolvi

igual2 :: Int -> Int -> Bool
igual2 m n = (m==n)

quanto ao segundo se utilizar a mesmo forma funciona mas não consigo que funcione utilizando a função anterior

quanto ao 3º não sei como implementar a função if nesta linguagem, ja andei a ler mas não consigo

ALGUMA AJUDA..

DarTaKaum
14-12-2005, 21:03
iguais4 a b c d = if (iguais2 a b) && (iguais2 c d) then True else False

igual20 a = if (a==20) then True else False

igual20b 20 = True
igual20b _ = False


toma lá, tás a estudar isto onde?

Jorge Sousa
15-12-2005, 14:57
Agradeço a tua ajuda, entretanto ja tinha conseguido resolver, mas agradeço de igual forma.

Estou a estudar na universidade aberta.

merlinX
13-09-2006, 22:03
Estou em LEI na FCUL e também estou a iniciar esta linguagem, pelo que sei é a linguagem de programação funcional mais em investigação, pelo menos professores meus investigam-na, claro falo no Haskell.

MadOnion
13-09-2006, 23:44
Estou em LEI na FCUL e também estou a iniciar esta linguagem, pelo que sei é a linguagem de programação funcional mais em investigação, pelo menos professores meus investigam-na, claro falo no Haskell.

É como eu, é uma das cadeiras de programação do 2º ano, Principios de Programação.
Por acaso desconhecia de um tópico aqui na techzone, vou ter de ler uns tutoriais antes de começarem as práticas pra semana.
Boa sorte pra ti :)

merlinX
15-09-2006, 19:50
;) Para ti também parceiro.

souto
15-09-2006, 19:55
@merlinX sai daqui ribatejano duma figa :)
aos meus caros colegas FCULianos, boa sorte para o ano.
Haskell, pelo que vi até agora, é uma linguagem interessante. Mas só dei aínda coisas muito básicas, vamos lá ver.

merlinX
18-09-2006, 20:29
Ohhh "tripeiro" mascarado de lisboeta... eheheh vamos dar-lhe no Haskell.