BQN community links

This page gathers links to work by the community. To get in touch, please use our chat forums.

Here are some places to find BQN libraries and examples:

See also:

Fan art

Wezl has provided a view into the BQN programmer in 𝕩e's typical place of residence.

Depiction, remodel, animation.

Links contain the encoded art, which is CC-BY 4.0: see the "setup JS" pane.

And razetime designed a desktop background based on the BQN logo and character set.

Can I help out?

Quite possibly! These days I tend to feel that BQN's implementation has outpaced its users, so that features are often more general and fast than anyone really needs. Ball's in your court. The main constraining factor in improving BQN is design of new system functions (and sometimes other features, but this is rare). We need proposals that are thought-out and specific on details. Exploring and documenting use cases also helps to sift through ideas and move towards a sound design.

Building libraries for BQN users can make the language much more approachable. You are a better judge of which libraries are needed than I. Port some code from another language, implement something useful for a field you specialize in, or try something new that interests you. A library should be structured as a file (possibly loading other files) that's imported as a namespace. This isn't too well-documented now, but see the namespace documentation for hints, and bqn-libs for how I write them. Another way to help build the community is accessible introductions to the language and learning materials. People approach the language from many different directions, and having a wide selection of these makes it more likely they can find one that makes BQN click.

What about our implementation? CBQN is pretty good at what it does, I work on it because it's fun and also out of a burning need to stamp out any possibility that someone else's boolean algorithms could be faster than mine, but I'm aware that pushing further along the same axes is kind of pointless. To the extent that performance matters at all, research in new domains could be useful: things like ahead-of-time analysis and optimization, just-in-time compiling, loop fusion, multi-threading, and GPU acceleration. BQN's strict syntax should generally help with these, while dynamic typing and the desire to keep the speed of the current array algorithms will get in the way. But there's no need to work on our implementation! BQN's specification and tests are there to make sure you can write a conforming implementation, and extend it with your own ideas. You might also take advantage of the self-hosted sources by writing a virtual machine that allows you to embed BQN in the language of your choice. Finally, a hugely important resource is testing, as tests hold their value even for brand new implementations. We can always use more tests for tricky edge cases, or new systems that can cover them!