En informática y programación informática , se dice que una función f es estricta si, cuando se aplica a una expresión no terminal, tampoco termina. [1] Una función estricta en la semántica denotacional de los lenguajes de programación es una función f donde . La entidad , llamada bottom , denota una expresión que no devuelve un valor normal, ya sea porque se repite sin fin o porque se cancela debido a un error como la división por cero. Una función que no es estricta se llama no estricta . Un lenguaje de programación estricto es uno en el que las funciones definidas por el usuario siempre son estrictas.
Intuitivamente, las funciones no estrictas corresponden a estructuras de control . Operativamente, una función estricta es aquella que siempre evalúa su argumento ; una función no estricta es aquella que podría no evaluar algunos de sus argumentos. Las funciones que tienen más de un parámetro pueden ser estrictas o no estrictas en cada parámetro de forma independiente, así como estrictas de forma conjunta en varios parámetros simultáneamente.
Como ejemplo, la if-then-elseexpresión de muchos lenguajes de programación, llamada ?:en lenguajes inspirados en C, puede considerarse 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 no estricta en su tercer parámetro, porque (por ejemplo) . Sin embargo, es estricta conjuntamente en su segundo y tercer parámetro, ya que y .
if(false,,1) = 1if(true,2,) = 2if(true,,) = if(false,,) =
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 se pueden compilar según una convención de llamada más eficiente , como la llamada por valor , sin cambiar el significado del programa que las contiene.
Véase también
Referencias
- ^ "Una introducción sencilla a Haskell: funciones". www.haskell.org . Consultado el 23 de junio de 2016 .