Arrows to Arrows, Categories to Queries

A programming language compiles to SQL using category theory.

16 cards · 1m 30s · tap to begin

From · · 1m 30s

Arrows to Arrows, Categories to Queries

A programming language compiles to SQL using category theory.

In brief

A programming language compiles to SQL using category theory. Author created catlang, a programming language that compiles to SQL via category theory. Originally reported by Reasonablypolymorphic.

Catlang Compiles to SQL

Author created catlang, a programming language that compiles to one giant SQL SELECT statement.

“I’ve written a little programming language that compiles to sql”

Count Function Example

Count function returns 100 using arrow notation with loops and conditionals.

“count : Int -> Int”

Category Theory Basics

Category theory uses arrows and types without function application.

“We do not have the notion of function application”

Product and Coproduct

Product types use projections, coproducts use injections and branching.

“prj₁ :: (a, b) ~> a”

Stack-Based Compilation

Compiler eliminates variable names using stack-based representation.

“No variable names anywhere to be found”

Cochoice for Loops

Cochoice operation implements loops by recursively processing either values.

“cochoice :: ( Either a c ~> Either b c) -> (a ~> b)”

SQL Implementation

SQL implements category theory operations with nested queries and unions.

“Composition corresponds to a nested query”

Recursive CTE for Loops

Loops use recursive CTEs with clock timestamps to track iterations.

“clock_timestamp() as step”

Brainfuck in Postgres

Author plans to compile brainfuck to sql for postgres execution.

“Write a little brainfuck interpreter in catlang”

Haskell Inspiration

Catlang is inspired by haskell's arrow syntax and category theory.

“Source language of catlang is heavily inspired by haskell's arrow syntax”

Compiler Backend

Compiler backend uses stack representation for efficient sql generation.

“No compiler backend needs to deal with names”

Future Plans

Author plans to add string-crunching primitives for brainfuck interpreter.

“Compiler still needs a few string-crunching primitives”

GitHub Repository

Code available on github with template-thaskell backend for haskell.

“All of the code is available on github”

Category Theory Background

Category theory underpins programming language design and compilation.

“Lambda calculus corresponds to cartesian-closed categories”

Compiler Limitations

Compiler has limitations in handling complex data structures and loops.

“Cochoice is the only really tricky thing”

Next Steps

Author will focus on improving compiler and adding new features.

“I’ve run out of vacation time to work on this project”

Here's the gist

Author created catlang, a programming language that compiles to SQL via category theory.

Read the original on Reasonablypolymorphic

How we make summaries

React

Sign in to react and comment.

Comments (0)

Life is short. Keep it sweet. Respect others' opinions and be kind!

    Recommended next

    More decks on haskell and related topics.