The Web IS a computer, HTML its language (and a pushy Scheme CGI setting it
off) - Oleg Kiselyov -
Lazy evaluation (Wikipedia) -
Specific "scientific" data structures, and their processing (paper, PDF,
2011, 15) - Jerzy Karczmarczuk -
Lazy evaluation and declarative approach in Python (slides, 2012) - Alexey
Functional programming in Python becomes lazy (article, 2003) - David Mertz -
Biggus is a pure-Python library for handling very large (i.e. too large for system memory) n-dimensional arrays. It has two main components:
Representation, lazy indexing, and conversion to persistent files and NumPy arrays; and
At the core of Biggus is the Array which provides a simple, consistent, NumPy-esque interface to n-dimensional data which avoids reading data until explicitly requested by user code. Commonly these Array objects are created by wrapping "concrete" data sources such as HDF5 variables, netCDF4 variables, or even just NumPy arrays.
Once created, Array objects can be concatenated and stacked to form new Array objects, which can themselves be concatenated and stacked as required. In this way it is possible to construct virtual arrays of arbitrary size, spanning multiple data sources.
In addition, all Array objects can be indexed to extract subsets. As with the concatenation and stacking operations, this does not cause any data to be read.
User code may request any Array object be saved to a "concrete" data form (e.g. HDF5, etc. as above). The size of this operation is not limited by system memory. Alternatively, user code may explicitly request any Array object to provide the corresponding NumPy array in memory. It is the responsibility of the user code to determine if this is an appropriate action.
High-Performance Domain-Specific Languages using Delite (2012) -
Bridging the Theory of Staged Programming Languages and
the Practice of High-Performance Computing (2012) -
Conference Summary -
Staging and High Performance Computing (2014) -
Conference Summary -
Multi-stage programming with functors and monads: eliminating abstraction
overhead from generic code - Jacques Carette & Oleg Kiselyev -
Generating optimal code with confidence - Oleg Kiselyov et al. -
MetaOCaml is a multi-stage extension of the OCaml programming language, and provides three basic constructs called Brackets, Escape, and Run for building, combining, and executing future-stage computations, respectively.