We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

Tangle bracket language

From Esolang
Jump to navigation Jump to search
This article is not detailed enough and needs to be expanded. Please help us by adding some more information.

A Tangle bracket language is a programming language where brackets can be "tangled," that is, written without being properly nested. In properly-nested brackets, the beginning and end of a "clause" of brackets must enclose a complete sequence. This means that these sequences are properly nested:

()
[]
{[]}
{()[]{}}

And these are not:

{[}]
{([{)}])
(([[)])]

An example of code written in an (ad-hoc) tangle-bracket language is:

while x {
    if y [
        doSomething();
    }
    doSomethingElse();
]

In this code, it is assumed that [...] and {...} can be used interchangeably, but not equivalently- head{body} and head{body} are equivalent, but head{body] and head[body} are not, since ] cannot close {.

Due to the confusing, headache-inducing nature of tangle-bracket grammar, no known practical programming languages invoke this convention. As such, the exact behavior of tangle-bracket code is not defined even by convention; however, one interpretation suggests that the above code (assuming there aren't any side effects of doSomething() or doSomethingElse()) may be equivalent to:

while(x && y) doSomething();
if(!x) doSomethingElse();