Results 1 -
5 of
5
Generic Accumulations
, 2002
"... which are eventually used in later stages of the computation. We present a generic definition of accumulations, achieved by the introduction of a new recursive operator on inductive types. We also show that the notion of downwards accumulation developed by Gibbons is subsumed by our notion of acc ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
which are eventually used in later stages of the computation. We present a generic definition of accumulations, achieved by the introduction of a new recursive operator on inductive types. We also show that the notion of downwards accumulation developed by Gibbons is subsumed by our notion of accumulation.
A Modal Calculus for Effect Handling
, 2003
"... In their purest formulation, monads are used in functional programming for two purposes: (1) to hygienically propagate effects, and (2) to globalize the effect scope -- once an effect occurs, the purity of the surrounding computation cannot be restored. As a consequence, monadic typing does not prov ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
In their purest formulation, monads are used in functional programming for two purposes: (1) to hygienically propagate effects, and (2) to globalize the effect scope -- once an effect occurs, the purity of the surrounding computation cannot be restored. As a consequence, monadic typing does not provide very naturally for the practically important ability to handle effects, and there is a number of previous works directed toward remedying this deficiency. It is mostly based on extending the monadic framework with further extra-logical constructs to support handling. In this paper we adopt...
Cause and Effect: Type Systems for Effects and Dependencies
, 2005
"... Formal framework for reasoning about programs are important not only for automated tools but also for programmers. Type systems have proven an enormously popular framework for validating static analyses of programs, as well as for documenting their interfaces for programmers. However, most type syst ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Formal framework for reasoning about programs are important not only for automated tools but also for programmers. Type systems have proven an enormously popular framework for validating static analyses of programs, as well as for documenting their interfaces for programmers. However, most type systems used in practice today fail to capture many essential aspect of p behavior dependencie of programs The considerabl c i pas twenty years int developing that captu e information I pape examin compa contrast connec mbe o highly influentia p ototy ica system capturing dependencies Specifically w classi e typ system a onceive fo l canonical example o pendenc system system information-flow di moda systems c (co)monadi e fec dependenc discipline linear system p e- easonin abou state esou Finally als esen calculus provide insight possibili fo a unified account for all of these systems.
Generic Accumulations for Program Calculation
, 2004
"... Accumulations are recursive functions widely used in the context of functional programming. They maintain intermediate results in additional parameters, called accumulators, that may be used in later stages of computing. In a former work [Par02] a generic recursion operator named afold was presented ..."
Abstract
- Add to MetaCart
Accumulations are recursive functions widely used in the context of functional programming. They maintain intermediate results in additional parameters, called accumulators, that may be used in later stages of computing. In a former work [Par02] a generic recursion operator named afold was presented. Afold makes it possible to write accumulations defined by structural recursion for a wide spectrum of datatypes (lists, trees, etc.). Also, a number of algebraic laws were provided that served as a formal tool for reasoning about programs with accumulations. In this work, we present an extension to afold that allows a greater flexibility in the kind of accumulations that may be represented. This extension, in essence, provides the expressive power to allow accumulations to have more than one recursive call in each subterm, with different accumulator values —something that was not previously possible. The extension is conservative, in the sense that we obtain similar algebraic laws for the extended operator. We also present a case study that illustrates the use of the algebraic laws in a calculational setting and a technique for the improvement of fused programs
Comonadic Iteration (Abstract)
, 2000
"... this paper, we discuss generic recursion combinators, i.e., combinator codings of recursive function definition schemes working uniformly on any inductive source type of functions. Such combinators are polymorphic in a type constructor inducing an inductive type. Generic recursion schemes are numero ..."
Abstract
- Add to MetaCart
this paper, we discuss generic recursion combinators, i.e., combinator codings of recursive function definition schemes working uniformly on any inductive source type of functions. Such combinators are polymorphic in a type constructor inducing an inductive type. Generic recursion schemes are numerous. The most fundamental and easy to code by a combinator are (simple) iteration and primitive-recursion. Some other schemes that are more general in terms of direct expression power, e.g., the course-of-value strengthenings of iteration and primitive-recursion, are equally useful in programming and do not lead to considerably higher sophistication in the formulation [1]. Too particular generalizations, however, get too esoteric and sophisticated. To make a library primitive out of every powerful imaginable recursion scheme is therefore not a good idea. It might be the case that a better approach is to add another dimension of genericity. In this paper, we suggest a "many-in-one" recursion combinator that neatly captures a whole family of recursion schemes that prima facie present themselves as diverging generalizations of simple iteration. The combinator is doubly generic: in addition to being polymorphic in a signature for an inductive type, it is polymorphic in a comonad and a natural transformation, which together determine a particular recursion scheme. The family includes simple primitive-recursion, course-of-value versions of iteration and primitive-recursion, and much more. Below is a brief mathematical summary. Let C be a category and F : C # C be a functor. An F -algebra is a morphism # : F C #C, where C (its carrier) is an object of C

