S. Doaitse Swierstra

dblp:s/SDSwierstra · DBLP profile ↗
← Back
30ranked-venue papers
2as first author
0since 2021 · last 2017
0000-0001-6758-4280ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 23 · 1 first-authorTheory of computation · 5Computer networks · 1Databases, data management, data science and information retrieval · 1Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
1 paper
Programming languages and type systems · 50% Compilers and program optimization · 50%

Topics — the 2 heaviest of 2, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › grammar formalisms
attribute grammars
0.011989
Higher-Order Attribute Grammars · PLDI 1989
Compilers and program optimization
attribute grammar evaluation
0.011989
Higher-Order Attribute Grammars · PLDI 1989

Methods — techniques the papers use, named apart from their topics

visit sequences · 0.0ordered attribute grammars · 0.0
YearPublicationVenuePosition
2017 Incremental evaluation of higher-order attributes
Jeroen Bransen, Atze Dijkstra, S. Doaitse Swierstra
Sci. Comput. Program.3
2015 Incremental Evaluation of Higher Order Attributes
abstract
Compilers, amongst other programs, often work with data that (slowly) changes over time. When the changes between subsequent runs of the compiler are small, one would hope the compiler to incrementally update its results, resulting in much lower running times. However, the manual construction of an incremental compiler is very hard and error prone and therefore usually not an option.
Jeroen Bransen, Atze Dijkstra, S. Doaitse Swierstra
PEPM3
2015 Compositional compiler construction: Oberon0
Marcos Viera, S. Doaitse Swierstra
Sci. Comput. Program.2
2014 Expand: Towards an Extensible Pandoc System
Jacco Krijnen, S. Doaitse Swierstra, Marcos Viera
PADL2
2014 Lazy stateless incremental evaluation machinery for attribute grammars
abstract
Many computer programs work with data that changes over time. Computations done over such data usually are repeated completely after a change in the data. For complex computations such repetitive recomputation can become too inefficient. When these recomputations take place on data which has only changed slightly, it often is possible to reformulate the computation to an incremental version which reuses the result of the computation on previous data. Such a situation typically occurs in compilers and editors for structured data (like a program) where program analyses and transformations (for example error checking) are done while editing.
Jeroen Bransen, Atze Dijkstra, S. Doaitse Swierstra
PEPM3
2014 Attribute grammar macros
Marcos Viera, S. Doaitse Swierstra
Sci. Comput. Program.2
2012 The Kennedy-Warren Algorithm Revisited: Ordering Attribute Grammars
Jeroen Bransen, Arie Middelkoop, Atze Dijkstra, S. Doaitse Swierstra
PADL4
2010 Iterative type inference with attribute grammars
abstract
Type inference is the process of constructing a typing derivation while gradually discovering type information. During this process, inference algorithms typically make subtle decisions based on the derivation constructed so far.
Arie Middelkoop, Atze Dijkstra, S. Doaitse Swierstra
GPCE3
2009 The architecture of the Utrecht Haskell compiler
abstract
In this paper we describe the architecture of the Utrecht Haskell Compiler (UHC).
Atze Dijkstra, Jeroen Fokker, S. Doaitse Swierstra
Haskell3
2009 Attribute grammars fly first-class: how to do aspect oriented programming in Haskell
abstract
Attribute Grammars (AGs), a general-purpose formalism for describing recursive computations over data types, avoid the trade-off which arises when building software incrementally: should it be easy to add new data types and data type alternatives or to add new operations on existing data types? However, AGs are usually implemented as a pre-processor, leaving e.g. type checking to later processing phases and making interactive development, proper error reporting and debugging difficult. Embedding AG into Haskell as a combinator library solves these problems.
Marcos Viera, S. Doaitse Swierstra, Wouter Swierstra
ICFP2
2009 Linear, bounded, functional pretty-printing
abstract
Abstract 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 and a 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.
S. Doaitse Swierstra, Olaf Chitil
J. Funct. Program.1
2008 Haskell, do you read me?: constructing and composing efficient top-down parsers at runtime
abstract
The Haskell definition and implementation of read is far from perfect. In the first place read is not able to handle the associativities defined for infix operators. Furthermore, it puts constraints on the way show is defined, and especially forces it to generate far more parentheses than expected. Lastly, it may give rise to exponential parsing times. All this is due to the compositionality requirement for read functions, which imposes a top-down parsing strategy.
Marcos Viera, S. Doaitse Swierstra, Eelco Lempsink
Haskell2
2006 Web Cube
I. S. W. B. Prasetya, Tanja E. J. Vos, S. Doaitse Swierstra
FORTE3
2004 Type-safe, self inspecting code
abstract
We present techniques for representing typed abstract syntax trees in the presence of observable recursive structures. The need for this arose from the desire to cope with left-recursion in combinator based parsers. The techniques employed can be used in a much wider setting however, since it enables the inspection and transformation of any program structure, which contains internal references. The hard part of the work is to perform such analyses and transformations in a setting in which the Haskell type checker is still able to statically check the correctness of the program representations, and hence the type correctness of the transformed program.
Arthur I. Baars, S. Doaitse Swierstra
Haskell2
2004 A UNITY-Based Framework Towards Component Based Systems
I. S. W. B. Prasetya, Tanja E. J. Vos, A. Azurat, S. Doaitse Swierstra
OPODIS4
2004 Parsing permutation phrases
abstract
A permutation phrase is a sequence of elements (possibly of different types) in which each element occurs exactly once and the order is irrelevant. Some of the permutable elements may be optional. We show how to extend a parser combinator library with support for parsing such free-order constructs. A user of the library can easily write parsers for permutation phrases and does not need to care about checking and reordering the recognized elements. Applications include the generation of parsers for attributes of XML tags and Haskell's record syntax.
Arthur I. Baars, Andres Löh, S. Doaitse Swierstra
J. Funct. Program.3
2003 Generating Spreadsheet-Like Tools from Strong Attribute Grammars
João Saraiva, S. Doaitse Swierstra
GPCE2
2003 Scripting the type inference process
abstract
To improve the quality of type error messages in functional programming languages, we propose four techniques which influence the behaviour of constraint-based type inference processes. These techniques take the form of externally supplied type inference directives, precluding the need to make any changes to the compiler. A second advantage is that the directives are automatically checked for soundness with respect to the underlying type system. We show how the techniques can be used to improve the type error messages reported for a combinator library. More specifically, how they can help to generate error messages which are conceptually closer to the domain for which the library was developed. The techniques have all been incorporated in the Helium compiler, which implements a large subset of Haskell.
Bastiaan Heeren, Jurriaan Hage, S. Doaitse Swierstra
ICFP3
2003 Polish parsers, step by step
abstract
We present the derivation of a space efficient parser combinator library: the constructed parsers do not keep unnecessary references to the input, produce online results and efficiently handle ambiguous grammars. The underlying techniques can be applied in many contexts where traditionally backtracking is used.We present two data types, one for keeping track of the progress of the search process, and one for representing the final result in a linear way. Once these data types are combined into a single type, we can perform a breadth-first search, while returning parts of the result as early as possible.
John Hughes 0001, S. Doaitse Swierstra
ICFP2
2003 Factorizing fault tolerance
I. S. W. B. Prasetya, S. Doaitse Swierstra
Theor. Comput. Sci.2
2002 Typing dynamic typing
abstract
Even when programming in a statically typed language we every now and then encounter statically untypable values; such values result from interpreting values or from communicating with the outside world. To cope with this problem most languages include some form of dynamic types. It may be that the core language has been explicitly extended with such a type, or that one is allowed to live dangerously by using functions like unsafeCoerce. We show how, by a careful use of existentially and universally quantified types, one may achievem the same effect, without extending the language with new or unsafe features. The techniques explained are universally applicable, provided the core language is expressive enough; this is the case for the common implementations of Haskell. The techniques are used in the description of a type checking compiler that, starting from an expression term, constructs a typed function representing the semantics of that expression. In this function the overhead associated with the type checking is only once being paid for; in this sense we have thus achieved static type checking.
Arthur I. Baars, S. Doaitse Swierstra
ICFP2
2000 Functional Incremental Attribute Evaluation
João Saraiva, S. Doaitse Swierstra, Matthijs F. Kuiper
CC2
1999 Data Structure Free Compilation
João Saraiva, S. Doaitse Swierstra
CC2
1999 Fast, Error Correcting Parser Combinatiors: A Short Tutorial
S. Doaitse Swierstra, Pablo R. Azero Alcocer
SOFSEM1
1997 Make your Enemies Transparent
Tanja E. J. Vos, S. Doaitse Swierstra
WG2
1994 Bottom-up Grammar Analysis - A Functional Formulation
Johan Jeuring, S. Doaitse Swierstra
ESOP2
1993 Towards the Formal Design of Self-Stabilizing Distributed Algorithms
P. J. A. Lentfert, S. Doaitse Swierstra
STACS2
1993 Distributed Maximum Maintenance on Hierarchically Divided Graphs
abstract
Abstract The design and verification of distributed and concurrent algorithms is highly complex, and thus error-prone. It is our experience that the intertwined use of an informal description as well as a formal method in designing and studying an algorithm, is a fruitful one. The advantage of the informal description is the ease with which algorithms can be produced, studied and discussed. In contrast with formal methods however, errors are easily made in informal arguments about programs that seem to be correct, but in fact are not. In this paper we use an informal argument, carefully augmented with the use of the UNITY formalism, in the design of a distributed algorithm for maintaining the maximum value of a bag of frequently changing integers on a hierarchically divided network. The resulting algorithm is obtained by first designing an abstract algorithm on a virtual datastructure. Next, the abstract algorithm is transformed into the distributed algorithm.
P. J. A. Lentfert, S. Doaitse Swierstra
Formal Aspects Comput.2
1989 Higher-Order Attribute Grammars
abstract
A new kind of attribute grammars, called higher order attribute grammars, is defined. In higher order attribute grammars the structure tree can be expanded as a result of attribute computation. A structure tree may be stored in an attribute. The term higher order is used because of the analogy with higher order functions, where a function can be the result or parameter of another function. A relatively simple method, using OAGs, is described to derive an evaluation order on the defining attribute occurrences which comprises all possible direct and indirect attribute dependencies. As in OAGs, visit-sequences are computed from which an efficient algorithm for attribute evaluation can be derived.
Harald Vogt, S. Doaitse Swierstra, Matthijs F. Kuiper
PLDI2
1982 A Memory-Management Unit for the Optimal Exploitation of a Small Address Space
Coenraad Bron, E. J. Dijkstra, S. Doaitse Swierstra
Inf. Process. Lett.3