stringtranslate.com

Sistema de efectos

En informática , un sistema de efectos es un sistema formal que describe los efectos computacionales de programas informáticos, como los efectos secundarios . Se puede utilizar un sistema de efectos para proporcionar una verificación en tiempo de compilación de los posibles efectos del programa.

El sistema de efectos amplía la noción de tipo para que tenga un componente de "efecto", que comprende un tipo de efecto y una región . El tipo de efecto describe lo que se está haciendo y la región describe con qué (parámetros) se está haciendo.

Un sistema de efectos suele ser una extensión de un sistema de tipos . En este caso se utiliza a veces el término " sistema de tipos y efectos ". A menudo, un tipo de valor se indica junto con su efecto como tipo. effect , donde tanto el componente de tipo como el componente de efecto mencionan ciertas regiones (por ejemplo, un tipo de celda de memoria mutable está parametrizado por la etiqueta de la región de memoria en la que reside la celda). El término "efecto algebraico" se deriva del sistema de tipos.

Los sistemas de efectos pueden usarse para probar la pureza externa de ciertas definiciones internamente impuras: por ejemplo, si una función asigna y modifica internamente una región de la memoria, pero el tipo de función no menciona la región, entonces el efecto correspondiente puede borrarse de la memoria. efecto de la función. [1]

Ejemplos

Algunos ejemplos de comportamientos que pueden describirse mediante sistemas de efectos incluyen:

Desde el punto de vista de un programador, los efectos son útiles ya que permiten separar la implementación ( cómo ) de acciones específicas de la especificación de qué acciones realizar. Por ejemplo, un efecto de pregunta de nombre puede leerse desde la consola, abrir una ventana o simplemente devolver un valor predeterminado. El flujo de control se puede describir como una combinación de rendimiento (en el sentido de que la ejecución continúa) y lanzamiento (en el sentido de que un efecto no controlado se propaga hacia abajo hasta que se controla). [2]

Implementaciones

Característica principal

Apoyo total

Soporte Parcial y Prototipos

Referencias

  1. ^ Albin., Turbak, Franklyn (2010). Conceptos de diseño en lenguajes de programación. Aprendizaje de PHI. ISBN 978-81-203-3996-5. OCLC  1261053520.{{cite book}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  2. ^ Abramov, Dan. "Efectos algebraicos para el resto de nosotros". exagerado.io .
  3. ^ "El Manual Koka". koka-lang.github.io .
  4. ^ Pretnar, Matija (7 de diciembre de 2021), efectivo , consultado el 11 de diciembre de 2021
  5. ^ "El lenguaje del unísono". www.unisonweb.org . Consultado el 7 de diciembre de 2021 .
  6. ^ El equipo de investigación de Effekt. "Lenguaje Effectt: conceptos y características". Lenguaje de efectos . Consultado el 13 de junio de 2023 .
  7. ^ Vera, Josh (18 de abril de 2020). "joshvera/freemonad-benchmark". GitHub . Un punto de referencia que compara el rendimiento de diferentes implementaciones de mónadas gratuitas.
  8. ^ "OCaml - Extensiones de idioma". v2.ocaml.org . Consultado el 13 de junio de 2023 .
  9. ^ "Habilidades de CanThrow". Documentación de Scala . Consultado el 7 de diciembre de 2021 .
  10. ^ "¿Función Lambda de Java 8 que genera una excepción?". Desbordamiento de pila . Consultado el 25 de diciembre de 2021 .
  11. ^ Macabeo, Bruno (16 de septiembre de 2020). "macabeus/js-proposal-algebraic-effects: 📐Que haya efectos algebraicos en JS". GitHub .

Capítulos de libros de texto

Documentos generales

Otras lecturas