El tipo de figuras geométricas
Se consideran las figuras geométricas formadas por circulos (definidos por su radio) y rectángulos (definidos por su base y su altura). El tipo de las figura geométricas se define por
data Figura = Circulo Float | Rect Float Float
Definir las funciones
area :: Figura -> Float cuadrado :: Float -> Figura
tales que
-
area f
es el área de la figuraf
. Por ejemplo,
area (Circulo 1) == 3.1415927 area (Circulo 2) == 12.566371 area (Rect 2 5) == 10.0
-
cuadrado n
es el cuadrado de ladon
. Por ejemplo,
area (cuadrado 3) == 9.0
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
Soluciones en Haskell
data Figura = Circulo Float | Rect Float Float area :: Figura -> Float area (Circulo r) = pi*r^2 area (Rect x y) = x*y cuadrado :: Float -> Figura cuadrado n = Rect n n
Soluciones en Python
from dataclasses import dataclass from math import pi @dataclass class Figura: """Figuras geométricas""" @dataclass class Circulo(Figura): r: float @dataclass class Rect(Figura): x: float y: float def area(f: Figura) -> float: match f: case Circulo(r): return pi * r**2 case Rect(x, y): return x * y assert False def cuadrado(n: float) -> Figura: return Rect(n, n)