pluto-lang 0.4.1

A interpreted programming language made in Rust
/* ==========================================
   Basic Variable Declaration and Types
   ========================================== */
print("Testing Variables and Types:");

let a = 42;
let b = 3.14;
let s = "Hello";
let bool = true;
let n = null;

print("Type of a:", type(a));    /* Number */
print("Type of b:", type(b));    /* Float */
print("Type of s:", type(s));    /* String */
print("Type of bool:", type(bool)); /* Bool */
print("Type of n:", type(n));    /* Null */

/* ==========================================
   Arithmetic Operations
   ========================================== */
print("\nTesting Arithmetic:");

print("42 + 8 =", 42 + 8);      /* 50 */
print("42 - 8 =", 42 - 8);      /* 34 */
print("42 * 8 =", 42 * 8);      /* 336 */
print("42 / 8 =", 42 / 8);      /* 5.25 */
print("42 % 8 =", 42 % 8);      /* 2 */

/* Mixed number and float operations */
print("42 + 3.14 =", 42 + 3.14);

/* ==========================================
   String Operations
   ========================================== */
print("\nTesting Strings:");

let str = "Hello";
print("String methods:");
print("Length:", str.len());
print("Uppercase:", str.to_upper());
print("Lowercase:", str.to_lower());
print("Character at 1:", str.char_at(1));
print("String + Number:", "Answer: " + 42);

/* ==========================================
   Arrays
   ========================================== */
print("\nTesting Arrays:");

let arr = [1, 2, 3, 4, 5];
print("Original array:", arr);
print("Length:", arr.len());
print("Sum:", arr.sum());

/* Array methods */
arr.push(6);
print("After push:", arr);
arr.pop();
print("After pop:", arr);
arr.remove(0);
print("After remove(0):", arr);

/* Array map */
let doubled = arr.map((x) -> x * 2);
print("Doubled:", doubled);

/* Array with default param map */
let squared = arr.map((x=0) -> x * x);
print("Squared:", squared);

/* ==========================================
   HashMaps
   ========================================== */
print("\nTesting HashMaps:");

let map = {"name": "John", "age": 30};
print("Original map:", map);
print("Length:", map.len());
print("Get name:", map.get("name"));
let new_map = map.set("city", "New York");
print("After set:", new_map);

/* ==========================================
   Functions with Default Parameters
   ========================================== */
print("\nTesting Functions:");

fn greet(name="World", greeting="Hello") {
    print(greeting + ", " + name + "!");
}

greet();                    /* Hello, World! */
greet("Alice");            /* Hello, Alice! */
greet("Bob", "Hi");        /* Hi, Bob! */
greet(greeting="Hola");    /* Hola, World! */
greet(name="Charlie", greeting="Hey"); /* Hey, Charlie! */

/* Function returning value */
fn power(x, n=2) {
    return Math.pow(x, n);
}

print("2^3 =", power(2, 3));    /* 8 */
print("3^2 =", power(3));       /* 9 (using default) */
print("4^2 =", power(x=4));     /* 16 (using named arg) */

/* ==========================================
   Control Flow
   ========================================== */
print("\nTesting Control Flow:");

/* If-else */
let num = 42;
if (num > 50) {
    print("Greater than 50");
} else if (num > 40) {
    print("Greater than 40");
} else {
    print("Less than or equal to 40");
}

/* While loop with continue and break */
print("While loop with continue/break:");
let i = 0;
while (i < 5) {
    i++;
    if (i == 2) {
        continue;
    }
    if (i == 4) {
        break;
    }
    print("i =", i);
}

/* For loop */
print("For loop:");
for (let i = 0; i < 3; i++) {
    print("i =", i);
}

/* ==========================================
   Built-in Modules
   ========================================== */
print("\nTesting Modules:");

/* Math module */
print("PI =", Math.pi);
print("2^3 =", Math.pow(2, 3));

/* Time module */
print("Current time (s):", Time.now());
print("Current time (ms):", Time.now_ms());

/* ==========================================
   Input/Output
   ========================================== */
print("\nTesting I/O:");
print("Regular print");
print("Print with no newline", end="");
print(" (continued)");

/* Uncomment to test input:
let user_input = input("Enter something: ");
print("You entered:", user_input);
*/

print("\nAll tests completed!");