RSSAmplifier

Blog

Julian Hyde on Streaming Data, Open Source OLAP. And stuff.

Julian Hyde's blog

blog.hydromatic.netRSS feed ↗10 posts

Latest posts

Morel on Go, and why platforms shouldn’t matter

This week, we got Morel running on Go (following Java and Rust). Because a new platform is useless unless the language is the same everywhere, we designed a porting process driven by a shared corpus of tests. One, two, three… Go? You may be asking why Morel needs a third platform. The answer is that platforms don’t matter. More precisely, platforms shouldn’t matter to you, the user. They matter to…

Expressing package queries in Morel

Morel is more than a query language. Because it is a functional language with relational algebra built in, it can express problems that a query language can’t. It already supports constraint programming and logic programming, and package queries are another example.

Datalog in Morel

This week we added Datalog support to Morel — not by building a Datalog engine, but by adding a language feature called predicate inversion.

History of lambda syntax

Lambda syntax varies widely across languages; more widely, I think, than other language features. I wish it weren’t so. It’s difficult to see the elegance in a new language if the syntax is unfamiliar.

Morel Rust release 0.2.0

I am pleased to announce release 0.2.0 of Morel Rust.

Sorting on expressions

Morel’s design philosophy of “everything is an expression” has transformed how we think about queries, making them more composable and flexible than traditional SQL. One stubborn holdout was the order step, which required a special syntax with comma-separated order-items rather than a single expression. In this post, we describe how we evolved the syntax of the order step in Morel release 0.7, and…

Morel release 0.7.0

I am pleased to announce Morel release 0.7.0, just one month after release 0.6.0.

Ordered and unordered data

Despite what the relational model says, some data is ordered.

INTERSECT ALL, EXCEPT ALL, and the arithmetic of fractions

SQL’s INTERSECT ALL and EXCEPT ALL operators rarely get attention, but they elegantly solve a classic math problem. The problem is computing the greatest common divisor (GCD) and least common multiple (LCM) of two integers, using the prime factors of those integers. In this post we show how to do this using intersect and except, Morel’s equivalent of INTERSECT ALL and EXCEPT ALL.

Should Morel be rewritten in Rust?

There are many excellent and innovative projects happening in the Rust data ecosystem. I am frequently asked whether Morel should be one of them. Thinking about this question gave me some insights into Morel’s strengths, and where our priorities should be.