Este es un simulador de un manejador de datos polimórficos.
Este manejador quedó incompleto sin embargo se logró:
- Crear una estructura para almacenar los tipos y manipularlos
- Cambiar los datos variables por los constantes (Ej: si eq : a -> a -> Bool y me preguntan tipo eq 1, eso me va a retornar Int -> Int -> Bool si 1 es Int)
- La función DEF funciona
- La función TIPO solo funciona si se le mete un argumento o varios (y que estos últimos sean constante).
Python3 and pip3.
Crear tu entorno virtual:
python3 -m venv env
Activar el entorno:
- Unix/macOS
source env/bin/activate
- Windows
./env\Script\activate
pip3 install -r requirements.txt
python3 main.py
- DEF
Representa una definición del nombre en , como un átomo que tiene asociado el tipo en .
Por ejemplo:
• DEF x T define x teniendo tipo T.
• DEF f t -> T define f teniendo tipo t -> T.
• DEF g (a -> a) -> a define g teniendo tipo (a -> a) -> a.
- TIPO
Consulta el tipo de la expresión en , realizando la unificación necesaria y construyendo el tipo más general posible.
Por ejemplo, considerando las definiciones en la sección anterior:
• TIPO f imprime t -> T (o usando cualquier otra variable de tipo).
• TIPO f x imprime T.
• TIPO g f imprime T.
- SALIR
Salir del programa.
cd tests
coverage3 run --source=polymorphic_type -m unittest test_polymorphic.py
o
cd tests
coverage3 run --source=my_type -m unittest test_my_type.py
coverage3 report -m
- Para el PolymorphicType:
Module | Coverage |
---|---|
Memory Manager | 93% |
- Para el MyType:
Module | Coverage |
---|---|
Memory Manager | 86% |