TPL

From Esolang
Jump to navigation Jump to search
This article 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.

Builtins

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.

Examples

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!") } }

fizzbuzz

i = 1
while True {
if (i % 15 == 0) {
print("fizzbuzz")
} elif (i % 5 == 0) {
print("buzz")
} elif (i % 3 == 0) {
print("fizz")
} else {
print(i)
} 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)}}