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.

Bitch, Ienai!

From Esolang
Jump to navigation Jump to search

Bitch, Ienai! is a constraint language created by User:Yayimhere with (a whole damn lot of) assistance from User:MarkFan8901. Unlike a typical esolang, Bitch, Ienai! works like a constraint puzzle for esolangs; it's defined by a set of rules that a potential solution must follow, and solving for it consists of creating an esolang out of them. Bitch, Ienai! is the first constraint language to be consciously designed as one, with the concept originating from Final Word Of The Day, but unlike FWOTD has it's rules based around an existing language.

Definitions

This is a list of definitions to ease explanation of the rules. However, they also count as constraints on their own, since solutions need support for these concepts.

  • A value is up to the solution to define.
  • A transform is something which takes an entity and turns it into something else.
  • A semi-entity is something which has both a value and a transform.
  • A property is an aspect of an entity. Entities can have multiple properties, and multiple entities can have the same property.
  • A definition is something which assigns a certain name/symbol with a semi-entity. Definitions can occur anywhere in the program.
  • An entity is a semi-entity which has been defined. Entities are always referenced by their definition instead of by value. An entity can show up anywhere a semi-entity can.

Rules

These are the core constraints of the language. Meta-notation (what's in code blocks) are to ease explanation, and are not actually a part of the language.

  • Every property can be used as a semi-entity, and vice versa. This mapping is always unique.
    • The notation for a properties' corresponding entity (and the other way around) is P(X).
  • Transforms only work on either the value or the properties of the entity they take in.
    • The first 'kind' are called VTs (short for Value Transforms), and the second are PTs (Property Transforms).
    • Transforms which produce other transforms, specifically with a syntactic template, are MTs (Meta Transforms), and are always VTs.
  • Entities must be defined with either a value or a transform. The other side must be derived from what was given.
    • note: Since entities are defined purely by their name and the semi-entity they are defined as, the same amount of information is always given by a semi-entity. As such semi-entities are also always one or the other, and the other side is derived.
  • Every semi-entity has the universal property, called v.
  • There exists the following builtin entities, which are defined before the program starts:
    • M, a PT transform which turns an entity of v into M. P(M) only holds M.
    • l, an MT transform which takes an entity X and makes a transform that makes X when given P(X).
    • N, an MT transform which takes an entity X and makes a transform that makes X transformed by l when given P(M)

Solutions