VLDB 2026 Research / reviewers in the wild / expert
Oleg Kiselyov
dblp:78/3192
· DBLP profile ↗
50ranked-venue papers
29as first author
5since 2021 · last 2026
0000-0002-2570-2186ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 45 · 24 first-author · 5 since 2021Databases, data management, data science and information retrieval · 2 · 2 first-authorGraphics, computer vision, multimedia, augmented reality and games · 2 · 2 first-authorArtificial intelligence and machine learning · 1 · 1 first-authorTheory of computation · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Handling Scope Checks: A Comparative Framework for Dynamic Scope Extrusion ChecksabstractMetaprogramming and effect handlers interact in unexpected, and sometimes undesirable, ways. One example is scope extrusion: the generation of ill-scoped code. Scope extrusion can either be preemptively prevented, via static type systems, or retroactively detected, via dynamic checks. Static type systems exist in theory, but struggle with a range of implementation and usability problems in practice. In contrast, dynamic checks exist in practice (e.g. in MetaOCaml), but are understudied in theory. Designers of metaprogramming languages are thus given little guidance regarding the design and implementation of checks. We present the first formal study of dynamic scope extrusion checks, introducing a calculus ( λ ⟨ ⟨ o p ⟩ ⟩ ) for describing and evaluating checks. Further, we introduce a novel dynamic check - the "Cause-for-Concern" check - which we prove correct, characterise without reference to its implementation, and argue combines the advantages of existing dynamic checks. Finally, we extend our framework with refined environment classifiers, which statically prevent scope extrusion, and compare their expressivity with the dynamic checks. Ningning Xie, Oleg Kiselyov, Jeremy Yallop |
Proc. ACM Program. Lang. | 3 |
| 2026 | MetaOCaml: ten years later - System descriptionabstractMetaOCaml is a superset of OCaml for convenient code generation with static guarantees: the generated code is well-formed, well-typed and well-scoped, by construction. Not only the produced code always compiles; code fragments with a variable escaping its scope are detected already during code generation. MetaOCaml has been employed for compiling domain-specific languages, generic programming, automating tedious specializations in high-performance computing, generating efficient computational kernels and embedded programming. It is used in education, and served as inspiration for several other metaprogramming systems. Most well-known in MetaOCaml are the types for values representing generated code and the template-based mechanism to produce such values, a.k.a., brackets and escapes. MetaOCaml also features cross-stage persistence, generating ordinary and mutually-recursive definitions, first-class pattern-matching and heterogeneous metaprogramming. The extant implementation of MetaOCaml, first presented at FLOPS 2014, has been continuously evolving. We describe the current design and implementation, stressing particularly notable additions. Among them is a new and efficient translation from typed code templates to code combinators. Scope extrusion detection unexpectedly brought let- insertion, and a conclusive solution to the 20-year–old vexing problem of cross-stage persistence. Oleg Kiselyov |
Sci. Comput. Program. | 1 |
| 2024 | Complete Stream Fusion for Software-Defined RadioabstractStrymonas is a code-generation--based library (embedded DSL) for fast, bulk, single-thread in-memory stream processing -- with the declarative description of stream pipelines and yet achieving the speed and memory efficiency of hand-written state machines. It guarantees complete stream fusion in all cases. Tomoaki Kobayashi, Oleg Kiselyov |
PEPM | 2 |
| 2024 | Generating C: Heterogeneous metaprogramming system description
Oleg Kiselyov |
Sci. Comput. Program. | 1 |
| 2021 | Not by equations alone: Reasoning with extensible effectsabstractAbstract The challenge of reasoning about programs with (multiple) effects such as mutation, jumps, or IO dates back to the inception of program semantics in the works of Strachey and Landin. Using monads to represent individual effects and the associated equational laws to reason about them proved exceptionally effective. Even then it is not always clear what laws are to be associated with a monad—for a good reason, as we show for non-determinism. Combining expressions using different effects brings challenges not just for monads, which do not compose, but also for equational reasoning: the interaction of effects may invalidate their individual laws, as well as induce emerging properties that are not apparent in the semantics of individual effects. Overall, the problems are judging the adequacy of a law; determining if or when a law continues to hold upon addition of new effects; and obtaining and easily verifying emergent laws. We present a solution relying on the framework of (algebraic, extensible) effects, which already proved itself for writing programs with multiple effects. Equipped with a fairly conventional denotational semantics, this framework turns useful, as we demonstrate, also for reasoning about and optimizing programs with multiple interacting effects. Unlike the conventional approach, equational laws are not imposed on programs/effect handlers, but induced from them: our starting point hence is a program (model), whose denotational semantics, besides being used directly, suggests and justifies equational laws and clarifies side conditions. The main technical result is the introduction of the notion of equivalence modulo handlers (“modulo observation”) or a particular combination of handlers—and proving it to be a congruence . It is hence usable for reasoning in any context, not just evaluation contexts—provided particular conditions are met. Concretely, we describe several realistic handlers for non-determinism and elucidate their laws (some of which hold in the presence of any other effect). We demonstrate appropriate equational laws of non-determinism in the presence of global state, which have been a challenge to state and prove before. Oleg Kiselyov, Shin-Cheng Mu, Amr Sabry |
J. Funct. Program. | 1 |
| 2020 | Many more predecessors: A representation workoutabstractAbstract From the outset, lambda calculus represented natural numbers through iterated application. The successor hence adds one more application, and the predecessor removes. In effect, the predecessor un-applies a term—which seemed impossible, even to Church. It took Kleene a rather oblique glance to sight a related representation of numbers, with an easier predecessor. Let us see what we can do if we look at this old problem with today’s eyes. We discern the systematic ways to derive more predecessors—smaller, faster, and sharper—while keeping all teeth. Oleg Kiselyov |
J. Funct. Program. | 1 |
| 2018 | Preface: Functional and Logic Programming (FLOPS 2016)
Oleg Kiselyov, Andy King |
Sci. Comput. Program. | 1 |
| 2017 | Sound and Efficient Language-Integrated Query - Maintaining the ORDER
Oleg Kiselyov, Tatsuya Katsushima |
APLAS | 1 |
| 2017 | Language-integrated query with ordering, grouping and outer joins (poster paper)abstractLanguage-integrated query systems like T-LINQ or QUEΛ make relational operations on (generally external) data feel like the ordinary iteration over native arrays. As ordinary programs, queries are type-checked, can be abstracted over and composed. To access relational database systems, queries are eventually translated into well-formed, well-typed and efficient SQL. However, most existing language-integrated query systems implement only a small subset of relational operations supported by modern databases. Tatsuya Katsushima, Oleg Kiselyov |
PEPM | 2 |
| 2017 | Stream fusion, to completenessabstractStream processing is mainstream (again): Widely-used stream libraries are now available for virtually all modern OO and functional languages, from Java to C# to Scala to OCaml to Haskell. Yet expressivity and performance are still lacking. For instance, the popular, well-optimized Java 8 streams do not support the zip operator and are still an order of magnitude slower than hand-written loops. Oleg Kiselyov, Aggelos Biboudis, Nick Palladinos, Yannis Smaragdakis |
POPL | 1 |
| 2016 | Probabilistic Programming Language and its Incremental Evaluation
Oleg Kiselyov |
APLAS | 1 |
| 2016 | Refined Environment Classifiers - Type- and Scope-Safe Code Generation with Mutable Cells
Oleg Kiselyov, Yukiyoshi Kameyama, Yuto Sudo |
APLAS | 1 |
| 2016 | Staging beyond terms: prospects and challengesabstractStaging is a program generation paradigm with a clean, well-investigated semantics which statically ensures that the generated code is always well-typed and well-scoped. Staging is often used for specializing programs to the known properties or parts of data to improve efficiency, but so far it has been limited to generating terms. This short paper describes our ongoing work on extending staging, with its strong safety guarantees, to generation of non-terms, focusing on ML-style modules. The purpose is to map out the promises and challenges, then to pose a question to solicit the community's expertise in evaluating how essential our extensions are for the purpose of applying staging beyond the realm of terms. We demonstrate our extensions' use in specializing functor applications to eliminate its (currently large) overhead in OCaml. We explain the challenges that those extensions bring in and identify a promising line of attack. Unexpectedly, however, it turns out that we can avoid module generation altogether by representing modules, possibly containing abstract types, as polymorphic records. With the help of first-class modules, module specialization reduces to ordinary term specialization, which can be done with conventional staging. The extent to which this hack generalizes is unclear. Thus we have a question to the community: is there a compelling use case for module generation? With these insights and questions, we offer a starting point for a long-term program in the next stage of staging research. Jun Inoue 0001, Oleg Kiselyov, Yukiyoshi Kameyama |
PEPM | 2 |
| 2016 | Finally, safely-extensible and efficient language-integrated queryabstractLanguage-integrated query is an embedding of database queries into a host language to code queries at a higher level than the all-to-common concatenation of strings of SQL fragments. The eventually produced SQL is ensured to be well-formed and well-typed, and hence free from the embarrassing (security) problems. Language-integrated query takes advantage of the host language's functional and modular abstractions to compose and reuse queries and build query libraries. Furthermore, language-integrated query systems like T-LINQ generate efficient SQL, by applying a number of program transformations to the embedded query. Alas, the set of transformation rules is not designed to be extensible. We demonstrate a new technique of integrating database queries into a typed functional programming language, so to write well-typed, composable queries and execute them efficiently on any SQL back-end as well as on an in-memory noSQL store. A distinct feature of our framework is that both the query language as well as the transformation rules needed to generate efficient SQL are safely user-extensible, to account for many variations in the SQL back-ends, as well for domain-specific knowledge. The transformation rules are guaranteed to be type-preserving and hygienic by their very construction. They can be built from separately developed and reusable parts and arbitrarily composed into optimization pipelines. With this technique we have embedded into OCaml a relational query language that supports a very large subset of SQL including grouping and aggregation. Its types cover the complete set of intricate SQL behaviors. Kenichi Suzuki, Oleg Kiselyov, Yukiyoshi Kameyama |
PEPM | 2 |
| 2015 | Freer monads, more extensible effectsabstractWe present a rational reconstruction of extensible effects, the recently proposed alternative to monad transformers, as the confluence of efforts to make effectful computations compose. Free monads and then extensible effects emerge from the straightforward term representation of an effectful computation, as more and more boilerplate is abstracted away. The generalization process further leads to freer monads, constructed without the Functor constraint. The continuation exposed in freer monads can then be represented as an efficient type-aligned data structure. The end result is the algorithmically efficient extensible effects library, which is not only more comprehensible but also faster than earlier implementations. As an illustration of the new library, we show three surprisingly simple applications: non-determinism with committed choice (LogicT), catching IO exceptions in the presence of other effects, and the semi-automatic management of file handles and other resources through monadic regions. We extensively use and promote the new sort of `laziness', which underlies the left Kan extension: instead of performing an operation, keep its operands and pretend it is done. Oleg Kiselyov, Hiromi Ishii |
Haskell | 1 |
| 2015 | Combinators for impure yet hygienic code generation
Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
Sci. Comput. Program. | 2 |
| 2014 | Reflection without remorse: revealing a hidden sequence to speed up monadic reflectionabstractA series of list appends or monadic binds for many monads performs algorithmically worse when left-associated. Continuation-passing style (CPS) is well-known to cure this severe dependence of performance on the association pattern. The advantage of CPS dwindles or disappears if we have to examine or modify the intermediate result of a series of appends or binds, before continuing the series. Such examination is frequently needed, for example, to control search in non-determinism monads. Atze van der Ploeg, Oleg Kiselyov |
Haskell | 2 |
| 2014 | Combinators for impure yet hygienic code generationabstractCode generation is the leading approach to making high-performance software reusable. Effects are indispensable in code generators, whether to report failures or to insert let-statements and if-guards. Extensive painful experience shows that unrestricted effects interact with generated binders in undesirable ways to produce unexpectedly unbound variables, or worse, unexpectedly bound ones. These subtleties hinder domain experts in using and extending the generator. A pressing problem is thus to express the desired effects while regulating them so that the generated code is correct, or at least correctly scoped, by construction. Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
PEPM | 2 |
| 2013 | Extensible effects: an alternative to monad transformersabstractWe design and implement a library that solves the long-standing problem of combining effects without imposing restrictions on their interactions (such as static ordering). Effects arise from interactions between a client and an effect handler (interpreter); interactions may vary throughout the program and dynamically adapt to execution conditions. Existing code that relies on monad transformers may be used with our library with minor changes, gaining efficiency over long monad stacks. In addition, our library has greater expressiveness, allowing for practical idioms that are inefficient, cumbersome, or outright impossible with monad transformers. Oleg Kiselyov, Amr Sabry, Cameron Swords |
Haskell | 1 |
| 2013 | Shonan challenge for generative programming: short position paperabstractThe appeal of generative programming is "abstraction without guilt": eliminating the vexing trade-off between writing high-level code and highly-performant code. Generative programming also promises to formally capture the domain-specific knowledge and heuristics used by high-performance computing (HPC)experts. How far along are we in fulfilling these promises? To gauge our progress, a recent Shonan Meeting on "bridging the theory of staged programming languages and the practice of high-performance computing" proposed to use a set of benchmarks, dubbed "Shonan Challenge". Baris Aktemur, Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
PEPM | 3 |
| 2012 | Lazy v. Yield: Incremental, Linear Pretty-Printing
Oleg Kiselyov, Simon L. Peyton Jones, Amr Sabry |
APLAS | 1 |
| 2012 | Delimited control in OCaml, abstractly and concretely
Oleg Kiselyov |
Theor. Comput. Sci. | 1 |
| 2011 | Purely functional lazy nondeterministic programmingabstractAbstract Functional logic programming and probabilistic programming have demonstrated the broad benefits of combining laziness (nonstrict evaluation with sharing of the results) with nondeterminism. Yet these benefits are seldom enjoyed in functional programming because the existing features for nonstrictness, sharing, and nondeterminism in functional languages are tricky to combine. We present a practical way to write purely functional lazy nondeterministic programs that are efficient and perspicuous. We achieve this goal by embedding the programs into existing languages (such as Haskell, SML, and OCaml) with high-quality implementations, by making choices lazily and representing data with nondeterministic components, by working with custom monadic data types and search strategies, and by providing equational laws for the programmer to reason about their code. Sebastian Fischer 0001, Oleg Kiselyov, Chung-chieh Shan |
J. Funct. Program. | 2 |
| 2011 | Shifting the stage - Staging with delimited controlabstractAbstract It is often hard to write programs that are efficient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators. Two pillars of this approach are types and effects. Typed multilevel languages such as MetaOCaml ensure safety and early error reporting: a well-typed code generator neither goes wrong nor generates code that goes wrong. Side effects such as state and control ease correctness and expressivity : An effectful generator can resemble the textbook presentation of an algorithm, as is familiar to domain experts, yet insert let for memoization and if for bounds checking, as is necessary for efficiency. Together, types and effects enable structuring code generators as compositions of modules with well-defined interfaces, and hence scaling to large programs. However, blindly adding effects renders multilevel types unsound. We introduce the first multilevel calculus with control effects and a sound type system. We give small-step operational semantics as well as a one-pass continuation-passing-style translation. For soundness, our calculus restricts the code generator's effects to the scope of generated binders. Even with this restriction, we can finally write efficient code generators for dynamic programming and numerical methods in direct style, like in algorithm textbooks, rather than in continuation-passing or monadic style. Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
J. Funct. Program. | 2 |
| 2011 | Multi-stage programming with functors and monads: Eliminating abstraction overhead from generic code
Jacques Carette, Oleg Kiselyov |
Sci. Comput. Program. | 2 |
| 2009 | Purely functional lazy non-deterministic programmingabstractFunctional logic programming and probabilistic programming have demonstrated the broad benefits of combining laziness (non-strict evaluation with sharing of the results) with non-determinism. Yet these benefits are seldom enjoyed in functional programming, because the existing features for non-strictness, sharing, and non-determinism in functional languages are tricky to combine. Sebastian Fischer 0001, Oleg Kiselyov, Chung-chieh Shan |
ICFP | 2 |
| 2009 | Shifting the stage: staging with delimited controlabstractIt is often hard to write programs that are efficient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators. Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
PEPM | 2 |
| 2009 | Monolingual Probabilistic Programming Using Generalized Coroutines
Oleg Kiselyov, Chung-chieh Shan |
UAI | 1 |
| 2009 | Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languagesabstractAbstract We have built the first family of tagless interpretations for a higher-order typed object language in a typed metalanguage (Haskell or ML) that require no dependent types, generalized algebraic data types, or postprocessing to eliminate tags. The statically type-preserving interpretations include an evaluator, a compiler (or staged evaluator), a partial evaluator, and call-by-name and call-by-value continuation-passing style (CPS) transformers. Our principal technique is to encode de Bruijn or higher-order abstract syntax using combinator functions rather than data constructors. In other words, we represent object terms not in an initial algebra but using the coalgebraic structure of the λ-calculus. Our representation also simulates inductive maps from types to types, which are required for typed partial evaluation and CPS transformations. Our encoding of an object term abstracts uniformly over the family of ways to interpret it, yet statically assures that the interpreters never get stuck. This family of interpreters thus demonstrates again that it is useful to abstract over higher-kinded types. Jacques Carette, Oleg Kiselyov, Chung-chieh Shan |
J. Funct. Program. | 2 |
| 2008 | Lightweight monadic regionsabstractWe present Haskell libraries that statically ensure the safe use of resources such as file handles. We statically prevent accessing an already closed handle or forgetting to close it. The libraries can be trivially extended to other resources such as database connections and graphic contexts.Because file handles and similar resources are scarce, we want to not just assure their safe use but further deallocate them soon after they are no longer needed. Relying on Fluet and Morrisett's [4] calculus of nested regions, we contribute a novel, improved, and extended implementation of the calculus in Haskell, with file handles as resources.Our library supports region polymorphism and implicit region subtyping, along with higher-order functions, mutable state, recursion, and run-time exceptions. A program may allocate arbitrarily many resources and dispose of them in any order, not necessarily LIFO. Region annotations are part of an expression's inferred type.Our new Haskell encoding of monadic regions as monad transformers needs no witness terms. It assures timely deallocation even when resources have markedly different lifetimes and the identity of the longest-living resource is determined only dynamically.For contrast, we also implement a Haskell library for manual resource management, where deallocation is explicit and safety is assured by a form of linear types. We implement the linear typing in Haskell with the help of phantom types and a parameterized monad to statically track the type-state of resources. Oleg Kiselyov, Chung-chieh Shan |
Haskell | 1 |
| 2008 | Comparing libraries for generic programming in haskellabstractDatatype-generic programming is defining functions that depend on the structure, or "shape", of datatypes. It has been around for more than 10 years, and a lot of progress has been made, in particular in the lazy functional programming language Haskell. There are morethan 10 proposals for generic programming libraries orlanguage extensions for Haskell. To compare and characterise the many generic programming libraries in atyped functional language, we introduce a set of criteria and develop a generic programming benchmark: a set of characteristic examples testing various facets of datatype-generic programming. We have implemented the benchmark for nine existing Haskell generic programming libraries and present the evaluation of the libraries. The comparison is useful for reaching a common standard for generic programming, but also for a programmer who has to choose a particular approach for datatype-generic programming. Alexey Rodriguez Yakushev, Johan Jeuring, Patrik Jansson, Alex Gerdes, Oleg Kiselyov, Bruno C. d. S. Oliveira |
Haskell | 5 |
| 2008 | Closing the stage: from staged code to typed closuresabstractCode generation lets us write well-abstracted programs without performance penalty. Writing a correct code generator is easier than building a full-scale compiler but still hard. Typed multistage languages such as MetaOCaml help in two ways: they provide simple annotations to express code generation, and they assure that the generated code is well-typed and well-scoped. Unfortunately, the assurance only holds without side effects such as state and control. Without effects, generators often have to be written in a continuation-passing or monadic style that has proved inconvenient. It is thus a pressing open problem to combine effects with staging in a sound type system. Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
PEPM | 2 |
| 2007 | Finally Tagless, Partially Evaluated
Jacques Carette, Oleg Kiselyov, Chung-chieh Shan |
APLAS | 2 |
| 2006 | Delimited dynamic bindingabstractDynamic binding and delimited control are useful together in many settings, including Web applications, database cursors, and mobile code. We examine this pair of language features to show that the semantics of their interaction is ill-defined yet not expressive enough for these uses.We solve this open and subtle problem. We formalise a typed language DB+DC that combines a calculus DB of dynamic binding and a calculus DC of delimited control. We argue from theoretical and practical points of view that its semantics should be based on delimited dynamic binding: capturing a delimited continuation closes over part of the dynamic environment, rather than all or none of it; reinstating the captured continuation supplements the dynamic environment, rather than replacing or inheriting it. We introduce a type- and reduction-preserving translation from DB + DC to DC, which proves that delimited control macro-expresses dynamic binding. We use this translation to implement DB+DC in Scheme, OCaml, and Haskell.We extend DB + DC with mutable dynamic variables and a facility to obtain not only the latest binding of a dynamic variable but also older bindings. This facility provides for stack inspection and (more generally) folding over the execution context as an inductive data structure. Oleg Kiselyov, Chung-chieh Shan, Amr Sabry |
ICFP | 1 |
| 2006 | A monadic approach for avoiding code duplication when staging memoized functionsabstractBuilding program generators that do not duplicate generated code can be challenging. At the same time, code duplication can easily increase both generation time and runtime of generated programs by an exponential factor. We identify an instance of this problem that can arise when memoized functions are staged. Without addressing this problem, it would be impossible to effectively stage dynamic programming algorithms. Intuitively, direct staging undoes the effect of memoization. To solve this problem once and for all, and for any function that uses memoization, we propose a staged monadic combinator library. Experimental results confirm that the library works as expected. Preliminary results also indicate that the library is useful even when memoization is not used. Kedar N. Swadi, Walid Taha, Oleg Kiselyov, Emir Pasalic |
PEPM | 3 |
| 2006 | In search of a program generator to implement generic transformations for high-performance computing
Albert Cohen 0001, Sébastien Donadio, María Jesús Garzarán, Christoph Armin Herrmann, Oleg Kiselyov, David A. Padua |
Sci. Comput. Program. | 5 |
| 2005 | Multi-stage Programming with Functors and Monads: Eliminating Abstraction Overhead from Generic Code
Jacques Carette, Oleg Kiselyov |
GPCE | 2 |
| 2005 | Backtracking, interleaving, and terminating monad transformers: (functional pearl)abstractWe design and implement a library for adding backtracking computations to any Haskell monad. Inspired by logic programming, our library provides, in addition to the operations required by the MonadPlus interface, constructs for fair disjunctions, fair conjunctions, conditionals, pruning, and an expressive top-level interface. Implementing these additional constructs is easy in models of backtracking based on streams, but not known to be possible in continuation-based models. We show that all these additional constructs can be generically and monadically realized using a single primitive msplit. We present two implementations of the library: one using success and failure continuations; and the other using control operators for manipulating delimited continuations. Oleg Kiselyov, Chung-chieh Shan, Daniel P. Friedman, Amr Sabry |
ICFP | 1 |
| 2004 | A methodology for generating verified combinatorial circuitsabstractHigh-level programming languages offer significant expressivity but provide little or no guarantees about resource use. Resource-bounded languages --- such as hardware-description languages --- provide strong guarantees about the runtime behavior of computations but often lack mechanisms that allow programmers to write more structured, modular, and reusable programs. To overcome this basic tension in language design, recent work advocated the use of Resource-aware Programming (RAP) languages, which take into account the natural distinction between the development platform and the deployment platform for resource-constrained software.This paper investigates the use of RAP languages for the generation of combinatorial circuits. The key challenge that we encounter is that the RAP approach does not safely admit a mechanism to express a posteriori (post-generation) optimizations. The paper proposes and studies the use of abstract interpretation to overcome this problem. The approach is illustrated using an in-depth analysis of the Fast Fourier Transform (FFT). The generated computations are comparable to those generated by FFTW. Oleg Kiselyov, Kedar N. Swadi, Walid Taha |
EMSOFT | 1 |
| 2004 | Strongly typed heterogeneous collectionsabstractA heterogeneous collection is a datatype that is capable of storing data of different types, while providing operations for look-up, update, iteration, and others. There are various kinds of heterogeneous collections, differing in representation, invariants, and access operations. We describe HLIST - a Haskell library for strongly typed heterogeneous collections including extensible records. We illustrate HLIST's benefits in the context of type-safe database access in Haskell. The HLIST library relies on common extensions of Haskell 98. Our exploration raises interesting issues regarding Haskell's type system, in particular, avoidance of overlapping instances, and reification of type equality and type unification. Oleg Kiselyov, Ralf Lämmel, Keean Schupke |
Haskell | 1 |
| 2004 | Functional pearl: implicit configurations-or, type classes reflect the values of typesabstractThe configurations problem is to propagate run-time preferences throughout a program, allowing multiple concurrent configuration sets to coexist safely under statically guaranteed separation. This problem is common in all software systems, but particularly acute in Haskell, where currently the most popular solution relies on unsafe operations and compiler pragmas.We solve the configurations problem in Haskell using only stable and widely implemented language features like the type-class system. In our approach, a term expression can refer to run-time configuration parameters as if they were compile-time constants in global scope. Besides supporting such intuitive term notation and statically guaranteeing separation, our solution also helps improve the program's performance by transparently dispatching to specialized code at run-time. We can propagate any type of configuration data-numbers, strings, IO actions, polymorphic functions, closures, and abstract data types. No previous approach to propagating configurations implicitly in any language provides the same static separation guarantees.The enabling technique behind our solution is to propagate values via types, with the help of polymorphic recursion and higher-rank polymorphism. The technique essentially emulates local type-class instance declarations while preserving coherence. Configuration parameters are propagated throughout the code implicitly as part of type inference rather than explicitly by the programmer. Our technique can be regarded as a portable, coherent, and intuitive alternative to implicit parameters. It motivates adding local instances to Haskell, with a restriction that salvages principal types. Oleg Kiselyov, Chung-chieh Shan |
Haskell | 1 |
| 2003 | SXSLT: Manipulation Language for XML
Oleg Kiselyov, Shriram Krishnamurthi |
PADL | 1 |
| 2002 | Macros That Compose: Systematic Macro Programming
Oleg Kiselyov |
GPCE | 1 |
| 2002 | A Better XML Parser through Functional Programming
Oleg Kiselyov |
PADL | 1 |
| 1998 | LAND*: an AND with local bindings, a guarded LET* special formabstractNo abstract available. Oleg Kiselyov |
ICFP | 1 |
| 1998 | Functional Style in C++: Closures, Late Binding, and Lambda Abstractions
Oleg Kiselyov |
ICFP | 1 |
| 1998 | A Delegation Language to Request Weather Products and a Scheme of Its InterpretationabstractNo abstract available. Oleg Kiselyov |
ICFP | 1 |
| 1998 | A Lazy CGI Namespace in SchemeabstractNo abstract available. Oleg Kiselyov |
ICFP | 1 |
| 1996 | Image Compression with Iterated Function Systems, Finite Automate and Zerotrees: Grand UnificationabstractThe paper deals with analysis, generalizations and unifications of the latest group of powerful image compression techniques: fractal image compression with iterated function systems (IFS), Culik's compression with finite automata and Shapiro's embedded coding of wavelet coefficients using zerotrees. All three techniques achieve premium results by exploiting properties of self-similarity of typical images. In more precise terms, they all rely on the fact that parts of image representations at different resolutions may in some sense be similar. Therefore, a higher-resolution representation may be rather accurately predicted from a low-resolution one. This is a unifying, common concept of these seemingly dissimilar compression techniques, which may not be apparent due to particular terminologies each of the methods uses. Besides the common concept, these methods turn out to be even more tightly related, to the point of algorithmical reducibility of one technique to another. The goal is to demonstrate these relations. Oleg Kiselyov, Paul Fisher |
Data Compression Conference | 1 |
| 1994 | Self-Similarity of the Multiresolutional Image/Video Decomposition: Smart Expansion as Compression of Still and Moving PicturesabstractThe paper introduces a new combined fractal/multiresolutional image compression based on the observed property of self-similarity of the pyramidal image transform. The gist of the method is zooming out from a (possibly shrunken) low-resolution image producing a sharp and crisp "natural looking" high-resolution view, without blockiness and jaggedness. It is demonstrated that the technique possesses features of preserving thinness of lines on expansion, translational invariance and providing a perfect high-resolution representation of the gradient fill. The multiresolutional transform algorithms and 'smart' image magnification developed for still images have been generalized to deal with moving pictures as a three-dimensional, spatio-temporal frame sequence, which permits rapid compression, smooth motion interpolation, and has potential for use in video transmission in real time.> Oleg Kiselyov, Paul Fisher |
Data Compression Conference | 1 |