Bluefin se presenta principalmente como un sistema de capacidades y, en segundo lugar, como un sistema de efectos para Haskell. Esta librería, publicada por primera vez a principios de 2024, se inspira en effectful de Andrzej Rybczak y funciona como una envoltura ligera sobre el tipo IO de Haskell. La diferencia central con effectful y otros sistemas tradicionales reside en que Bluefin representa los efectos mediante argumentos de valor, no mediante restricciones de tipos.
La reflexión parte del concepto de capacidad: una entidad que designa un recurso y, al mismo tiempo, concede autoridad para acceder a él. Los descriptores de archivo son un ejemplo habitual. Este mecanismo nació en el ámbito de la seguridad y el control de acceso, aunque también se utiliza en lenguajes como Pony para autorizar operaciones del sistema de ejecución. Bluefin amplía esa noción más allá de la seguridad. Una operación que lance un proceso, escriba en un archivo o lance una excepción solo puede ejecutarse si recibe la capacidad correspondiente. En Bluefin, por tanto, una capacidad expresa tanto un efecto disponible como la autoridad para realizarlo.
El artículo examina distintas interpretaciones de los sistemas de efectos. Algunas Bibliotecas, como extensible-effects, effectful o MTL, expresan los efectos mediante restricciones de tipo; transformers los transporta mediante sus mónadas; Bluefin lo hace con argumentos de valor; ST delimita el estado mutable; e IO admite un conjunto amplio de interacciones. La utilidad principal de estos sistemas no consiste en facilitar efectos, sino en impedir que un componente ejecute operaciones no declaradas. De este modo, el texto equipara las capacidades con los efectos en alcance y sostiene que ambos conceptos describen la misma relación entre autoridad y operación.
