# Today's Qi meeting notes

**URL:** <https://racket.discourse.group/t/todays-qi-meeting-notes/2323>\
**Category:** General\
**Tags:** event, qi\
**Created:** [September 17, 2023, 5:25pm UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323 "2023-09-17T17:25:43Z")\
**Posts on this page:** 15\
**Page:** 5

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [July 25, 2025, 6:30pm UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/81 "2025-07-25T18:30:37Z")

</div>

[_ **The Three Musketeers** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-July-23-2025)

**Highlights** :

- a first attempt at formalizing Qi using Redex (and difficulties encountered)
- more discussion of the proposed `parallel` binding spec that supports DAG-structured binding in forking forms like `-<` (aka "tee") and `==` (aka "relay")
- issues encountered in upgrading from Syntax Spec v2 to v3

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [August 8, 2025, 9:58pm UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/82 "2025-08-08T21:58:12Z")

</div>

[_ **How Deforestation Made Us Smile** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Aug-6-2025) ⚾ 🥧

**Highlights** :

- Specifying both naive and deforested semantics as part of defining each deforestable form (`map`, `filter`, etc.)
- Deforesting `drop` aka `list-tail`
- A glimpse of extending deforestation to other sequences besides lists
- Can we derive naive and deforested runtimes from a common abstract specification of a stream operation?
- Writing out the semantics of a language using pen and paper as a first step to formalization
- Cameo appearance by an experimental language integrating Racket and Qi

Oh, and if you've been following along with our explorations of DAG binding structures, Dominik's sequel blog post about a [futures-backed `let` binding form](https://trustica.cz/en/blog/2025/07/31/future-letpp-bindings/) foreshadows a similar use of them planned for Qi!

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [August 27, 2025, 4:30am UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/83 "2025-08-27T04:30:31Z")

</div>

Looks like I forgot to share the previous week's notes, so it's a twofer this week:

Aug 13: [_ **Streamlining Producers** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Aug-13-2025)

**Highlights** :

- In what way is Qi essentially different from Racket? (and implications for `qi/list` vs `racket/list`)
- On the road to separately injecting naive and optimized (deforested) runtimes for sequence operations, we're now tackling _producers_ (e.g., `range`)
- A first draft of a "pen and paper" semantic model for Qi (towards formalization in Redex)
- Comprehensive vs _convenient_ unit testing
- Web development in Racket is much better than in Python!
- Can we haz a nice ✨ init system ✨ for Emacs? 🐱
- A big, new release of Symex for Emacs is coming soon. 🐿

Aug 20: [_ **Doing More With Less** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Aug-20-2025)

**Highlights** :

- Debugging a tricky expansion issue within the onion-layered multi-language setting of a hosted DSL 😵‍💫
- "Stream algebra" --- should we make streams an integral part of the Qi core language? (towards Qi Enterprise Edition™ ✅)
- How to use Racket contracts on syntax extracted from Qi macros?

Enjoy!

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [September 5, 2025, 2:32am UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/84 "2025-09-05T02:32:52Z")

</div>

Last week's notes:

[_ **Bringing a Knife to a Power Tool Fight** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Aug-27-2025)

So much good stuff in there!

**Highlights** :

- Sam released [Uke](https://docs.racket-lang.org/uke/index.html), a library providing an immutable dataframe type, and [Machete](https://docs.racket-lang.org/uke/index.html#%28part._.Machete%29), for data sciency wrangling of said immutable dataframe type --- I, for one, am very stoked about this.
- Exploring interesting and unusual applications of [Resyntax](https://docs.racket-lang.org/resyntax/index.html)'s automated refactoring.
- We're making good progress streamlining the API for defining stream producers such as `range`
- A preview of reduction and congruence relations towards formalizing Qi semantics
- "Once you can partition the data, you can do magic." - on getting the most out of Racket's new parallel threads.
- Some very fancy Emacs developer tools in the works. 🤩

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [September 11, 2025, 11:33pm UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/85 "2025-09-11T23:33:33Z")

</div>

Last week's notes:

[_ **Two Bugs for the Price of One** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Sept-3-2025)

**Highlights** :

- a bug (well, two bugs) when using bindings with `qi/list`
- designing deforestation around lists vs improper lists 😱
- you're never too old to climb a tree
- use any editor you like! (as long as it's Emacs)

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [October 18, 2025, 4:22am UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/86 "2025-10-18T04:22:46Z")

</div>

Catching up on these. Last week's notes:

[_ **Chai for Zero or More** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Oct-10-2025)

- Sam presented [Chai](https://github.com/samdphillips/chai-demo), an arity solver and optimizing compiler for Qi
- running afoul of Greenspun's Tenth Rule
- compiling flows to _graph nodes_ called `connect`s
- should we use syntax properties or IR modifications to encode arity?
- design consideration: _analysis_ vs _transformation_?
- how to handle sequential information loss across compiler passes?
- a renaissance in Emacs package management??

Previous weeks:

[_ **Dope Docstrings** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Sept-26-2025), where we considered a design for what could be the best docstrings in any language (powered by Scribble, of course!)

[_ **Minimizing the Second Derivative** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Sept-18-2025), when we took charge of our ballooning to-do list.

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [October 25, 2025, 4:32am UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/87 "2025-10-25T04:32:42Z")

</div>

Last week's notes:

[_ **PLT Pictionary** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Oct-17-2025)

Highlights:

- We played "PLT Pictionary"!
- Python, really?
- Using an LLM, really??
- At least 5 different ways to implement pictionary properly 🤦
- ... including [this one on Discourse](https://racket.discourse.group/t/cs-pictionary/3975/2) after the meeting
- An initial Redex implementation of Qi's semantics

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [November 14, 2025, 7:01pm UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/88 "2025-11-14T19:01:38Z")

</div>

Here are the most recent notes from last week, lots of interesting stuff!

[_ **Vacuum Fluctuations** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Nov-7-2025)

**Highlights** :

- Two approaches to formalizing bindings in Qi (using Redex)
- "Generalized flow values" as the (one) ultiimate meaning of a flow
- How to do nothing and get everything

There are many interesting questions to be answered even aside from bindings, including: (1) how to formalize effects in Qi? Flows can be seen, ultimately, to produce _values_ and perform _effects_. But the relationship of effects to values is subtle and not obvious, and does not directly follow from the semantics of values although it is dependent upon them. (2) What about [modeling first class continuations in Qi](https://github.com/drym-org/qi/wiki/Qi-Meeting-Jan-17-2025#explore-continuations)? How would that affect the semantics?

More from the last few weeks to catch up on:

- [_ **Halloween Special** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Oct-31-2025)
- [_ **Inlining Recursive Definitions and Other Tricky Cases** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Oct-24-2025)

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [November 29, 2025, 11:03pm UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/89 "2025-11-29T23:03:46Z")

</div>

Combined notes from Nov 14 and Nov 21:

[_ **The Many Worlds Interpretation** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Nov-21-2025)

We're continuing to work on formal semantics of Qi, and this discussion brought up a lot of deep issues, especially about _the meaning of ambiguity_ in Qi.

**Highlights** :

- The problems of expressing DAG (as opposed to tree) binding structure remain unresolved
- There are two kinds of ambiguity --- of value and of binding
- There are three interpretations of ambiguity --- the "many worlds" interpretation, the "Copenhagen" interpretation, and the "classical" interpretation! 😵‍💫
- A proposed (and rejected) scoping structure not expressible using set-of-scopes
- Avoiding accidental dynamic scope in semantics when we mean to describe lexical scope
- Cartesian Closed Categories could be a good semantic model for Qi?
- Comonads, real life flow oriented programming, atmospheric rivers, and Rhombus is the new Python!

cc @NoahStoryM 🙂

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [November 30, 2025, 8:46am UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/90 "2025-11-30T08:46:43Z")

</div>

> [@countvajhula](#):
>
> There are three interpretations of ambiguity --- the "many worlds" interpretation, the "Copenhagen" interpretation, and the "classical" interpretation! 😵‍💫

😂

And if one try to make a Quantum computer with those "ambiguities" you will have to wait it for a very,very,very long time....

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [November 30, 2025, 6:30pm UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/91 "2025-11-30T18:30:23Z")

</div>

i had put an example of Qi operator in infix in my doc near this [anchor](https://docs.racket-lang.org/Scheme-PLUS-for-Racket/index.html#(form._((lib._.S.R.F.I-110%252Fmain..rkt)._~c2~b7))).

update: html anchor does not seem to work, this link should make it:

> **[Scheme+ for Racket](https://docs.racket-lang.org/Scheme-PLUS-for-Racket/index.html#%28form._%28%28lib._.S.R.F.I-110%2Fmain..rkt%29._~c2~b7%29%29)**

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [December 1, 2025, 8:49am UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/92 "2025-12-01T08:49:24Z")

</div>

Running Qi on an actual quantum backend is really not such a bad idea 😉

And that's a good point, Scheme+ provides yet another infix alternative (in addition to Rhombus) for potential python refugees!

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [January 16, 2026, 6:08am UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/93 "2026-01-16T06:08:38Z")

</div>

I haven't had a chance to write these notes lately, but I finally got around to covering some recent meetings:

[_ **Designing a Multi-language Macro System** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Jan-9-2026)

**Highlights** :

- Can we have a single `macro` form that extends both host language (e.g., Racket) and DSLs (e.g., Qi)?
- A macro system written in Syntax Spec, compiling to Syntax Parse (assuming it's possible)
- FLow-Oriented Object Oriented Programming (FLOOP) as the True Way™ to model types
- A glimpse of some space-age features in Rhombus in the context of designing a Racket-like language
- Could we make a MUD (Multi-User Dungeon) for Racket community meetings (like the Qi meeting)?
- `#lang bibtex` FTW

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [January 24, 2026, 5:17pm UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/94 "2026-01-24T17:17:41Z")

</div>

Yesterday was a release planning meeting, and Qi 6 is now in the cards!

[_ **The Stars Align** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Jan-23-2026)

**If you'd like to contribute a feature or bug fix or if you have any feature requests** that you'd like included in the upcoming release, now is a good time to let us know! And of course, if you'd like to participate in Qi development in general, please get in touch, anytime.

More about Qi:

- [Project repo](https://github.com/drym-org/qi)
- [Docs](https://docs.racket-lang.org/qi/index.html)
- [Qi wiki (for developers)](https://github.com/drym-org/qi/wiki)

---

<div class="post-metadata">

**Author:** ![countvajhula](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/countvajhula/32/65_2.png) [@countvajhula](https://racket.discourse.group/u/countvajhula)\
**Post date:** [March 11, 2026, 5:57am UTC](https://racket.discourse.group/t/todays-qi-meeting-notes/2323/95 "2026-03-11T05:57:38Z")

</div>

Last week's notes:

[_ **Throwing More Macros at the Problem** _](https://github.com/drym-org/qi/wiki/Qi-Meeting-Mar-6-2026)

Highlights:

- We're back to making progress on defining stream consumers for deforested list operations
- Some starting points on developing a category theoretic model of Qi
- Dotted attribute syntax in Racket?
- Ferdy's last trick

[Previous page](https://racket.discourse.group/t/todays-qi-meeting-notes/2323.md?page=4)
