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