PlayGround

From Esolang
Jump to navigation Jump to search

Playground is a language concept that is still currently under the works by User:CakeProphet. Although nothing is currently definite, PlayGround will consist of a number of different "sublanguages", all with different syntax and functionality. The end result with be something like an anti-brainfuck... maybe.


JumpRope

A programming language that involves a number of children objects, some of which are holding a jumprope object. The children can jump at certain tempos, and the rope can be turned at certain tempos. If the jumping children are out of sync with the rope, they will slowly come closer to "tripping" over the rope. Different things can happen at different levels of synchronization, or when a trip occurs, or any other combination of rope/children tempos, this provides the conditions for certain actions to happen. Tempo of any object can be increased or decreased any increment at any place in the program. There can be any number of ropes being spun by a single child, and any number of children jumping inside a single rope, and ropes can be held by children that are already inside larger ropes. Children may move freely between different areas of the line up, allowing them to jump in different rope. When a child trips, they will stop jumping for a certain period of time, specified by a value that tells them how long to stay down. A rope can be split into two smaller ropes, or four smaller ropes, each "clone" identical to the original, and can then be altered from that point. Rope merging is possible, but only when two ropes are identical in every way. The direction a rope is turning can be reversed, and thus asynchrynization will begin in the opposite way. When a child holding a jumprope is tripped by another jumprope, it temporarily stops turning the jumprope until it manages to stand back up.


All commands rely fully on the position of ropes... even statements can only happen during a certain state of asynchronization.


Children

All children have the following characteristics, but then gain more specialized qualities based on their role type.

  • tempo - Rate at which a child jumps.
  • staydown - the number of jumprope rotations the child will stay inactive for once tripped. Can be changed at any time
  • async - The relative difference between the child's tempo and a rope's tempo. It is the remainder from Ropetempo divided by Childtempo. If async equals 0, then the child and jumprope are in perfect synchronization. Async can be changed at any time.
  • offset - The interval between a child's jump and the rope's rotation. It is a number from -9 to +9. +5 and -5 means the child's jump and the rope's rotation are halfway apart in occurance, while 0 means that the child has just triped over the rope. The offset value is used to trigger certain values in the program. offset is distorted by async's value each jump, so if async equals 2, then offset is decreased by 2 after each jump.

The "conceive" keyword creates a new child.

conceive tom the holder, who jumps at eight and sits at nine
before becky there is tom
faster tom!
faster tom!
faster tom!
faster tom!
faster tom!


This example sets tom's tempo to 8, and his staydown to 9, but then increases his tempo by 5 before the next jump. The second line determines toms place in the row. The "after" keyword can also be used instead of "before"

Below are the different types of roles

holder

A child that is a holder acts as a variable that can be assigned exactly one character.

jumping tom jumps -2 off greenbeanrope, tom holds a

This example sets tom's value to the character "a" when his offset from greenbeanrope is -2.

seer

A seer is a variable that can be assigned one integer.

jumping sue jumps 0 off blackrope, sue sees 42

when sue trips, she is assigned 42

thinker

So what about integer math and string concatenance? How the hell can you make use of just one character per holder? This is where thinkers come in handy. Thinkers are variables that can only be assigned holder concatenations or seer calculations.

jumping lol jumps 4 off haharope, lol thinks tom + edgar + HolderSam + meh
jumping rofl jumps -4 off haharope, rofl thinks sue * becky/numbersmith

keeper

Keepers are lists of holders and/or seers and/or thinkers.

jumping sam jumps 8 off crabrope, sam keeps tom

Keepers can only add or remove one child from their list per statement.


All keeper keywords:

  • keeps - adds child to list
  • drops - removes child from list
  • gives <child> to <keeper-child> - Moves a child from one list to another

Keywords

This is a jot list of potential keywords.

Conceive

Gives birth to a new Child under a specific, permanent datatype

Syntax example: "Conceive Tom the holder" (Creates a holder named Tom)

Conceivable roles:

  • holder - a string variable (one character only)
  • seer - an integer variable
  • thinker - A variable assigned to the addition/subtration/multiplication/division of existing seers or a concatenation of existing holders. It can only be assigned in this way.
  • keeper - list datatype
  • actor - a datatype that is capable of performing control flow statements under certain conditions. This is the -only- way to make most control flow statements


Before and After

Used to designate where a child goes in the line of kids...

after tom there is salad
before tom there is AssMan

Between

Between sets the holder of a jump rope

between child1 and child2 there is jumprope

This means that child1 and child2 are holding jumprope, and that all children inbetween are jumping over jumprope.

Jumping

The jumping keyword works like an if statement, but it only consists of one line

jumping tom jumps -4 off green, tom holds b

Translation: If tom's offset from rope "green" is at -4 at any time during program run, then tom is assigned the string "b".

A hello world program (could be more efficient)

Hey let's all jump some rope!




there is a rope known as worldrope, who spins at 50
there is a rope known as teehee, who spins at 32

conceive Gertrude the thinker, who jumps at 3
    
conceive Ophisus  the holder, who jumps at 7       #o
conceive Hector the holder, who jumps at 9         #h
conceive Farmer Fran the holder, who jumps at 15   #r
conceive Leewoo the holder, who jumps at 3         #l
conceive Ewok the holder, who jumps at 5           #e
conceive Dexter the holder, who jumps at 7         #d
conceive Wrinkle the holder, who jumps at 11       #w
conceive Void the holder, who jumps at 32          #whitespace
conceive Pause the holder, who jumps at 15         #,
conceive AAA the holder, who jumps at 10

conceive Twit the keeper, who jumps at 9
conceive Qwonk the keeper, who jumps at 2
conceive Scribe the actor, who jumps at   

between Twit and Farmer Fran there is worldrope
before Farmer Fran there is Gertrude
before Gertrude there is Leewoo
before Leewoo there is Ophisus
before Ophisus there is Pause

after Farmer Fran there is Ewok
after Ewok there is Dexter
after Dexter there is Wrinkle
after Wrinkle there is Hector
after Hector there is AAA
after AAA there is Scribe 
after Scribe there is Qwonk 
between Gertrude and Qwonk there is teehee

jumping Hector jumps -4 off worldrope, Hector holds H
jumping Ewok jumps -2 off teehee, Ewok holds e
jumping Leewoo jumps -1 off worldrope, Leewoo holds l
jumping Ophisus jumps -1 off worldrope, Ophisus holds o
jumping Pause jumps -5 off worldrope, Pause holds , 
jumping Void jumps 0 off worldrope, Voice holds outer space
jumping Wrinkle jumps 0 off teehee, Wrinkle holds w
jumping Farmer Fran jumps -2 off teehee, Farmer Fran holds l
jumping Dexter jumps -4 off teehee, Dexter holds 1
jumping AAA jumps -2 off teehee, AAA holds !

jumping Gertrude jumps -2 off worldrope, Gertrude thinks Hector + Ewok + Leewoo + Leewoo + Ophisus               
+ Pause + Void + Wrinkle + Ophisus + Farmer Fran + Leewoo + Dexter + AAA   

jumping Scribe jumps 0 off teehee, Scribe acts: say Gertrude

jump
jump