7 research outputs found
Linear, bounded, functional pretty-printing
We present two implementations of Oppen's pretty-printing algorithm in Haskell that meet the efficiency of Oppen's imperative solution but have a simpler, clear structure. We start with an implementation that uses lazy evaluation to simulate two co-operating processes. Then we present an implementation that uses higher-order functions for delimited continuations to simulate co-routines with explicit scheduling
Format Unraveled
International audiencePretty-printing can be described as finding a good-looking solution to typeset data according to a set of formatting conventions. Oppen [6] pioneered the field with an algorithmic solution to pretty-printing, using the notions of boxes and break hints. The Format module is a direct descendant of this work: it is unfortunately often misunderstood or even misused. The first goal of this article is to enhance the available documentation about Format by explaining its basic and advanced features but also its relationship and differences with Oppen's seminal work. The second goal is to investigate the links that Format has with the document-based pretty-printing tradition fostered by the lazy programming community [3, 4, 9, 10]
Pretty printing with lazy dequeues
There are several purely functional libraries for converting tree structured data into indented text, but they all make use of some backtracking. Over twenty years ago, Oppen published a more efficient imperative implementation of a pretty printer. This article shows that the same efficiency is also obtainable without destructive updates by developing a similar but purely functional Haskell implementation with the same complexity bounds. At its heart lie two lazy double ended queues
Untersuchung minimal strikter Funktionen in funktionaler Programmierung
In a non-strict programming language like Haskell a function only evaluates the parts of an argument that are necessary to calculate the result of an application. However, it is possible to define a function that is unnecessarily strict. That is, the function evaluates some part of its argument although this part is not needed to calculate the demanded part of the result. This thesis investigates the influence of
unnecessary strictness on the memory behavior of a function and presents approaches for identifying and optimizing unnecessarily strict functions
Preliminary proceedings of the 2001 ACM SIGPLAN Haskell workshop
This volume contains the preliminary proceedings of the 2001 ACM SIGPLAN Haskell Workshop,
which was held on 2nd September 2001 in Firenze, Italy. The final proceedings will
published by Elsevier Science as an issue of Electronic Notes in Theoretical Computer Science
(Volume 59).
The HaskellWorkshop was sponsored by ACM SIGPLAN and formed part of the PLI 2001
colloquium on Principles, Logics, and Implementations of high-level programming languages,
which comprised the ICFP/PPDP conferences and associated workshops. Previous Haskell
Workshops have been held in La Jolla (1995), Amsterdam (1997), Paris (1999), and Montr´eal
(2000).
The purpose of the Haskell Workshop was to discuss experience with Haskell, and possible
future developments for the language. The scope of the workshop included all aspects of the
design, semantics, theory, application, implementation, and teaching of Haskell. Submissions
that discussed limitations of Haskell at present and/or proposed new ideas for future versions
of Haskell were particularly encouraged. Adopting an idea from ICFP 2000, the workshop also
solicited two special classes of submissions, application letters and functional pearls, described
below