A Semantic Framework to Debug Parallel Lazy Functional Languages

It is not easy to debug lazy functional programs. The reason is that laziness and higherorder complicates basic debugging strategies. Although there exist several debuggers for sequential lazy languages, dealing with parallel languages is much harder. In this case, it is important to implement debug...

Descripción completa

Detalles Bibliográficos
Autores: Encina Vara, Alberto De La, Hidalgo Herrero, Mercedes, Llana Díaz, Luis Fernando, Rubio Díez, Fernando
Tipo de recurso: artículo
Fecha de publicación:2020
País:España
Institución:Universidad Complutense de Madrid (UCM)
Repositorio:Docta Complutense
Idioma:inglés
OAI Identifier:oai:docta.ucm.es:20.500.14352/6439
Acceso en línea:https://hdl.handle.net/20.500.14352/6439
Access Level:acceso abierto
Palabra clave:Functional programming
debugging
parallel programming
semantics
Informática (Informática)
Lenguajes de programación
Programación de ordenadores (Informática)
1203.17 Informática
1203.23 Lenguajes de Programación
Descripción
Sumario:It is not easy to debug lazy functional programs. The reason is that laziness and higherorder complicates basic debugging strategies. Although there exist several debuggers for sequential lazy languages, dealing with parallel languages is much harder. In this case, it is important to implement debugging platforms for parallel extensions, but it is also important to provide theoretical foundations to simplify the task of understanding the debugging process. In this work, we deal with the debugging process in two parallel languages that extend the lazy language Haskell. In particular, we provide an operational semantics that allows us to reason about our parallel extension of the sequential debugger Hood. In addition, we show how we can use it to analyze the amount of speculative work done by the processes, so that it can be used to optimize their use of resources.