Snakel
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