blog/posts-wip/2023-10-25-quox.md

3.4 KiB
Raw Blame History


title: quox. the language date: 2023-10-25 tags: [quox, computer, types] bibliography: quox.bib link-citations: true show-toc: true ...

:::{.aside .floating}

hot minuten.

  1. A long period of time.
  2. A short period of time.
  3. An unspecified period of time.

:::

for the last hot minute [@hotminute], ive been working on a little programming language. its finally starting to approach a state where it can compile some programs, so maybe i should talk about it a bit.

what is a quox [(tl;dr for type system nerds)]

a dragon from an old arcade game
this is also a quox.
  1. its a dependently typed functional language, like your agdas and your idrises.
  2. [q]{.qtt-q}uantitative type theory (qtt) [@nuttin; @qtt] is a nice combination of dependent types, resource tracking, and erasure of stuff like proofs.
  3. it uses [x]{.xtt-x}tt [@xtt] for equality. i think it's neat
  4. it has a closed type universe. you dont define new datatypes, but the language gives you building blocks to put them together. this is because of xtt originally, but i just ran with it.

so now you can see where the name [q]{.qtt-q}uo[x]{.xtt-x} comes from. other than my favourite dragon. anyway it also has

  1. bidirectional type checking [@bidi]
  2. crude-but-effective stratification [@crude; @crude-blog] for dealing with universes

dependent types

one of my fursonas is a quox with three heads
sometimes i am also a quox. or three, depending on how you count.

there are lots of languages with dependent types already. if you are reading this, chances are probably quite high you already know what they are and can skip to the next section.

*but still something. probably*

qtt

sometimes, values can only be used in certain ways to make sense. this isn't controversial: it's the old use-after-free.

xtt

references