Waddle_Language/README.md
Funky Waddle 2a74e5d5b6 Add README.md
Signed-off-by: funkywaddle <paul@funkywaddle.com>
2025-11-24 05:47:03 +00:00

3.1 KiB

Waddle Programming Language

Overview

Waddle is a modern, expressive programming language designed to be intuitive, readable, and powerful. It combines elements of object-oriented and functional programming with a focus on clarity and developer productivity.

Key Features

Language Characteristics

  • Strong, static typing
  • Object-oriented with interface support
  • Functional programming constructs
  • Explicit error handling
  • Concise syntax

Core Design Principles

  • Readability first
  • Explicit over implicit
  • Minimal cognitive overhead
  • Flexible type system

Basic Syntax

Type Declaration

// Basic type definition
Animal {
    // Type implementation
}

// Inheritance
Animal/Dog {
    // Dog-specific implementations
}

// Interface definition
@Mammal {
    // Interface methods
}

// Interface implementation
Animal/Dog -> [Mammal, Domesticated] {
    // Multiple interface support
}

Functions

// Function declaration
// Public function
+fn calculateArea(width: Integer, height: Integer) -> [Decimal] {
    rtn width.multiply(height);
}

// Protected Function
fn calculateArea(width: Integer, height: Integer) -> [Decimal] {
    rtn width.multiply(height);
}

// Private Function
-fn calculateArea(width: Integer, height: Integer) -> [Decimal] {
    rtn width.multiply(height);
}

// Lambda expression
areaCalculator = fn(width: Integer, height: Integer) -> [Decimal] {
    rtn width.multiply(height);
}

Error Handling

result = riskyOperation().attempt {
    ok {
        // Successful execution
        my.output.print("Operation successful");
    }
    
    ValueError {
        // Handle specific value errors
        my.logger.log(error.getMessage());
    }
    
    error {
        // Catch-all error handling
        my.criticalLogger.alert("Unexpected error");
    }
}

Iteration

// Forward iteration
loop(i, 0->10) {
    my.output.print(i);
}

// Foward iteration, with step
loop(i, 0->10, 2) {
    my.output.print(i); // outputs 0, 2, 4, 6, 8, 10
}

// Reverse iteration
rloop(i, 10->0) {
    my.output.print(i);
}

// Reverse iteration, with step
rloop(i, 10->0, 2) {
    my.output.print(i); // outputs 10, 8, 6, 4, 2, 0
}

Type System

Primitive Types

  • String
  • Integer
  • Decimal
  • Boolean

Advanced Types

  • Arrays: Type<>
  • Custom types
  • Interface types

Unique Language Constructs

Dot Notation Methods

  • All objects have built-in methods
  • Chainable method calls
  • Explicit operations
my.text.set("Hello")
    .concat(" World")
    .length();

Object Lifecycle

  • Explicit constructors: on_create
  • Explicit destructors: on_destroy

Planned Features

  • Enhanced concurrency support
  • Expanded standard library
  • Advanced module system

Installation

Detailed installation instructions will be added as the language develops

Contribution

Interested in contributing to Waddle?

  • Report issues on this repository
  • Submit pull requests
  • Provide feedback and suggestions

License

Read the LICENSE.md file

Current Status

Waddle is currently in active development. The language specification and implementation are evolving.