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.

MEBOP

From Esolang
Jump to navigation Jump to search

MEBOP is an esolang based on mathematics, designed to look as though it were a serious mathematical work. It was designed in 2026 by ASCIIguy as a reference to the fact that computer science and mathematics were once the same field with minor differences due to the fact that the computer was not a consumer technology yet. It is a stack-based imperative language.

Etymology

MEBOP is an acronym that stands for Mathematical Esolang Based On Proofs, and is pronounced mee-BOHB.

Introduction

This is still a work in progress. It may be changed in the future.

One has to begin understanding MEBOP by recognising that it is based on the key features of mathematics: numbers, variables, functions, and logic. Those four principles make up the base of the language, and are known as the Vanful. A paper, or MEBOP program, will consist of the premise, which defines constants and global variables, and the functions which hold the actual logic. A paper will always begin at f(), the entry point of all MEBOP papers, and without it will simply fail to work.

Basic Functions

The basic MEBOP paper will use the f() function which takes the arguments inputted when the program is first run. For example, f(x) :: x / 2 ~ Z { x = x / 2 | x = x + 1 } will take x as an argument. If x is divisible by 2 while remaining an integer, it will halve the value in x. Otherwise, x is incremented.

Multiple-Instruction Functions

In a function with multiple instructions, you will separate the instructions by newlines or semi-colons. For example, f(x) :: x - 1 > 0 { x - 1 } ; x = [x / 2] will take x as an argument, check if x - 1 is still positive, and decrement x if so. Regardless, it will then take the rounded form of x / 2 and put it in x.

Examples

Hello World:

f() :: p, "Hello, world!"

Fizzbuzz:

f(x) :: x / 15 ~ Z { p, "Fizzbuzz" | x / 5 ~ Z { p, "Buzz" | x / 3 ~ Z {p, "Fizz" } } | p, x } ; x = x + 1