Handbook of logic in computer science (vol. 1)
Lazy Functional Algorithms for Exact Real Functionals
MFCS '98 Proceedings of the 23rd International Symposium on Mathematical Foundations of Computer Science
Infinite sets that admit fast exhaustive search
LICS '07 Proceedings of the 22nd Annual IEEE Symposium on Logic in Computer Science
Operational domain theory and topology of sequential programming languages
Information and Computation
Language Engineering and Rigorous Software Development
Electronic Notes in Theoretical Computer Science (ENTCS)
Selection functions, bar recursion and backward induction
Mathematical Structures in Computer Science
Computational interpretations of analysis via products of selection functions
CiE'10 Proceedings of the Programs, proofs, process and 6th international conference on Computability in Europe
The Peirce translation and the double negation shift
CiE'10 Proceedings of the Programs, proofs, process and 6th international conference on Computability in Europe
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Hi-index | 0.00 |
This is a tutorial for mathematically inclined functional programmers, based on previously published, peered reviewed theoretical work. We discuss a higher-type functional, written here in the functional programming language Haskell, which (1) optimally plays sequential games, (2) implements a computational version of the Tychonoff Theorem from topology, and (3) realizes the Double-Negation Shift from logic and proof theory. The functional makes sense for finite and infinite (lazy) lists, and in the binary case it amounts to an operation that is available in any (strong) monad. In fact, once we define this monad in Haskell, it turns out that this amazingly versatile functional is already available in Haskell, in the standard prelude, called sequence, which iterates this binary operation. Therefore Haskell proves that this functional is even more versatile than anticipated, as the function sequence was introduced for other purposes by the language designers, in particular the iteration of a list of monadic effects (but effects are not what we discuss here).