UnnumericJS

From Esolang
Jump to navigation Jump to search

UnnumericJS is an esolang create by User:None1 and inspired by MangularJS and JSFuck. It is JavaScript, but if your program includes digits (the characters 0~9), the program raises a syntax error.

Examples

Hello World

console.log('Hello World')

Truth Machine

function truth_machine(input){
    if(input==!''+!!''){
        while(!''){
            console.log(!''+!!'');
        }
    }else{
        console.log(!!''+!!'');
    }
}

Since JavaScript has no input, UnnumericJS also has no input, so you have to pass !!'' for 0 and !'' for 1 to the truth_machine function.

Raise a syntax error

0

Interpreter in JavaScript

function unnumericjs(code){
    for(let i of '1234567890'){
        if(code.includes(i)){
            throw new Error('Syntax error');
        }
    }
    eval(code);
}

Turing completeness

We can use !!''+!!'' for 0 and !!''+!'' for 1, and therefore we can represent any number. Using String.fromCharCode, we can represent any string, and finally, we can use eval to run any JavaScript code. As a brainfuck interpreter is written in JavaScript, JavaScript is Turing complete, so UnnumericJS is also Turing complete.