29 research outputs found
The Stackage Repository: An Exploratory Study of its Evolution
Context. Package repositories for a programming language are increasingly
common. A repository can keep a register of the evolution of its packages. In
the programming language Haskell, with its defining characteristic monads, we
can find the Stackage repository, which is a curated repository for stable
Haskell packages in the Hackage repository. Despite the widespread use of
Stackage in its industrial target, we are not aware of much empirical research
about how this repository has evolved, including the use of monads. Objective.
This paper conducts empirical research about the evolution of Stackage
considering monad packages through 22 Long-Term Support releases during the
period 2014-2023. Focusing on five research questions, this evolution is
analyzed in terms of packages with their dependencies and imports; including
the most used monad packages. To the best of our knowledge, this is the first
large-scale analysis of the evolution of the Stackage repository regarding
packages used and monads. Method. We define six research questions regarding
the repository's evolution, and analyze them on 51,716 packages (17.05 GB)
spread over 22 releases. For each package, we parse its cabal file and source
code to extract the data, which is analyzed in terms of dependencies and
imports using Pandas scripts. Results. From the methodology we get different
findings. For example, there are packages that depend on other packages whose
versions are not available in a particular release of Stackage; opening a
potential stability issue. The mtl and transformers are on the top 10 packages
most used/imported across releases of the Stackage evolution. We discussed
these findings with Stackage maintainers, which allowed us to refine the
research questions.Comment: 22 pages, 12 figure
Formal categorical reasoning
In this paper, we present a category theory library developed in the proof assistant Coq. We discuss the design principles of the library in comparison with those existing out there. To explicitly demonstrate the utility of the library, we conclude with a case study in which a Coq formalized soundness proof of the intuitionistic propositional logic within a category theoretical settings is examined
Resource Transition Systems and Full Abstraction for Linear Higher-Order Effectful Programs
International audienceWe investigate program equivalence for linear higher-order (sequential) languages endowed with primitives for computational effects. More specifically, we study operationally-based notions of program equivalence for a linear λ-calculus with explicit copying and algebraic effects à la Plotkin and Power. Such a calculus makes explicit the interaction between copying and linearity, which are intensional aspects of computation, with effects, which are, instead, extensional. We review some of the notions of equivalences for linear calculi proposed in the literature and show their limitations when applied to effectful calculi where copying is a first-class citizen. We then introduce resource transition systems, namely transition systems whose states are built over tuples of programs representing the available resources, as an operational semantics accounting for both intensional and extensional interactive behaviours of programs. Our main result is a sound and complete characterization of contextual equivalence as trace equivalence defined on top of resource transition systems
Continuity as a computational effect
The original purpose of component-based development was to provide techniques to master complex software, through composition, reuse and parametrisation. However, such systems are rapidly moving towards a level in which software becomes prevalently intertwined with (continuous) physical processes. A possible way to accommodate the latter in component calculi relies on a suitable encoding of continuous behaviour as (yet another) computational effect.
This paper introduces such an encoding through a monad which, in the compositional development of hybrid systems, may play a role similar to the one played by 1+, powerset, and distribution monads in the characterisation of partial, nondeterministic and probabilistic components, respectively. This monad and its Kleisli category provide a universe in which the effects of continuity over (different forms of) composition can be suitably studied.This work is financed by the ERDF - European Regional Development Fund through the Operational Programme for Competitiveness and Internationalisation - COMPETE 2020 Programme and by National Funds through the Portuguese funding agency, FCT - Fundacao para a Ciencia e a Tecnologia within project POCI-01-0145-FEDER-016692.The first author is also sponsored by FCT grant SFRH/BD/52234/2013, and the second one by FCT grant SFRH/BSAB/113890/2015. Moreover, D. Hofmann and M. Martins are supported by the EU FP7 Marie Curie PIRSES-GA-2012-318986 project GeTFun: Generalizing Truth-Functionality and FCT project UID/MAT/04106/2013 through CIDMA
Resource transition systems and full abstraction for linear higher-order effectful programs
We investigate program equivalence for linear higher-order (sequential) languages endowed with primitives for computational effects. More specifically, we study operationally-based notions of program equivalence for a linear \u3b3-calculus with explicit copying and algebraic effects \ue0 la Plotkin and Power. Such a calculus makes explicit the interaction between copying and linearity, which are intensional aspects of computation, with effects, which are, instead, extensional. We review some of the notions of equivalences for linear calculi proposed in the literature and show their limitations when applied to effectful calculi where copying is a first-class citizen. We then introduce resource transition systems, namely transition systems whose states are built over tuples of programs representing the available resources, as an operational semantics accounting for both intensional and extensional interactive behaviours of programs. Our main result is a sound and complete characterization of contextual equivalence as trace equivalence defined on top of resource transition systems