Jump to content

Search the Community

Showing results for tags 'haskell'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • 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 e Automação Industrial
    • Matemática
    • Software de Contabilidade, Finanças e Admin. Pública
    • Dúvidas e Discussão de Programação
    • Tutoriais
    • Snippets / Armazém de Código
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
  • 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...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. Afonso2424

    GHCi

    Boas malta, Estou com um problema no ghci (penso eu), usando o vscode. No fim de interpretar o programa é suposto, no terminal aparecer "Main>" certo? É que no meu terminal volta a aparecer "ghci>" ou seja, não consigo testar as funções. obrigado D:\Universidade\23-24\PF>ghci Q50.hs GHCi, version 9.0.1: https://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Q50 ( Q50.hs, interpreted ) Ok, one module loaded. ghci>
  2. Estou com dúvidas em um exercicio onde tenho dado voltas e voltas e gostava de saber se alguem me podia ajudar. Tenho um exercicio onde duas pessoas vão se encontrar, nos vamos ter que indicar a hora e os minutos em que a primeira pessoa se encontrou e a hora e os minutos em que a segunda pessoa se encontrou. Se encontrassem numa duração entre 59 minutos o primeiro iria dizer "Passaram apenas 59 minutos" e outro "De facto!" Se entrassem numa duração de 1 hora e 1 minuto o primeiro iria dizer "Passaram apenar 61 minutos" e outro " "Queres dizer, 6 horas e 7 minutos? Sendo que temos que usar esta função: dialogo :: Int -> Int -> Int -> Int -> (String, String) Exemplo : Exemplo 1 dialogo 7 58 14 5 == ("Passaram apenas 367 minutos!","Queres dizer, 6 horas e 7 minutos?!") Exemplo 2 dialogo 2 1 2 48 == ("Passaram apenas 47 minutos!", "De facto!") Se alguem me poder ajudar, posso mandar o documento do exercicio, obrigado!
  3. Bom dia, será que algum me pode ajudar? sou novo nestas coisas e estou a fazer um trabalho(jogo BlockDude) em haskell para a licenciatura, que esta dividido em 4 tarefas sendo a 1ª a validação de um potencial mapa: type Coordenadas = (Int,Int) data Peca = Bloco | Porta|Caixa|Vazio type Mapa [[Peca]] o objetivo desta tarefa é implementar o par de funçoes constroiMapa:: [(Peca, Coordenadas)]->Mapa e desconstroiMapa:: Mapa-> [(peca, Coordenadas)] em que tem um mapa tipo matriz de 4x7.
  4. olá!! Sou iniciante na linguagem Haskell e pesquisando listas de exercícios para praticar e entender mais me deparei com essa questão: Suponha que tenhamos uma lista de inteiros e que desejamos ordenar seus elementos de acordo com suas ocorrências. Isto é, teremos os elementos mais raros posicionados primeiro e os elementos mais frequentes por último. Exemplos: [4,4,2,1,3,3,2,4,3,4] -> [1,2,3,4] [5,3,5,3,5,3,7,1,3,1,3,5] -> [7,1,5,3] Alguém pode me ajudar a como desenvolver ela. obs: penso que deva ser criada uma função que compare os elementos da lista verificando quais são iguais(duplicados) e em seguida ordenar pela quantidade de ocorrências, mas não sei estruturar bem essa ideia.
  5. Defina a função filtraAplicaFold :: (a->b) -> (a->Bool)->[a]-> tal que (filtraAplicaFold f p xs) é uma lista obtida aplicando a função f aos elementos de xs que satisfazem o predicado p usando a função foldr. Por exemplo, filtraAplicaFold (4+) (<3) [1..7] == [5,6] Codigo testado, mas que esta dando problema: filtraAplicaFold :: (a->b) -> (a->Bool)->[a]-> filtraAplicaFold [] [] = True filtraAplicaFold _ [] = False filtraAplicaFold [] _ = False filtraAplicaFold (f:fs) ((a,b):vals) = (f a b) && (filtraAplicaFold fs vals)
  6. Usando o foldr, defina a função descompactaFold :: [(a, b)] -> ([a], ) que transforma uma lista de pares ordenado em um par ordenado onde o primeiro elemento ´e uma lista dos primeiros componentes dos pares ordenados e o segundo elemento é uma lista dos segundos componentes dos pares ordenados. descompactaFold [ ( 1 , 2 ) , ( 3 , 4 ) , ( 5 , 6 ) , ( 4 , 5 ) ] == ( [ 1 , 3 , 5 , 4 ] , [ 2 , 4 , 6 , 5 ] ) descompactaFold [ ( 1 , 2 ) , ( 3 , 4 ) , ( 5 , 6 ) , ( 4 , 5 ) , ( 5 , 6 ) ] == ( [ 1 , 3 , 5 , 4 , 5 ] , [ 2 , 4 , 6 , 5 , 6 ] ) Código testado, porem não funciona: descompactaFold :: [(a, b)] -> ([a], ) descompactaFold f v [] = v descompactaFold f v (x:xs) = f x (descompactaFold f v xs)
  7. A função duplicarFold :: String -> String repete duas vezes cada vogal (letras 'a', 'e', 'i', 'o', 'u' minúsculas ou maiúsculas) numa cadeia de carateres; os outros carateres devem ficar inalterados. Por exemplo, duplicar "Ola, mundo!"== "OOlaa, muundoo!" Da forma que fiz não esta funcionando: duplicarFold :: String -> String duplicarFold xs = foldr (\x acc-> if elem x vogais then else ) [] xs where vogais = "aeiouAEIOU"
  8. Qual é o TIpo da função abaixo? Sem a ullização do comando :t, mostre como você obteve esses tipos. Identifique as classes dos parâmetros polimórficos. Caso não seja possível determinar o tipo, explique o porquê. Apresente uma entrada e a saída associada de forma a não retornar uma função de alta ordem. map.((.) (foldr (++) (foldr (++) [] [[1], [2], [4,5,6], [3]])))
  9. Boas, Estou ultimamente a aprender programação funcional e deparei-me com um exercício que diz o seguinte (no que suponho seja terminologia académica): mostre que uma lista em compreensão com geradores duplos pode ser descrita usando geradores simples. Sugestão: use a função concat e uma compreensão dentro de outra. É dado o exemplo de [(x, y) | x <- [1, 2, 3], y <- [4, 5, 6] ] o meu problema aqui é, como raio é que se encaixa sintacticamente uma lista por compreensão aninhada dentro de outra? o exemplo descreve uma lista de tuplos (x, y) com aqueles geradores para cada variável. Concat recebe uma lista de listas. Perdi-me algures no meio, suponho. Não tenho qualquer exemplo de tal situação, estou a seguir o livro "Learn you a Haskell for great good" e paralelamente a frequentar uma cadeira de programação funcional com haskell que me fornece outro tipo de exercicios, admitidamente mais fáceis. Alguma ideia? (Edit: movido de outro fórum para aqui)
  10. Boas, Estou ultimamente a aprender programação funcional e deparei-me com um exercício que diz o seguinte (no que suponho seja terminologia académica): mostre que uma lista em compreensão com geradores duplos pode ser descrita usando geradores simples. Sugestão: use a função concat e uma compreensão dentro de outra. É dado o exemplo de [(x, y) | x <- [1, 2, 3], y <- [4, 5, 6] ] o meu problema aqui é, como raio é que se encaixa sintacticamente uma lista por compreensão aninhada dentro de outra? o exemplo descreve uma lista de tuplos (x, y) com aqueles geradores para cada variável. Concat recebe uma lista de listas. Perdi-me algures no meio, suponho. Não tenho qualquer exemplo de tal situação, estou a seguir o livro "Learn you a Haskell for great good" e paralelamente a frequentar uma cadeira de programação funcional com haskell que me fornece outro tipo de exercicios, admitidamente mais fáceis. Alguma ideia?
  11. 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
  12. 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
  13. 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.
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. nuno35

    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
×
×
  • 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.