From Esolang
Jump to navigation Jump to search
This article is a stub, which means that it is not detailed enough and needs to be expanded. Please help us by adding some more information.

This is an idea that I had, that I really think is cool.

In TPL, each variable actually holds 3 different objects, depending on usage and keywords. It can hold a table, a function, and a variable.

To define a variable, you use var hello = "world". Tables can be defined with table objects = [1, "two", "three"], and functions with func double(x) = { return x * 2 }.

TPL includes automatic type parsing for variables, so you don't have to use the keywords for definition. To quickly define multiple, use double square brackets like tpl = [[19, func (x) {print(x)}, [1, 2, 3]]]

In TPL, semicolons are permitted under normal rules, but you can also use line feeds. Comments are denoted with // this is a comment.


Function Usage Explanation
print() print("hello") Prints the argument. If printing a table or function, prints the definition.
input() input() Takes user input as a string.
inputnum() inputnum() Takes user input as a number. If any characters are not in [0,1,2,3,4,5,6,7,8,9,-,.], it returns an error.
assert() assert(1 + 2 == 3) Errors if the argument is falsy. Falsy objects include empty tables, "", False, 0, and functions with no input, output, or returns.

I honestly can't think of any more, except the obvious ones.


Hello world

print("Hello world")

99 bottles of beer

for (i = 99, 1) {
if (i == 1) { print("1 bottle of beer on the wall,"); print("1 bottle of beer!") }
else { print(i + " bottles of beer on the wall,"); print(i + " bottles of beer!") }
print("Take one down, pass it around,")
if (i == 2) { print("1 bottle of beer on the wall!") }
else { print(i + " bottles of beer on the wall!") } }


i = 1
while True {
if (i % 15 == 0) {
} elif (i % 5 == 0) {
} elif (i % 3 == 0) {
} else {
} i++ }

recursive fibonacci function

fib(x) = {if (x <= 2) {return 1} else {return fib(x-1) + fib(x-2)}}

truth machine

in = inputnum(); if (in == 0) {print(0)} else {while (True) {print(in)}}