Functions

⚡ Regular Functions

HudHudScript supports both traditional and modern function syntax. Try it:

// English - Functions
// Function definition and usage examples

// Simple function
function greet() {
    print("Hello World!");
}

// Function with parameters
function add(a, b) {
    return a + b;
}

// Multi-parameter function
function calculate(num1, num2, operation) {
    if (operation == "add") {
        return num1 + num2;
    } else if (operation == "subtract") {
        return num1 - num2;
    } else if (operation == "multiply") {
        return num1 * num2;
    } else if (operation == "divide") {
        return num1 / num2;
    } else {
        return 0;
    }
}

// Mathematical functions
function square(x) {
    return x * x;
}

function cube(x) {
    return x * x * x;
}

// Using functions
greet();

let result1 = add(5, 3);
print(result1);

let result2 = calculate(10, 5, "add");
print(result2);

let result3 = calculate(10, 5, "multiply");
print(result3);

let square_result = square(4);
print(square_result);

let cube_result = cube(3);
print(cube_result);

// Function composition
let total = add(square(3), cube(2));
print(total);

🎯 Arrow Functions

Modern, concise syntax for functions:

// English - Arrow Functions
// Modern, concise syntax for functions

// Arrow function - short syntax
let add = (a, b) => a + b;
let multiply = (x, y) => x * y;

print(add(5, 3));      // 8
print(multiply(4, 7)); // 28

// Arrow function with block
let calculate = (a, b) => {
    let sum = a + b;
    let product = a * b;
    return sum + product;
};

let result = calculate(5, 3);
print(result);  // 23 (8 + 15)

// Single parameter (no parentheses needed)
let square = x => x * x;
print(square(6));  // 36

// No parameters
let greet = () => "Hello!";
print(greet());  // Hello!

🔄 Higher-Order Functions

Functions that work with other functions:

// English - Higher-Order Functions
// Functions that work with other functions

// Function that returns a function
function multiplier(factor) {
    return (x) => x * factor;
}

let double = multiplier(2);
let triple = multiplier(3);

print(double(5));  // 10
print(triple(5));  // 15

// Function that takes a function
function apply(fn, value) {
    return fn(value);
}

print(apply(double, 10));  // 20

// Composition example
function compose(f, g) {
    return (x) => f(g(x));
}

let addOne = (x) => x + 1;
let timesTwo = (x) => x * 2;

let addThenDouble = compose(timesTwo, addOne);
print(addThenDouble(5));  // 12 (5+1=6, 6*2=12)

🚀 Next Steps

Learn about Control Flow and AI Agents.