The Optics of Language-Integrated Query

by   J. López-González, et al.

Monadic comprehensions reign over the realm of language-integrated query (LINQ), and for good reasons. Indeed, comprehensions are tightly integrated with general purpose programming languages and close enough to common query languages, such as SQL, to guarantee their translation into effective queries. Comprehensions also support features for writing reusable and composable queries, such as the handling of nested data and the use of functional abstractions. In parallel to these developments, optics have emerged in recent years as the technology of choice to write programs that manipulate complex data structures with nested components. Optic abstractions are easily composable and, in principle, permit both data access and updates. This paper attempts to exploit the notion of optic for LINQ as a higher-level language that complements comprehension-based approaches. In order to do this, we lift a restricted subset of optics, namely getters, affine folds and folds, into a full-blown DSL. The type system of the resulting language of optics, that we have named Optica, distills their compositional properties, whereas its denotational semantics is given by standard optics. This formal specification of the concept of optic enables the definition of non-standard optic representations beyond van Laarhoven, profunctor optics, etc. In particular, the paper demonstrates that a restricted subset of XQuery can be understood as an optic representation; it introduces Triplets, a non-standard semantic domain to normalize optic expressions and facilitate the generation of SQL queries; and it describes how to generate comprehension-based queries from optic expressions, thus showing that both approaches can coexist.The paper also describes S-Optica, a Scala implementation of Optica using the tagless-final approach.


page 1

page 2

page 3

page 4


Query Lifting: Language-integrated query for heterogeneous nested collections

Language-integrated query based on comprehension syntax is a powerful te...

PhD thesis: SQL Comprehension and Synthesis

Structured Query Language (SQL) remains the standard language used in Re...

Strongly-Normalizing Higher-Order Relational Queries

Language-integrated query is a powerful programming construct allowing d...

Comprehending nulls

The Nested Relational Calculus (NRC) has been an influential high-level ...

Rumble: data independence when data is in a mess

This paper introduces Rumble, an engine that executes JSONiq queries on ...

TigerGraph: A Native MPP Graph Database

We present TigerGraph, a graph database system built from the ground up ...

ConQuer-92 – The revised report on the conceptual query language LISA-D

In this report the conceptual query language ConQuer-92 is introduced. T...

Please sign up or login with your details

Forgot password? Click here to reset