Jump to content
FSaraiva

Definir um novo tipo, exercicio

Recommended Posts

FSaraiva

Boa tarde, ando a estudar para um exame onde a linguagem é Haskell e estou com duvidas na parte de definir novos tipos e instanciar que são das classes Eq.

Agradecia que me pudessem ajudar, é que do exercício que se encontra imediatamente abaixo só sei fazer  a definição do tipo novo

data Figura = Rect Float Float |Circle Float

Exercicio

Defina o tipo Figura capaz de representar rectângulos e círculos.

Torne-o uma instância da classe Eq. Assuma que, de modo geral, duas figuras são

iguais se são da mesma natureza e se têm a mesma área e perímetro. Considere

ainda que dois rectângulos precisam de ter o mesmo rácio entre a largura e o

comprimento para serem considerados iguais. Defina quaisquer funções de que

precise.

Agradecia imenso é que preciso dos valores deste exercício que calha sempre no exame.

Obrigado desde já

Share this post


Link to post
Share on other sites
Baderous

Defines as funções área e perímetro para esse tipo:

area :: Figura -> Float
perimetro :: Figura -> Float

De seguida declaras o tipo como instância de Eq:

instance Eq Figura where
a@(Rect x1 y1) == b@(Rect x2 y2) = ...
a@(Circle _) == b@(Circle _) = ...
_ == _ = ...

E defines, usando as funções anteriores, bem como a restrição do rácio, um critério de igualdade entre elementos desse tipo.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


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