Snakel

From Esolang
(Redirected from Snakel (Ractangle))
Jump to navigation Jump to search
Official logo since 2005

Snakel is an alternative universe version of Python created in 1989 by Tolly Edd in the gammaline universe

Tour of the language

This section is still a work in progress. It may be changed in the future.

How to get Snakel (inside your Gammaline computer)

See Snakel/Compatibility methods

Syntax

Every program starts with a definition, to actually define a function, you can do this:

­ 1: def name[arguments]; !Used for argumented functions
­ 2: ­ ­ ­ ­ ignore !"ignore" will go to the end of the function
­ 3: def name:none; !Used for argumentless functions
­ 4: ­ ­ ­ ­ ignore

translated into python:

def name(arguments):...
def name():...

I/O in Snakel also exist:

­ 1: def main:none;
­ 2: ­ ­ ­ ­ tell["anything here"] !Prints "anything here" in one line
­ 3: ­ ­ ­ ­ user !Gets user input. No argument required

translated into python:

print("anything here")
input()

By the way. The strings are actually multi-liners so:

­ 1: def main:none;
­ 2: ­ ­ ­ ­ tell["multi
­ 3: line"] !Will print "multi\nline"

translated into python:

print("""multi
line""")

Now let's talk about the "ignore" and "end".

­ 1: !we already know that "ignore" goes to the end of the function, But did you know that you can also ignore errors with "ignore" and with "test"?
­ 2: test:1/0 !Will rasie a zero devision error
­ 3: ignore ZeroDevision:tell["inf"] !will print "inf" (or infinity) instead of raising zero devision error
­ 4: end !"end" just ends the program

translated into python:

try:1/0
except ZeroDivisionError:print("inf")
exit()

The test command is also a debug command, if you don't include the ignore statement

­ 1: test:tell["this won't be printed"] !"test" will print the debug information and won't run the code inside it
­ 2: !an example of debug information is if the program encountered an error and what kind of error it got


Also i think i kinda stole the logic of rust's case statements for Snakel conditional

­ 1: num i=0
­ 2: if i=0;tell[0] | i=1;end | tell[3]

translated into python:

i:int=0
if i==0:print(0)
elif i==1:exit()
else:print(3)

Common mistakes

See Snakel/Errors

Examples

Hello, world!

­ 1: def main:none;tell["Hello, world!\n"]

translated into python:

print("Hello, world!")

Cat program

­ 1: def main:none;tell[user]

translated into python:

print(input())

Truth-machine

­ 1: def truth:none;
­ 2: ­ ­ ­ ­ num i=user
­ 3: ­ ­ ­ ­ if i>0;ignore | tell[0];end
­ 4: def main:none;
­ 5: ­ ­ ­ ­ truth[]
­ 6: ­ ­ ­ ­ while 1:tell[1]

translated into python:

def truth():
    i:int=input()
    if int(i)>0:return
    else:print(0);exit()
truth()
while 1:print(1,end="")

A+B Problem

­ 1: def APB [num[a,b]];tell[a+b]
­ 2: def main:none;APB[7,4]

translated into python:

def APB (a:int,b:int):print(a+b)
APB(7,4)

See also

Bake - The language made before the first version of Snakel was uploaded