git @ Cat's Eye Technologies Burro / master README.md
master

Tree @master (Download .tar.gz)

README.md @masterview rendered · raw · history · blame

Burro
=====

<!--
Copyright (c) 2018-2025, Chris Pressey, Cat's Eye Technologies.
This file is distributed under a 2-clause BSD license, see LICENSES/ dir.
SPDX-License-Identifier: LicenseRef-BSD-2-Clause-X-Burro
-->

_Try it online_ [@ catseye.tc](https://catseye.tc/installation/Burro)
| _Wiki entry_ [@ esolangs.org](https://esolangs.org/wiki/Burro)
| _See also:_ [Tandem](https://codeberg.org/catseye/Tandem#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](doc/The-Sense-in-which-Burro-Programs-form-a-Group.md),
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`](src/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/`](src/Language/Burro/#the-burro-programming-language)
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`](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](doc/The-Sense-in-which-Burro-Programs-form-a-Group.md).
*   **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](Tests.md) 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](Tests.md) — basically
    a syntactic sugar for the extensible conditional idiom — is designed,
    again to support the construction of a new Turing-completeness proof.