Jump to content

Search the Community

Showing results for tags 'haskell'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Bem-vindos ao Portugal-a-Programar
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • Pascal
    • Python
    • Bases de Dados
    • Visual Basic Clássico
    • Visual Basic for Applications (VBA)
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica
    • Automação Industrial
    • Matemática
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 556 results

  1. nuno35

    Funções com Tipos de dados

    Boa Tarde, preciso aqui de uma ajuda tenho estes dois tipos de dados e estou a tentar fazer estas 3 funções ate agr tenho este codigo se alguem me conseguir dar uma ajuda Data Cor = Vermelho | Azul | Cinzento deriving Show Data Carro = Carro cor (Maybe Carro) deriving Show Basicamente pode ir havendo um carro dentro do outro 1 - Recebe um tipo de dado carro e devolve uma lista com todas as cores Lista_Cores :: Carro -> [Cor] Lista_Cores Carro c (Nothing) = [c] Lista_Cores Carro c (Car) = [c] : Lista_Cores Car 2 - Recebe um cor um tipo de dado carro e devolve numero de carros com cor = cor Num_Cor :: Cor -> Carro -> Int Num_Cor cor Carro c (Nothing) = if cor == c then 1 else 0 Num_Cor cor Carro c (Car)= if cor == c then 1 + Num_Cor cor Car 3 - O tipo de dados Cor ser Eq gerada pelo par Vermelho == Azul nao percebo bem esta parte de ser gerada por este par Desde ja Obrigado
  2. nuno35

    IO

    Boa tarde Tenho aqui um problema para o complicado de IO, vamos por partes portanto tenho de ir recebendo dados dos utilizadores e posso receber Texto, negrito ou Italico sempre que for um desses continua a receber quando for outra coisa qualquer para da a resposta que basicamente é fazer o putStrLn das coisas que recebi por exemplo se recebi Italico Negrito Texto tenho de fazer o putStrLn de Texto Negrito Italico Ora a minha ideia era fazer assim: receber :: IO() calculadora = do expressao <- getLine if expressao == ""Texto || expressao == "Negrito" || expressao == "Italico" then //Aqui a minha ideia era colocar a expressao numa lista masnao estou a ver como posso faze lo receber()//Chama outra vez a funçao else //Aqui escreve a lista que fui criando mas tenho muitas duvidas como e que posso fazer isto. Desde já Obrigado
  3. Gustavo Martins

    Dúvidas em exercícios

    Olá a todos, sou meio iniciante em haskell e estou em dúvida nesse exercicio. 1) A função min no Haskell retorna o menor entre dois números, por exemplo, min 4 5 = 4 . Crie um tipo min com um campo inteiro, que seja instância de Ord, Eq e Show (deriving) .Crie uma instancia de Monoid para min (maxBound representa o maior inteiro existente no Haskell) .Quanto vale a expressão Min(-32) <> Min(-34) <> Min(-33)? . Explique sua escolha para o mempty Quem puder me ajudar ficarei agradecido.
  4. nuno35

    Função recursiva transporta

    Boa Tarde Tenho aqui um duvida nesta função ghci> transposta ["azul", "verde", "roxo"] ["avr","zeo","urx","ldo","e"] ghci> transposta ["verde", "encarnado"] ["ve", "en", "rc", "da", "er", "n", "a", "d", "o"] Tenho algumas ideias mas tenho sempre o proble de como fazer o resto de x Transposta [[a]] -> [[a]] Trnsposta [] = [] Trnsposta (x:xs) = take 1 x : transposta xs Poderia fazer o drop 1 x para o elemento mas nao estou a ver como
  5. Boa Noite Estou aqui com dúvidas em dois exercícios. Um é encontrar um elemento numa lista para o qual o predicado seja verdadeiro tenho duas formas, mas não sei se estão corretas: -- 1ª Forma encontra predicado " " = Nothing encontra predicado (x:xs) |predicado x == True = x |otherwise encontra predicado xs -- 2º Forma encontra predicado lista = let lista = filter predicado lista lista!!0 na segunda forma não sei como posso devolver a posição 0 O segundo exercício é dividir uma string numa lista de string de tamanho k Exemplo: > Fatias 3 "olalisboa" ["ola","lis","boa"] Se não for uma divisão certa a última string pode ter mais um ou menos 1 elementos Alguém me pode dar uma ajuda nestes exercícios? desde já Obrigado
  6. nuno35

    Tipo de dados e propriedades

    Boa tarde tenho este tipo de dados que pode ter uma subarvore e tenho a seguite duvida data HTML = Div [html] | Texto String | Negrito String quero fazer uma funcao que passa o o Texto para negrito e tenho este codigo que nao sei se esta correto converter _ _ = _ _ converter Texto x = Negrito x e tenho de fazer uma propriedade que verifique que a arvore principal é mais profunda que as subarvores e a minha duvida é como aceder as sub arvores tenho: (supoe-se que tenho uma funcao profundidade) prop_maior_arvore :: HTMl -> Property prop_maior_arvore html = profundidade html > profundidade (tenho aqui a duvida de como aceder a subarvore de html) Desde já obrigado
  7. nuno35

    Tipo de dados

    Boa tarde Tenho este tipo de dados: data exp = Variavel Char | Inteiro Int | Mais Exp Exp | Vezes Exp Exp para escrever isto tipo de expressao 3(x+2y) let expr = Vezes (Inteiro 3) (Mais (Variavel 'x')(Vezes (Inteiro 2) (Variavel 'y'))) e agr tenho de fazer uma funcao que de o comprimento da expressao o comprimento e dado pelo numero de operadores (Mais e Vezes) ghci> comprimento expr 3 Como posso fazer esta funcao ? desde ja obrigado
  8. nuno35

    Tipos de dados e funções

    Boa Tarde Estou aqui com uma duvidas nesta parte do haskell estou a criar um tipo de dados: data avalia deriving (Show) e quero criar uma funcao de soma deste tipo( (soma):: avalia -> avalia -> avalia) para fazer: ghci> :t cont3 soma cont 1 cont 3 soma cont 1 :: avalia mas sinceramente nao estou a perceber nem como se faz nem o objetivo quem puder ajudar com uma explicaçao e com uma ajuda neste caso Desde ja obrigado
  9. nuno35

    Funções com where

    Boa tarde tenho este código muito simples mas que me esta a dar erros alguém me consegue explicar porque? func :: (Char,Integer) -> Double func tuplo = (o + 452 * i) where o = (tuplo!!1) i = (elemIndices tuplo!!0 "ABCDEFGHIJKL")!!0 esta a dar me erro basicamente nas especificações das duas variáveis: • Couldn't match expected type ‘[a]’ with actual type ‘(Char, Integer)’ • In the first argument of ‘(!!)’, namely ‘tuplo’ In the expression: (tuplo !! 1) In an equation for ‘o’: o = (tuplo !! 1) • Relevant bindings include o :: a (bound at t3_fc48542.hs:10:9) aparece o mesmo para a especificação do i Desde já Obrigado
  10. nuno35

    Listas de Tuplos

    Boa tarde tenho aqui uma duvida tenho esta lista [1,2,3] como é que posso eliminar um elemento da lista pelo índice? desde já obrigado
  11. nuno35

    Listas

    Bom Dia Tenho aqui duas duvidas simples mas que nao estou a conseguir resolver e secalhar ate existe uma função para isto, é basicamente dividir uma lista em tuplos de dois. por exemplo [1,2,3,4,5,6] fica [(1,2),(3,4),(5,6)] alguma ideia ? e o outro é ir buscar o indicie de um elemento de uma string tenho 2 e quero saber o índice dele na srtring"1234" Desde Já obrigado
  12. nuno35

    Guardas

    Ola outra vez estou aqui com um problema tenho este código: movel :: [Char] -> Char movel_2 [] = " " movel_2 (x:xs) | x!!0 == "2" = "abc" | x!!0 == "3" = "def" | x!!0 == "4" = "ghi" | x!!0 == "5" = "jkl" | x!!0 == "6" = "mno" | x!!0 == "7" = "pqrs" | x!!0 == "8" = "tuv" | x!!0 == "9" = "wxyz" |otherwise = " " à frente de cada linha depois é para fazer a chamada recursiva mas por enquanto assim já me esta a dar um erro (Couldn't match type ‘Char’ with ‘[[Char]]’) supostamente penso que agr o erro seja por causa da comparação alguém me pode explicar sff é para receber uma coisa assim ["2","33","2"] entao o x primeiro vai ser o 2 e o x!!0 tambem dois estou a por a primeira posição porque podem aparecer 22 Desde Já Obrigado
  13. Boa Tarde Quero agradecer desde já a ajuda que me teem dado nesta linguagem que nao é nada fácil ainda estou a tentar perceber muita da sintaxe e a principal duvida que estou a ter agr é nas funções queria ter varias funções num ficheiro compilar esse ficheiro e dps poder chamar cada uma das funções com os seus parâmetros por exemplo: soma :: Int -> Int soma x let resultado = [ x + y | y <- [0..100]] show resultado e dps no terminal fazer: > soma 3 Desde já Obrigado
  14. nuno35

    Árvore

    Boa Tarde Tenho uma arvore de uma familia e tenho de percorrer a arvore e quando encontrar um nome acrecentar um descendente ja estive a procurar bastante mas nao consigo encontrar uma maneirade percorrer a arvore, alguem pode dar uma ajuda? Desde ja Obrigado
  15. nuno35

    [Resolvido] Percorrer listas

    Boa Tarde Tenho aqui uma duvida eu tenho um numero e tenho a lista x que vai do 1 ate esse numero [1..numero] e a lista y que vai do numero ate ao 0 [numero..0] e quero percorrer as duas e ir somando e ver quando dava o numero quando der fazia o show do (x,y) estava a tentar fazer do género: numero =100 [if x+y == numero then let resultado = (x,y) |x<-[1..numero] y<-[numero]] mas o if nao me esta a dar para por ali e nao me estou a lembrar de outra maneira de fazer isto. Desde já Obrigado
  16. nuno35

    [Resolvido] Somar Listas

    Boas Tenho aqui uma duvida tenho este código: [x + y | x<-[6,7,8], y<-[1,2,3]] o que isto vai fazer é a cada x somar todos os numero da lista y e eu quero é que o 6 some com o 1 o 7 com 2 e o 8 com o 3 ficando [7,9,11] alguém me pode dar uma ajuda como fazer isto? Desde já Obrigado
  17. Pedro Augusto

    Tempo de execução do código

    Olá Senhores, preciso medir o tempo de execução de alguns códigos em Haskell, preciso do tempo Real, User e Sys. Como proceder?
  18. CarolC

    Validar XML em Haskell

    Olá, gostaria de saber se alguém já validou um documento XML por meio de seu DTD e também de seu XSD utilizando Haskell. Encontrei algumas APIs, mas poucos lugares explicando como utilizá-las...
  19. ricardo peixoto

    Acumuladores

    Utilizando uma função auxiliar com acumuladores, optimize seguinte definição que determina a soma do segmento inicial de uma lista com soma máxima maxSumInit :: (Num a, Ord a) => [a] -> a maxSumInit l = maximum [sum m | m <- inits l]
  20. nuno35

    Somar dígitos

    Boa tarde estou a tentar fazer uma funçao que some os digitos de um numero a funçao recebe um numero de 1 ate 999 e por exemplo se for 234 tem de devolver 9(2+3+4). Estava a tentar fazer usando o resto da divisao mas nao estou a conseguir alguma ajuda sff
  21. nuno35

    Filtrar Lista

    Ola tenho aqui um problema Tenho uma lista de numeros e tenho de percorrer essa lista e ver se os 5 vizinhos de cada numero sao divisiveis por dois se nenhum vizinho for tenho de por esse numero numa lista e no fim devolver a lista com todos os numeros que nao teem vizinhos divisiveis por 2 alguma ajuda sff. [y | numeros, if y + 5 `mod` 2 == 0 then y:resultado] tenho isto mas so ve o 5º à sua frente
  22. Rui Carlos

    Tutorial de Haskell

    Introdução O Haskell é uma linguagem de programação funcional, baseada no lambda-calculus, que surgiu nos anos 80. Esta linguagem possui algumas das mais recentes caracteristicas das linguagens funcionais como lazy evaluation, pattern matching e modularidade. Trata-se de uma linguagem pouco eficiente e como tal ainda não muito usado em empresas. Apesar de tudo é uma das linguagem mais populares no meio académico e muito usada em investigação. Os programas tanto podem ser compilados (usando um compilador como o GHC) ou interpretados (usando o GHCi ou o HUGS, por exemplo). Para fazer o download basta irem a http://www.haskell.org/haskellwiki/Implementations Ao longo deste texto vou utilizar como compilador/interpretador o GHC. Algumas noções preliminares Um programa em Haskell deve começar com a linha module Nome_Mod where, onde 'Nome_Mod' é o nome deste módulo, que tem que começar por letra maiúscula. O nome do ficheiro deverá ser 'Nome_Mod.hs', embora não seja obrigatório, será necessário caso queiramos importar este módulo noutro programa. Para definir um comentário de uma linha usamos os caracteres '--' e para comentários de mais do que uma linhas usamos '{-' (e '-}'). Os tipos em Haskell começam por letras maiúsculas sendo os básicos Int, Integer, Float, Double, Char e Bool. O primeiro programa module PrimeiroProg where funcao :: Int -> Int funcao x = x^2 Talvez estivessem à espera que colocasse aqui o famoso "Hello World", no entanto definir uma função que imprime uma mensagem no ecrã é um pouco complexo (obriga-nos a utilizar monad's), como tal fica um exemplo da função 'f(x)=x2' Para testar o programa basta guardar o ficheiro ('PrimeiroProg.hs') e, depois de instalado o GHC, executar o comando 'ghci PrimeiroProg.hs' (em Windows normalmente até podemos clicar duas vezes sobre o icon que o GHC abre-se automaticamente). Para testar a função fazem funcao n onde n é um inteiro qualquer e deverão obter como resultado n2. De referir que a 3ª linha (a assinatura da função) não é obrigatória, o Haskell possui um mecanismo de inferência de tipos que lhe permite determinar o tipo das funções. Como podem ver é muito simples definir funções matemáticas em Haskell. Deixo-vos mais alguns exemplos: f1 :: Float -> Float -> Bool f1 x y = x * y > 0 divInt :: Int -> Int -> Int divInt a b = if b == 0 then a else div a b resto :: Int -> Int -> Int resto a b = if b /= 0 then a `mod` b else 0 soma x y = (+) x y -- verifica se um caracter é uma vogal vogal :: Char -> Bool vogal a = if a=='a' || a=='e' || a=='i' || a=='o' || a=='u' then True else False f2 :: (Float,Float,Float) -> Float -> Bool f2 (a,b,c) d = sin ((a * b) / c) > d Aqui podemos ver exemplo de funções com if's (que ao contrário de muitas linguagens, precisam sempre do 'else') e os operadores prefixos div e mod. Na função resto podemos ver como "transformar" um operador prefixo (neste caso o mod) num infixo, basta envolve-lo por acentos graves (e não plicas). Também operadores infixos podem passar a prefixo envolvendo-os com parentesis (tal como acontece na função soma). Reparem que na função vogal o then passa para a linha seguinte, podemos fazê-lo desde de que a linha esteja identada (bastava ser um caracter). Por último podemos ver a utilização de tuplos. Neste exemplo todos os elementos são do tipo Float, mas podiam ser de tipos diferentes. Para simplificar as coisas, podemos considerar que uma função do tipo Int->Int->Int é uma função que recebe dois inteiros e devolve um inteiro. No entanto isso não é verdade, mas isto são pormenores um pouco mais avançados da linguagem. Podem agora testar as funções fazendo, por exemplo, 'resto 14 3', 'vogal 'b'', 'f2 (1,2,3) 0'... Recursividade Em Haskel não há ciclos, como tal a maior parte dos problemas resolvem-se com recursividade. factorial n = if n == 0 then 1 else n * factorial (n-1) quadrado n = if n == 0 then 0 else quadrado (n-1) + 2 * n - 1 Mais à frente serão apresentados exemplos mais complexos... Outras formas de exprimir condicionais As seguintes funções são todas equivalentes. Tratam-se de funções que verificam se um valor é 0 ou não. isZero a = if a == 0 then True else False isZero a | a == 0 = True | a /= 0 = False isZero a | a == 0 = True | otherwise = False isZero a = case a of 0 -> True x -> False isZero a = case a of 0 -> True _ -> False isZero 0 = True isZero _ = False Acho que é relativamente fácil perceber os exemplos. Talvez os mais complicados sejam os 3 últimos onde é usado pattern matching. Basicamente aqui o programa tenta encaixar os argumento em padrões (este caso verificar se coincide com 0). O caracter '_' significa "qualquer coisa", ou seja, tudo encaixa no '_'. De referir ainda que no último exemplo não podiamos trocar a ordem das linhas, caso contrário daria sempre False, pois o programa executa a primeira "versão" que encaixe no padrão. Nestes exemplos apenas temos dois casos, mas se fossem mais o código seria semelhante. Listas e strings O Haskell suporta também um tipo de dados muito útil, as listas. Ao contrário dos tuplos, os elementos de uma lista têm que ser todos do mesmo tipo. Vejamos alguns exemplos. comprimento l=length l vazia [] = True vazia _ = False primeiro :: [int] -> Int primeiro lista = head lista cauda [] = [] cauda lista = tail lista junta :: [int] -> [int] -> [int] junta lista1 lista2 = lista1 ++ lista2 adiciona :: Int -> [int] -> [int] adiciona x l = x : l somatorio [] = 0 somatorio (x : xs) = x + (somatorio xs) Aqui foram utilizadas as função head (devolve o primeiro elemento da lista), tail (devolve a "cauda" da lista), '++' (junta duas listas) e ':' (adiciona um elemento no início). A última função calcula o somatório de uma lista de números. Quando recebe uma lista vazia ('[]') devolve 0, se não for vazia, então a lista encaixa no padrão x : xs, ou seja, é um primeiro elemento (x) mais uma cauda (xs), cauda essa que pode ser uma lista vazia. As strings em Haskell não são mais do que listas de caracteres. juntaLetra :: Char -> String -> [Char] juntaLetra l str = l : str juntaNoFin l str = str ++ [l] -- a função 'take' selecciona os n primeiro elementos de uma lista dezLetras str = take 10 str comprimento str = length str De seguida mostram-se algumas formas de definir listas -- lista dos inteiros de 1 a 100 [1..100] -- lista dos números pares maiores do que zero e menores do que 100 [2,4..100] -- lista dos quadrados dos numeros inteiros de 1 a 20 [n^2 | n <- [1..20]] -- lista [(1,0),(2,1),(3,0),...] [(n,ispar) | n <- [1..20] , ispar <- [0,1] , ((mod n 2==0 && ispar==1) || (odd n && ispar==0))] -- lista de tadas as combinações de elementos de [1,2,3] e de [4,5,6] [(x,y) | x <- [1,2,3] , y <- [4,5,6]] -- lista de TODOS os números inteiros maiores do que 0 [1..] Um pormenor interessante, derivado do facto do Haskell ser lazy, e que alguns de vocês devem ter achado estranho, é que podemos ter listas infinitas, como no último exemplo. Quando tiverem a consola do GHCi aberta digitem [1..] e verão o interpretador a tentar mostrar todos os número (até que você digitem 'Ctrl+C'). Existem algumas funções interessantes sobre listas, como por exemplo map, filter e foldl. Ficam aqui alguns exemplos. vezes2 n = n * 2 -- aplica a função 'vezes2' a todos o elementos de uma lista duplica :: [int] -> [int] duplica l = map vezes2 l -- ou alternativamente duplica l = map (* 2) l -- filtra todos os elementos diferentes de 0 (usa a função 'isZero' definida anteriormente) naoZeros l = filter (not . isZero) l Podemos ver também a aplicação da composição de funções ('.'): (not . isZero) n é equivalente a not (isZero n). Sinónimos de tipos e novos tipos de dados Em Haskell podemos definir sinónimos de tipos. Por exemplo, podemos associar ao nome Par o tipo (Int,Int). Para tal usamos a declaração type. type Par=(Int,Int) Desta forma escrever Par ou (Int,Int) é a mesma coisa. No próximo exemplo as funções f1 e f2 são exactamente a mesma coisa. f1 :: (Int,Int) -> Int f1 (x,y) = x + y f2 :: Par -> Int f2 (x,y) = x + y Como já foi referido, strings em Haskell são lista de caracteres, ou seja, foram declaradas da seguinte forma: type String=[Char]. Mas podemos fazer muito mais do que definir sinónimos em Haskell. Podemos definir novos tipos através da declaração data. Por exemplo, quando fazemos a divisão de dois números o denominador não pode ser zero, caso isso acontença é um erro. Então vamos definir um tipo de dados que permite representar um inteiro e situações de erro e algumas funções que usam esse tipo. data ResDiv = Erro | Res Int divisao :: Int -> Int -> ResDiv divisao _ 0 = Erro divisao n d = Res (div n d) mult :: ResDiv -> ResDiv -> ResDiv mult Erro _ = Erro mult _ Erro = Erro mult (Res x) (Res y) = x * y -- converte um valor do tipo ResDiv para Int. -- o valor erro é considerado 0 res2int :: ResDiv -> Int res2int Erro = 0 res2int (Res x) = x Neste caso o tipo ResDiv só servia quando estivesse-mos a trabalhar com inteiros. Mas podemos generalizá-lo para qualquer tipo de dados. data ResDiv a = Erro | Res a divisao :: Int -> Int -> ResDiv Int divisao _ 0 = Erro divisao n d = Res (div n d) mult :: ResDiv Float -> ResDiv Float -> ResDiv Float mult Erro _ = Erro mult _ Erro = Erro mult (Res x) (Res y) = x * y -- converte um valor do tipo ResDiv para Int. -- o valor erro é considerado 0 res2int :: ResDiv Double -> Double res2int Erro = 0 res2int (Res x) = x No entanto nem era preciso definir-mos este tipo de dados. Já tinhamos o tipo Maybe a que faz exactamente a mesma coisa. A sua definição é a seguinte: data Maybe a = Just a | Nothing A única diferença em relação ao tipo por nós definido são mesmo os nomes. Mas também podemos ter tipos recursivos. Vejamos como definir expressões matemáticas e uma função que as avalia. data Exp a = Val a -- um numero | Neg (Exp a) -- o simetrico de uma expressao | Add (Exp a) (Exp a) -- a soma de duas expressoes | Sub (Exp a) (Exp a) -- subtraccao de duas expressoes | Mul (Exp a) (Exp a) -- multiplicacao ... | Div (Exp a) (Exp a) -- divisao ... avalia (Val x) = x avalia (Neg exp) = - (avalia exp) avalia (Add exp1 exp2) = (avalia exp1) + (avalia exp2) avalia (Sub exp1 exp2) = (avalia exp1) - (avalia exp2) avalia (Mul exp1 exp2) = (avalia exp1) * (avalia exp2) avalia (Div exp1 exp2) = (avalia exp1) / (avalia exp2) Aqui têm um pequeno tutorial de Haskell, por enquanto ainda muito básico, mas espero ir acrescentando mais informações. Qualquer dúvida que tenham é só dizer. Para terminar mostrava apenas um exemplo da função "hello world" (a sua explicação fica para outra altura...) main :: IO () main = do putStrLn "Hello World" -- ou uma que retorna 0 main :: IO Int main = do putStrLn "Hello World" return 0
  23. Version 1.16

    467 downloads

    Universidade de Coimbra Faculdade de Ciências e Tecnologia Departamento de Matemática Autor: Professor Pedro Quaresma de Almeida Conteúdo Introdução Tipos de Dados Definição de Funções Definição de Tipos Leitura e Escrita Módulos em Haskell Bibliografia
  24. Version 2007/2008

    169 downloads

    Slides de curso introdutório à programação funcional, usando a linguagem Haskell. Universidade do Minho Programação Funcional Autor: Professora Maria João Frade
  25. Version 2005

    681 downloads

    Resolução de um trabalho prático de Programação Funcional. Universidade do Minho Curso: Matemática e Ciências de Computação Disciplina: Programação Funcional
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.