Presentada en el seminario de Teoría e Inteligencia Artificial en Univeridad ORT, Uruguay.
En esta charla discutimos cómo utilizar tipos lineales para controlar el uso de recursos escasos. Los tipos lineales son una de las próximas extensiones de Haskell [1] que vendrán en el compilador GHC.
Presentaremos come caso de estudio inline-java [2], una librería que permite incluir fragmentos de Java en módulos de Haskell, y ejecutar los dos lenguajes conjuntamente.
Mantener acotada las referencias a objetos en Java desde Haskell ha sido hasta ahora un problema de ingeniería difícil. El programador es responsable de borrar las referencias a tiempo. Borrarlas demasiado pronto implica errores al acceder a referencias que ya han sido borradas. Borrarlas demasiado tarde produce escases de memoria transitoria en la máquina virtual de Java. Olvidarse de borrarlas, implica que la memoria que la aplicación utiliza aumentará con el tiempo. Estos problemas son comunes a cualquier integración de lenguajes donde los recolectores de basura no están coordinados.
Por ello exploramos como los tipos lineales pueden involucrar al compilador para detectar los errores más comunes al manejar recursos.
[1]https://github.com/ghc-proposals/ghc-proposals/pull/111
[2]https://github.com/tweag/inline-java