Functions in C5

Cabezas, Juan José

Resumen:

In this paper we present the function type in C5. C5 is a superset of the C programming language. The main difference between C and C5 is that the type system of C5 supports the definition of types of dependent pairs, i.e., the type of the second member of the pair depends on the value of the first member (which is a type). Another C5 extension is the type initialization expression which is a list of dependent pairs that can be attached to type expressions in a type declaration. These extensions provide C5 with dynamic type inspection at run time and attribute type definition. The result is a powerful framework for generic programming. The version 0.98 (September, 2006) of the C5 compiler includes the function type extending the power and expressiveness of the language. The paper introduces C5 function types, the functions C5 fapply and C5 compil, and a collection of examples


En este trabajo presentamos el tipo función en C5. C5 es un superconjunto del lenguaje de programación C. La diferencia principal entre C y C5 es que el sistema de tipos de C5 acepta definiciones de tipos de pares dependientes, es decir, que el tipo del segundo miembro del par depende del valor del primero (el cual es un tipo). Otra extensión de C5 es la expresión de inicialización de tipo que es una secuencia de pares dependientes que se puede adjuntar a una expresi'on de tipo en una declaraci'on de tipo. Estas extensiones proveen a C5 con inspección dinámica de tipos en tiempo de ejecución y definiciones de tipos con atributos. El resultado es una potente plataforma para programación genérica. La versión 0.98 (septiembre, 2006) del compilador de C5 incluye el tipo función extendiendo la potencia y expresividad del lenguaje. En este trabajo se introduce el tipo función, las funciones C5 _fapply y C5 _compil, y una colección de ejemplos.


Detalles Bibliográficos
2006
Dynamic Type
Dependent pair type
Generic programming
Function type
Universidad de la República
COLIBRI
http://hdl.handle.net/20.500.12008/3522
Acceso abierto
Licencia Creative Commons Atribución – No Comercial – Sin Derivadas (CC BY-NC-ND 4.0)