ECMA TR/89-2006
Infraestructura de lenguaje común (CLI) Particiones I a VI Partición I: Conceptos y arquitectura Partición II: Definición de metadatos y semántica Partición III: Conjunto de instrucciones CIL Partición IV: Perfiles y bibliotecas Partición V: Formatos binarios Partición V

Estándar No.
ECMA TR/89-2006
Fecha de publicación
2006
Organización
IX-ECMA
Estado
Alcance
Las bibliotecas estándar CLI (ISO/IEC 23271) proporcionan una colección de tipos comunes que pueden usarse en varios idiomas. Con la adición de genéricos a la CLI, las bibliotecas estándar se han ampliado para incluir varios tipos genéricos comunes, en particular, colecciones. Sin embargo, en la actualidad, estas bibliotecas no incluyen muchos tipos genéricos simples que se encuentran en varios idiomas diferentes. Cualquier lenguaje que utilice estos tipos comunes debe implementarlos en lugar de depender de la biblioteca CLI, lo que reduce la interoperabilidad del lenguaje. Esta propuesta aborda esta cuestión proporcionando varios de estos tipos comunes. Las tuplas genéricas (tipos de productos) son estándar en varios lenguajes: C++ (par de plantillas), Ada, Haskell y Standard ML (SML). Sin embargo, los idiomas difieren en la cantidad de tamaños de tupla predefinidos admitidos por sus bibliotecas estándar; por ejemplo, C++ proporciona sólo un (par), mientras que Haskell proporciona ocho (tamaños 2 a 9) y SML permite cualquier tamaño de tupla. Esta propuesta proporciona nueve (tallas 2 a 10). La programación genérica fomenta la programación de "orden superior" donde las funciones genéricas (métodos) toman argumentos de tipo función (delegar) que tienen tipos genéricos. Los ejemplos incluyen restricciones genéricas y con de Ada, y argumentos de función en Haskell y SML. En la CLI, los valores de las funciones se proporcionan en forma de delegados, por lo que esta propuesta define tipos de delegados genéricos estándar para funciones (que devuelven un valor) y procedimientos (que no lo hacen). Otros dos tipos que aparecen en varios idiomas son un tipo opcional, que contiene un valor de algún otro tipo o una indicación de que dicho valor no está presente; y un tipo cualquiera, que contiene un valor de uno de dos tipos posibles y una indicación de cuál está presente. Esta propuesta proporciona ambos. (Nota: el tipo opcional es similar, pero diferente, al tipo System.Nullable). Finalmente, en los lenguajes genéricos existentes, se ha encontrado la necesidad de utilizar un tipo de relleno cuando un parámetro genérico particular no es necesario para un uso particular del tipo genérico. A menudo se proporciona un tipo estándar de un valor para este propósito, a menudo llamado Unidad o Void. Esta propuesta incluye tal tipo.



© 2023 Reservados todos los derechos.