Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

nuno35

Tipos de dados e funções

Mensagens Recomendadas

nuno35

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
 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

@nuno35,

Qual é o objectivo do tipo de dados que estás a tentar criar? A declaração que mostraste está incompleta, pelo que não consigo perceber os teus exemplos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nuno35

basicamente o objetivo é avaliar expressoes aritmeticas o tipo de dados é suposto ser abstrato 
o tipo de dados tambem é para ter o operador soma para fazer aquilo que demonstrei isto serve apenas para construir expressoes

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Se o teu tipo de dados tem como objectivo abstrair o conceito de expressões aritméticas, então deverás ter em conta que ele deve conseguir representar os diferentes componentes de uma expressão: termos, operadores (e expressões).

O que sabes sobre a utilização de data em Haskell? Seguramente já te foram dados exemplos disto nas aulas. Repara no que é exposto neste Wikibook: https://en.wikibooks.org/wiki/Haskell/GADT#Arithmetic_expressions

Posto isto: o que já tentaste fazer e que dúvidas/erros persistem?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nuno35

Eu nao estou a perceber muito bem esta parte da matéria o que já fiz foi criar o tipo de dados que pelo que pesquisei é com o data esse tipo de dados tem de ser abstrato e nao tem construtor e é exportado de um modulo com mais alguma funções criei assim o modulo e o tipo de dados:

module X (Avalia, const, avar )where

data Avalia deriving (Show)

tambem é suposto o modulo exportar o operador /+/ agora primeiro estou a tentar fazer a função const e operador /+/

é suposto eles fazerem isto:

ghci> :t const 3 
const 3 :: avalia

ghci> :t const 3 /+/ const 1 
const 3 /+/ const 1 :: avalia

e é esta parte que nao estou a perceber isto serve apenas para construir expressões e nao as realizar mas nao estou mesmo a perceber o codigo que tenho de fazer para dar isto

Desde ja obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.