Tree @master (Download .tar.gz)
Burro
Try it online @ catseye.tc | Wiki entry @ esolangs.org | See also: Tandem
This is the reference distribution for Burro, a formal programming language whose programs form a group (an algebraic structure from group theory). The precise sense of this statement is explained in the accompanying document The Sense in which Burro Programs form a Group, but the following can be taken as a high-level summary: For every Burro program text, there exists an "annihilator" program text which, when concatenated to the original program text, forms a "no-op" program.
The current version of the Burro language is 2.0, and is defined by the
Literate Haskell file Language/Burro/Definition.lhs
in the src directory, which also serves as the reference implementation
of the language.
Note: In some repository viewers (such as Codeberg), viewing the contents of the
directory src/Language/Burro/
will render the Markdown within the Literate Haskell file nicely, making the definition
more readable.
History
- 2005: The author, already familiar with brainfuck and starting to learn about group theory and seeing some similarities between them, gets some ideas about how they could be combined.
- 2007: Burro language version 1.0 is released. Its documentation
can still be found in the file
doc/burro-1.0.md. - 2010(?): It is noticed and pointed out by ais523 and others that the set of Burro 1.0 programs does not actually form a group.
- 2010: Burro language version 2.0 is designed and released, along with a proof that its programs do form a group, and a proof that the language is Turing-complete.
- June 2020: A more mathematical explanation of the sense in which Burro programs form a group is written up. It can be found in the document The Sense in which Burro Programs form a Group.
- July 2020: It is noticed and pointed out (by whom?) that the proof of Turing-completeness distributed with Burro 2.0 is incorrect — it only holds for very small Turing machines. In response to this, a new extensible conditional idiom is developed for Burro code, with the aim of supporting a correct proof of its Turing-completeness.
- 2025: A minor variant of Burro called Kondey — basically a syntactic sugar for the extensible conditional idiom — is designed, again to support the construction of a new Turing-completeness proof.
- June 2026: Tooling for working with Turmac, an interchange format for Turing machines, (version 0.4), is commingled in the source tree, as further support for a Turing-completeness proof.
- July 2026: A proof that Burro is Turing-complete was found using Claude Opus 4.8.
Commit History
@master
git clone https://git.catseye.tc/Burro/
- Add history to README and move explication to separate document. Chris Pressey 1 year, 7 months ago
- Update copyright dates. Chris Pressey 1 year, 7 months ago
- Explain how we know how to write the new state: ensure cell is 0. Chris Pressey 1 year, 7 months ago
- Update instructions for translating Turing Machines to Kondey. Chris Pressey 1 year, 7 months ago
- Write out the TM simulation plan. Chris Pressey 1 year, 7 months ago
- Convenience commands to run and debug after compiling from Kondey. Chris Pressey 1 year, 7 months ago
- Fix bug in parseCond. Add test case for nested conditionals. Chris Pressey 1 year, 7 months ago
- Upgrade Kondey parser. I'm not proud, and I have a subscription. Chris Pressey 1 year, 7 months ago
- Adapt genCond to convert Kondey to Burro. Chris Pressey 1 year, 7 months ago
- Refactor genCond to not itself parse. Chris Pressey 1 year, 7 months ago
- Merge branch 'develop-2025-1' into kondey Chris Pressey 1 year, 7 months ago
- Extend Show instance of Burro so no need for dedicated renderer. Chris Pressey 1 year, 7 months ago
- Add start of (a) Kondey language definition (b) proper compiler. Chris Pressey 1 year, 7 months ago
- Format for conditional structures is actually its own language. Chris Pressey 1 year, 7 months ago
- Bring the generator up to par with our conditional branch layout. Chris Pressey 1 year, 7 months ago
- Reformat test case and bring generator yet closer to it. Chris Pressey 1 year, 7 months ago
- Yet closer. Chris Pressey 1 year, 7 months ago
- Bring the construction closer still. Chris Pressey 1 year, 7 months ago
- Tiny improvement to `gencond` facility. Chris Pressey 1 year, 7 months ago
- Convert to "freestyle" Falderal format. Add failing gencond test. Chris Pressey 1 year, 7 months ago
- Small cleanup in main driver module. Chris Pressey 1 year, 9 months ago
- Begin building gencond feature in the reference implementation. Chris Pressey 1 year, 9 months ago
- Add another test, and some notes, to the tests. Chris Pressey 1 year, 10 months ago
- Improve visualization, update tests. Chris Pressey 1 year, 10 months ago
- Improve visualization of state. Tests fail though. Chris Pressey 1 year, 11 months ago
- Arrange licensing info in repo according to REUSE 3.2 convention. Chris Pressey 2 years ago
- Switch to using catseye-standard hastec-launcher.js in JS demo. Chris Pressey 2 years ago
- Make it a 2-clause BSD license, like the other projects. Chris Pressey 2 years ago
- Arrange licensing info in repo to follow REUSE 3.0 convention. Chris Pressey 2 years ago
- Merge pull request #3 from catseye/develop-2023-1 Chris Pressey (commit: GitHub) 3 years ago