A language whose denoted programs form a group under program concatenation https://catseye.tc/node/Burro
  • Haskell 94.4%
  • Shell 5%
  • JavaScript 0.6%
Find a file
2025-02-09 11:59:10 +00:00
bin Arrange licensing info in repo according to REUSE 3.2 convention. 2024-08-28 01:59:59 +01:00
demo Arrange licensing info in repo according to REUSE 3.2 convention. 2024-08-28 01:59:59 +01:00
doc Add history to README and move explication to separate document. 2025-01-20 17:20:33 +00:00
eg Add some more simple example programs (Kondey compiled to Burro). 2025-02-09 10:30:39 +00:00
LICENSES Update copyright dates. 2025-01-19 21:30:44 +00:00
src Add --tape-display-width option and update test cases. 2025-02-09 11:59:10 +00:00
.gitignore Arrange licensing info in repo according to REUSE 3.2 convention. 2024-08-28 01:59:59 +01:00
build.sh Arrange licensing info in repo according to REUSE 3.2 convention. 2024-08-28 01:59:59 +01:00
clean.sh Arrange licensing info in repo according to REUSE 3.2 convention. 2024-08-28 01:59:59 +01:00
README.md Update the nicely formatted Markdown link paragraph again. 2025-01-20 21:28:36 +00:00
REUSE.toml Arrange licensing info in repo according to REUSE 3.2 convention. 2024-08-28 01:59:59 +01:00
test.sh Arrange licensing info in repo according to REUSE 3.2 convention. 2024-08-28 01:59:59 +01:00
Tests.md Add --tape-display-width option and update test cases. 2025-02-09 11:59:10 +00:00

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 rendering the definition with the Markdown formatting within the Literate Haskell file nicely formatted, making it 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.