Today's Qi meeting notes

The Three Musketeers

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

How Deforestation Made Us Smile :baseball: :pie:

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 foreshadows a similar use of them planned for Qi!

1 Like

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

Aug 13: Streamlining Producers

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 :sparkles: init system :sparkles: for Emacs? :cat_face:
  • A big, new release of Symex for Emacs is coming soon. :chipmunk:

Aug 20: Doing More With Less

Highlights:

  • Debugging a tricky expansion issue within the onion-layered multi-language setting of a hosted DSL :face_with_spiral_eyes:
  • "Stream algebra" --- should we make streams an integral part of the Qi core language? (towards Qi Enterprise Editionā„¢ :white_check_mark:)
  • How to use Racket contracts on syntax extracted from Qi macros?

Enjoy!

Last week's notes:

Bringing a Knife to a Power Tool Fight

So much good stuff in there!

Highlights:

  • Sam released Uke, a library providing an immutable dataframe type, and Machete, for data sciency wrangling of said immutable dataframe type --- I, for one, am very stoked about this.
  • Exploring interesting and unusual applications of Resyntax'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. :star_struck:
3 Likes

Last week's notes:

Two Bugs for the Price of One

Highlights:

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

Catching up on these. Last week's notes:

Chai for Zero or More

  • Sam presented Chai, an arity solver and optimizing compiler for Qi
  • running afoul of Greenspun's Tenth Rule
  • compiling flows to graph nodes called connects
  • 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, where we considered a design for what could be the best docstrings in any language (powered by Scribble, of course!)

Minimizing the Second Derivative, when we took charge of our ballooning to-do list.

Last week's notes:

PLT Pictionary

Highlights:

  • We played "PLT Pictionary"!
  • Python, really?
  • Using an LLM, really??
  • At least 5 different ways to implement pictionary properly :person_facepalming:
  • ... including this one on Discourse after the meeting
  • An initial Redex implementation of Qi's semantics
2 Likes

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

Vacuum Fluctuations

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? How would that affect the semantics?

More from the last few weeks to catch up on:

Combined notes from Nov 14 and Nov 21:

The Many Worlds Interpretation

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! :face_with_spiral_eyes:
  • 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 :slightly_smiling_face:

2 Likes

:joy:

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....

1 Like

i had put an example of Qi operator in infix in my doc near this anchor.

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

2 Likes

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

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

2 Likes