ƎↃИAЯT

From Esolang
Jump to navigation Jump to search
ƎↃИAЯT
Paradigm(s) Functional, Declarative
Designed by Hakerh400
Appeared in 2020
Computational class Turing-complete
Major implementations Interpreter
File extension(s) .txt

ƎↃИAЯT (/ɛsŋɑrt/) is an esoteric programming language. The only allowed type is integer of unlimited size and the only operation is addition.

Overview

Source code has one or more function definitions. Each function definition has name, formal arguments and the resulting expression.

Example:

add(x, y): x + y

It is a function that adds two integers. All integers are non-negative (the smallest integer is 0).

Function overloading is also allowed. The following is a function that decrements a number:

dec(x + 1): x
dec(0): 0

Explanation: there are two overloaded function definitions. When called with an argument that is something plus 1, then return that something, which is effectively the argument decremented by 1. When called with 0 it returns 0.

We can also implement subtraction:

sub(x + 1, y + 1): sub(x, y)
sub(x + 1, 0): x + 1
sub(0, y): 0

Here are some examples of illegal code:

// ERROR: Missing implementation for func(0)
func(x + 1): x

// ERROR: Call to func(1) would be ambiguous
func(x + 1): x
func(1): 1
func(0): 0

// ERROR: Invalid formal argument
func(x + y): x

I/O format

Implementation-dependent.

The provided interpreter requires function main to be present and calls main with the input number, which is obtained by converting the input string to byte array and concatenating all the bytes to form a big integer. Output format is the same.

Examples

Add two digits

main(x):
  sub(shr(x, 8) + sub(x, shl(shr(x, 8), 8)), 48)

sub(x + 1, y + 1): sub(x, y)
sub(x + 1, 0): x + 1
sub(0, y): 0

shl(x, y + 1): shl(shl(x, y))
shl(x, 0): x
shl(x): x + x

shr(x, y + 1): shr(shr(x, y))
shr(x, 0): x
shr(x + 2): shr(x) + 1
shr(1): 0
shr(0): 0

Works only if the sum is smaller than 10

Input: 35
Output: 8

Interpreters

Interpreter