Adicional
Acabo de encontrar dos preguntas relacionadas
/programming//a/2582804/156458
En lenguajes de programación, de la Pragmática del lenguaje de programación de Michael Scott
En general, se dice que un valor en un lenguaje de programación tiene un estado de primera clase si puede pasarse como un parámetro, devolverse desde una subrutina o asignarse a una variable. Los tipos simples como enteros y caracteres son valores de primera clase en la mayoría de los lenguajes de programación. Por el contrario, un valor de "segunda clase" puede pasarse como parámetro, pero no puede devolverse desde una subrutina o asignarse a una variable, y un valor de "tercera clase" ni siquiera puede pasarse como parámetro.
Las etiquetas son valores de tercera clase en la mayoría de los lenguajes de programación, pero valores de segunda clase en Algol. Las subrutinas muestran la mayor variación. Son valores de primera clase en todos los lenguajes de programación funcionales y en la mayoría de los lenguajes de script. También son valores de primera clase en C # y, con algunas restricciones, en varios otros lenguajes imperativos, incluidos Fortran, Modula-2 y -3, Ada 95, C y C ++. 11 Son valores de segunda clase en la mayoría de los otros idiomas imperativos, y valores de tercera clase en Ada 83.
¿Cuál es la base matemática para valores de primera / segunda / tercera clase en lenguajes de programación?
La terminología me recuerda a la lógica de primer / segundo orden, pero ¿están relacionadas?
Me parece que la diferencia entre ellos es en qué caso específico se puede usar un valor
- pasado como un parámetro,
- regresado de una subrutina, o
- asignado a una variable.
¿Por qué son importantes los casos específicos, mientras que no se mencionan otros casos?
Gracias.