Articulo de referencia

Función estricta

En informática y programación , se dice que una función f es estricta si, cuando se aplica a una expresión no terminante, tampoco termina. [ 1 ] Una función estricta en la semán...

En informática y programación , se dice que una función f es estricta si, cuando se aplica a una expresión no terminante, tampoco termina. [ 1 ] Una función estricta en la semántica denotacional de los lenguajes de programación es una función f dondeF()=⊥{\displaystyle f\left(\perp \right)=\perp }. La entidad{\displaystyle \perp }El valor " bottom" (o " bottom ") indica una expresión que no devuelve un valor normal, ya sea porque entra en un bucle infinito o porque se interrumpe debido a un error como la división por cero. Una función que no es estricta se denomina no estricta . Un lenguaje de programación estricto es aquel en el que las funciones definidas por el usuario siempre son estrictas.

Intuitivamente, las funciones no estrictas corresponden a estructuras de control . Operacionalmente, una función estricta es aquella que siempre evalúa su argumento ; una función no estricta es aquella que puede no evaluar algunos de sus argumentos. Las funciones con más de un parámetro pueden ser estrictas o no estrictas para cada parámetro de forma independiente, así como estrictas para varios parámetros simultáneamente.

Como ejemplo, la if-then-elseexpresión de muchos lenguajes de programación, llamados ?:en lenguajes inspirados en C, puede pensarse como una función de tres parámetros. Esta función es estricta en su primer parámetro, ya que la función debe saber si su primer argumento se evalúa como verdadero o falso antes de poder retornar; pero no es estricta en su segundo parámetro, porque (por ejemplo) , así como tampoco es estricta en su tercer parámetro, porque (por ejemplo) . Sin embargo, es conjuntamente estricta en su segundo y tercer parámetro, ya que y .if(false,{\displaystyle \perp },1) = 1if(true,2,{\displaystyle \perp }) = 2if(true,{\displaystyle \perp },{\displaystyle \perp }) = {\displaystyle \perp }if(false,{\displaystyle \perp },{\displaystyle \perp }) = {\displaystyle \perp }

En un lenguaje de programación funcional no estricto , el análisis de estrictez se refiere a cualquier algoritmo utilizado para demostrar la estrictez de una función con respecto a uno o más de sus argumentos. Dichas funciones pueden compilarse a una convención de llamada más eficiente , como la llamada por valor , sin alterar el significado del programa que las contiene.

Véase también

Referencias

  1. "Una introducción sencilla a Haskell: funciones" . www.haskell.org . Consultado el 23 de junio de 2016 .