Jump to content
nuno35

Tipos de dados e funções

Recommended Posts

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
 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

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