A recent paper by Graham Hutton and Diana Fulger (\"Reasoning about Effects: Seeing the Wood through the Trees\", in the preproceedings of Trends in Functional Programming 2008) addresses the problem of reasoning about effectful functional programs, introducing a relabelling function on binary trees as a representative illustration. The example is a very fruitful one, but we argue that their approach is less effective than it might be, because they miss two opportunities for higher-level reasoning: abstraction from the particular kinds of effect (the choice of monad) and from the pattern of recursion (the flow of computation). We present an alternative approach using properties of idiomatic traversals, which cleanly separate the twin concer...
The Iterator pattern gives a clean interface for element-by-element access to a collection, independ...
Program fragments in functional languages may be observationally congruent in a language without eff...
In their purest formulation, monads are used in functional programming for two purposes: (1) to hygi...
A recent paper by Graham Hutton and Diana Fulger (\"Reasoning about Effects: Seeing the Wood through...
We present new ways of reasoning about a particular class of effectful Haskell programs, namely thos...
We present new ways of reasoning about a particular class of effectful Haskell programs, namely thos...
Reasoning about programs that use effects can be much harder than reasoning about their pure counter...
AbstractWe introduce proof rules for inverting a program. We derive an algorithm to compute the preo...
In a lazy functional language, the standard encoding of recursion in DSLs uses the host language's r...
In this paper we consider the problem of decorating trees. We examine the special case where multipl...
Term rewriting is an appealing technique for performing program analysis and program transformation....
In this article, we introduce Applicative functors – an abstract characterisation of an applicative ...
Recursion is considered a challenging programming technique by many students. There are two common a...
The Iterator pattern gives a clean interface for element-by-element access to a collection, independ...
The Iterator pattern gives a clean interface for element-by-element access to a collection, independ...
Program fragments in functional languages may be observationally congruent in a language without eff...
In their purest formulation, monads are used in functional programming for two purposes: (1) to hygi...
A recent paper by Graham Hutton and Diana Fulger (\"Reasoning about Effects: Seeing the Wood through...
We present new ways of reasoning about a particular class of effectful Haskell programs, namely thos...
We present new ways of reasoning about a particular class of effectful Haskell programs, namely thos...
Reasoning about programs that use effects can be much harder than reasoning about their pure counter...
AbstractWe introduce proof rules for inverting a program. We derive an algorithm to compute the preo...
In a lazy functional language, the standard encoding of recursion in DSLs uses the host language's r...
In this paper we consider the problem of decorating trees. We examine the special case where multipl...
Term rewriting is an appealing technique for performing program analysis and program transformation....
In this article, we introduce Applicative functors – an abstract characterisation of an applicative ...
Recursion is considered a challenging programming technique by many students. There are two common a...
The Iterator pattern gives a clean interface for element-by-element access to a collection, independ...
The Iterator pattern gives a clean interface for element-by-element access to a collection, independ...
Program fragments in functional languages may be observationally congruent in a language without eff...
In their purest formulation, monads are used in functional programming for two purposes: (1) to hygi...