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
1 |
data Figura = Circulo Float | Rect Float Float |
Definir las funciones
1 2 |
area :: Figura -> Float cuadrado :: Float -> Figura |
tales que
area f
es el área de la figuraf
. Por ejemplo,
1 2 3 |
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,
1 |
area (cuadrado 3) == 9.0 |
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
1 2 3 4 5 6 7 8 |
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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
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) |