Seguridad (programación)

La protección ( expresión de guardia , expresión de guardia ) es una expresión lógica que pretende limitar los procesos computacionales y seleccionar una opción de cálculo. Suele usarse en lenguajes de programación funcionales (por ejemplo , Haskell , Erlang ) [1] .

Ejemplos de expresiones de guardia

Todas las expresiones de guardia posteriores están en lenguaje funcional Haskell , que utiliza esta tecnología muy a menudo. Todas estas expresiones están resaltadas en negrita en los códigos .

Ejemplo 1 - Lista de Inclusión

La función divisors devuelve una lista de divisores del número dado n. La segunda línea de la definición muestra una protección que restringe la elección de un elemento de la lista de divisores xa solo un valor que divide el parámetro original nsin dejar resto.

divisores n = [x | x <- [1..(n - 1)], n `mod` x == 0 ]

Ejemplo 2 - Guardia en el cuerpo de la función

La función signdevuelve el signo del número dado x. Las expresiones de guardia se escriben después de los símbolos ( |). Permiten elegir una u otra alternativa a la hora de calcular el signo de un número. Esta forma de almacenamiento se usa a menudo en lugar del mecanismo de coincidencia de patrones cuando no hay forma de describir explícitamente el patrón en la función (por ejemplo, si la función es una función de aplicación genérica para procesar valores de algún tipo que es una instancia de alguna clase).

firmar x | X < 0 = -1 | X == 0 = 0 | x > 0 = 1

La protección permite, en caso de una expresión coincidente no válida, pasar a la siguiente. Si el ejemplo anterior tiene el formato de un operador de coincidencia de patrones, la x = 0primera coincidencia ( x < 0) provocará un error, cuyo controlador detendrá los intentos posteriores de coincidencia. Además, para el caso en que todas las expresiones no sean verdaderas, es conveniente detectar tales situaciones estableciendo el valor de verdad inmediato True. Para mejorar la legibilidad, la biblioteca estándar de Prelude proporciona lo que de otro modo sería constante, lo que se parece aún más a un cambio en los lenguajes algorítmicos.

Véase también

Notas

  1. Cesarini, Thompson, 2012 .

Literatura