Functional programming / Semantics

URI permanente para esta colección:

Artículos en la categoría Functional programming / Semantics publicados en las Actas de las XX Jornadas de Programación y Lenguajes (PROLE 2021).
Notificar un error en esta colección


Envíos recientes

Mostrando 1 - 3 de 3
  • Artículo
    HaskCell: Experiments with Purely Functional Spreadsheets
    Mariño, Julio; Ballesteros González, Ignacio; Bueso de Barrio, Luis Eduardo. Actas de las XX Jornadas de Programación y Lenguajes (PROLE 2021), 2021-09-22.
    Spreadsheet programs are one of the most widespread information processing tools used by end-users. Their importance lies not only in their extensive use by people with little or no knowledge of programming but because of their relevance as a decision-making tool by executives in many companies. In spite of this long-term success, many studies have found plenty of pitfalls that make spreadsheets widely faulty, hence potentially leading to risky decisions. Because of these problems several analysis tools have been proposed to help find errors easily. In this project we present a different approach, more oriented to prevent the appearance of errors through a change in the way users interact with them. We focus on the _declarative_ essence of spreadsheets and propose to refound them on the grounds of modern functional programming languages. Our tool, _HaskCell_, uses a subset of _Haskell_ as the expression language for its cells and takes advantage of its rich type system to support a safer way of spreadsheet programming that prevents the appearance of certain errors and help understanding the meaning of programs, as new data types can be introduced from cell aggregates. Haskell is also used for defining reusable, user-defined functions and external modules. We show a working prototype incorporating the ideas above and point towards new features based on advanced functional programming technologies.
  • Artículo
    A Formal Semantics for Agent Distribution and Fault Tolerance in Jason
    Fernández Díaz, Álvaro; Fredlund, Lars-Ake; Benac Earle, Clara; Mariño, Julio. Actas de las XX Jornadas de Programación y Lenguajes (PROLE 2021), 2021-09-22.
    This paper provides a formal specification of the distribution and fault-tolerance mechanisms of eJason. The eJason programming language is an extension to the agent-oriented programming language Jason that introduces native support for the transparent distribution of agents as well as fault-tolerance mechanisms. This formal semantics is presented from a multiagent system perspective. It unambiguously describes both the possible evolution of the distributed multi- agent system over time and the different instruments for fault detection and fault recovery, hence exposing their strengths. This specification may serve as a reference for researchers interested in the inclusion of similar mechanisms in agent-oriented programming languages.
  • Artículo
    Towards a Dynamic Pipeline Framework implemented in (parallel) Haskell
    Royo Sales, Juan Pablo; Pasarella, Edelmira; Zoltan, Cristina; Vidal, Maria Esther. Actas de las XX Jornadas de Programación y Lenguajes (PROLE 2021), 2021-09-22.
    Data streaming processing has given rise to new computation paradigms to provide effective and efficient data stream processing. The most important features of these new paradigms are the exploitation of parallelism, the capacity to adapt execution schedulers, reconfigure computational structures, adjust the use of resources according to the characteristics of the input stream and produce incremental results. The Dynamic Pipeline Paradigm (DPP) is a naturally functional approach to deal with stream processing. This fact encourages us to use a purely functional programming language for DPP. In this work, we tackle the problem of assessing the suitability of using (parallel) Haskell to implement a Dynamic Pipeline Framework (DPF). The justification of this choice is twofold. First, from a formal point of view, Haskell has solid theoretical foundations providing the possibility of manipulating computations as primary entities. From a practical perspective, it has a robust set of tools for writing multithreading and parallel computations with optimal performance. As a result, we present a dynamic pipeline to compute the weakly connected components of a graph (WCC) in Haskell (a.k.a. DP-Haskell). The behavior of DP-Haskell is empirically evaluated and compared with a solution provided by a Haskell library. The evaluation is assessed in three networks of different sizes and topology. Performance is measured in terms of the time of the first result, continuous generation of results, total time, and consumed memory. The results suggest that DP-Haskell, even naive, is competitive with the existing solution provided in the Haskell library. DP-Haskell exhibits a higher continuous behavior and can produce the first result faster. The observed results are encouraging and provide evidence of the benefits that Haskell's abstractions bring in implementing WCC and DPP. Built on them, we will develop a general and parametric DPF.