Z^3 Language Documentation

Operators

@: Function Apply Operator

1..100@SIN

~: Transpose Operator


[[[1..10]~]~]~

↑ and ↓: Ascending and Descending Operator

	
	MAGICSQUARE(5)!
	(1..100)↓
	(1..100)↑

⧓,⧒,⧒ and ⋈: Between Operators

	a=-1;
	⧓(1,a,30)
	a=29;	
	⧓(1,a,30) //between g
	
	a=31;
	⧒(1,a,30) //xlbetween g
	a=30;
	⧒(1,a,30) //xlbetween g
	
	⧒(1,2,30) // xlb g
	⧒(1,1,30)
	
	a=29;
	⋈(1,-1..31,30);
	
	⧓(1,-1..5,4);
	
	[
		⧓(1,1,30),
		⧓(1,0,30),
		⧓(1,10,30),
		⧓(1,31,30),
		⧑(1,29,30),
		⧑(1,30,30),
		⧑(1,1,30),
		⧑(1,30,30),
		⋈(1,1,30),
		⋈(1,3,30)
	]

√: Square Root, Cube Root, Fourth Root and Nth Root Operators

	√(3+34)
	∛(27.01)
	√√64
	ROOTNTH(1..10,4) 
		// root is first parameter
	NTHROOT(1..10,4)
		// root is second parameter
	
	NTHROOT(1..100,2)
	NTHROOT(1..100,4)
	ROOTNTH(1..100,2)
	ROOTNTH(1..100,4)
	3√81

@: List of Operators


+,  -,  *,  /, ^, %		- Arithmetic Operators
| | 		- Array Function and Creation Operator
.. , ...		- Arithmetic and Geometric Series Creation	
@ 	- apply to
# 	- Series or Special Case Qualifier for Dates, Calci
				   Cells, and Sequences, etc.
<<<		- Member or Variable Assignment
()		- Function Call
[]		- Set Creation
		- Object Set 
		- Set Object Membership
.		- Member Function Dereferencing.	
. mf 		- Member Function
.$ mf(function, parameters)	- Element-wise Function Application
.$$ mf (special	– Row-wise Function Application
.$$$ mf (special) 	– Column-wise Function Application
.$_ mf (special)	- Cumulative Function Application (all)


Logical Statements

If Statements

    a=3;
    (a<0)::{"whatever"},
    {
		!(a>4)::
			{"whateverelse"},
			{"whateverelseleft"}
	}  
	
	(a>4)::
			{"whateverelse"},
			{"whateverelseleft"}
			

Switch Statements

Apart from the conventional Javascript switch statement syntax, z^3 enhances language simplicity with a new style.

The new z^3 switch statements syntax is as follows.


	discriminant:::
	{
           x, y:: 
        	  /*statements to be executed if x or y is true*/
        	  /*Break is automatically added. */
        	  /*Simply add an empty statement using a simple extra semicolon (;)) */
            ,
		z:: 
        	  /*statements to be executed if z is true*/
            ,
		default::
	}
For example,
	b=0;
	c=343;
	fruits="mango";
	fruits:::
	{
        "apple","tomato":: 
        	   b++;
        	   c=3.4;
           ,
		"mango":: 
        	   b=34905; 
                
            ,
        default::
        	
                b=45.6;
            
	}
	[b,c];  
	
	switch(a)
	{
		case b:
		case c:
			break;
		default:
			break;
	}

Loops

	a=1;
	do
	{
		a++
	}
	until(a>20); // do while(!condition)
	a; // here this will be 21, since !condition is checked like a do while loop.
	
	a=11;
	b=45;
	because(a<b)
	{
		a++
		OUTPUT(a)
	}
	
	a=11;
	do
	{
		a++
	}
	unless(a==11); 
	a;


Function Declarations

	function y(x)
	{
		∵(x<345)
		{
			∴(x+3434)
		}
		∵(x>345)
		{
			∴(x-3434)
		}
	}
	y(13);

The letter Ƒ can also be used instead of the full term function.
	
	Ƒ y(x)
	{
		∵(x<345)
		{
			∴(x+3434)
		}
		∵(x>345)
		{
			∴(x-3434)
		}
	}
	y(13);

Existential Quantification

	a=1..100;
	∀a("x<810")
	∃a("x<810")
	∄a("x<810")
	
	a=1..100;
	[∀a("x<810"),∃a("x<810"),∄a("x<810")]
	a=1..100;
	[∀a("x<810"),∃a("x<810"),(!∄a("x<0"))]
	
	a=1..100;
	b= ∀a("y*2<200");
	b.result
	
	a=1..100;
	b= ∀a("y*2<=50");
	a.pick(b.result)
	
	//make a pick operator based on a similar array of true false. or non-existant to get the values out.
	//PICK
	
	a=1..100;
	b= ∀a("y*2<50");
	a.pick(b.result)