45 citations · 146 across the 18 of their papers we have counts for
14 papers · 1 filter
Highest-performance Stream Processing
Oleg Kiselyov, Tomoaki Kobayashi, Aggelos Biboudis +1
We present the stream processing library that achieves the highest performance of existing OCaml streaming libraries, attaining the speed and memory efficiency of hand-written stat…
Do Mutable Variables Have Reference Types?
Oleg Kiselyov
Implicit heterogeneous metaprogramming (a.k.a. offshoring) is an attractive approach for generating C with some correctness guarantees: generate OCaml code, where the correctness g…
let (rec) insertion without Effects, Lights or Magic
Oleg Kiselyov, Jeremy Yallop
Let insertion in program generation is producing code with definitions (let-statements). Although definitions precede uses in generated code, during code generation `uses' come fir…
Effects Without Monads: Non-determinism -- Back to the Meta Language
Oleg Kiselyov
We reflect on programming with complicated effects, recalling an undeservingly forgotten alternative to monadic programming and checking to see how well it can actually work in mod…
Eff Directly in OCaml
Oleg Kiselyov, KC Sivaramakrishnan
The language Eff is an OCaml-like language serving as a prototype implementation of the theory of algebraic effects, intended for experimentation with algebraic effects on a large…
Generating Code with Polymorphic let: A Ballad of Value Restriction, Copying and Sharing
Oleg Kiselyov
Getting polymorphism and effects such as mutation to live together in the same language is a tale worth telling, under the recurring refrain of copying vs. sharing. We add new stan…
Stream Fusion, to Completeness
Oleg Kiselyov, Aggelos Biboudis, Nick Palladinos +1
Stream 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 H…
Answer-Type Modification without Tears: Prompt-Passing Style Translation for Typed Delimited-Control Operators
Ikuo Kobori, Yukiyoshi Kameyama, Oleg Kiselyov
The salient feature of delimited-control operators is their ability to modify answer types during computation. The feature, answer-type modification (ATM for short), allows one to…
Proceedings ML Family/OCaml Users and Developers workshops
Oleg Kiselyov, Jacques Garrigue
This volume collects the extended versions of selected papers originally presented at the two ACM SIGPLAN workshops: ML Family Workshop 2014 and OCaml 2014. Both were affiliated wi…
Monolingual Probabilistic Programming Using Generalized Coroutines
Oleg Kiselyov, Chung-chieh Shan
Probabilistic programming languages and modeling toolkits are two modular ways to build and reuse stochastic models and inference procedures. Combining strengths of both, we expres…
Implementing Explicit and Finding Implicit Sharing in Embedded DSLs
Oleg Kiselyov
Aliasing, or sharing, is prominent in many domains, denoting that two differently-named objects are in fact identical: a change in one object (memory cell, circuit terminal, disk b…
Haskell's overlooked object system
Oleg Kiselyov, Ralf Laemmel
Haskell provides type-class-bounded and parametric polymorphism as opposed to subtype polymorphism of object-oriented languages such as Java and OCaml. It is a contentious question…
Subclassing errors, OOP, and practically checkable rules to prevent them
Oleg Kiselyov
This paper considers an example of Object-Oriented Programming (OOP) leading to subtle errors that break separation of interface and implementations. A comprehensive principle that…
Why C++ is not very fit for GUI programming
Oleg Kiselyov
With no intent of starting a holy war, this paper lists several annoying C++ birthmarks that the author has come across developing GUI class libraries. C++'s view of classes, insta…