A strongly typed programming language created by Funky Waddle and Team.
Go to file
Funky Waddle 2a74e5d5b6 Add README.md
Signed-off-by: funkywaddle <paul@funkywaddle.com>
2025-11-24 05:47:03 +00:00
core Add loop syntax. Add attempt/error (try/catch) 2025-11-23 23:27:23 -06:00
docs initial commit. 2025-11-23 00:58:46 -06:00
examples initial commit. 2025-11-23 00:58:46 -06:00
tests initial commit. 2025-11-23 00:58:46 -06:00
LICENSE.md Add LICENSE.md 2025-11-23 06:40:56 +00:00
README.md Add README.md 2025-11-24 05:47:03 +00:00

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.