# ƎↃИ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`