A strongly typed programming language created by Funky Waddle and Team.
Go to file
2025-11-24 18:22:03 -06:00
compiler Redo the directory structure. Add a couple not-finished core modules. Add .gitignore 2025-11-24 17:17:20 -06:00
docs initial commit. 2025-11-23 00:58:46 -06:00
examples initial commit. 2025-11-23 00:58:46 -06:00
grammar Add expressed Boolean methods. Add explicit object instantiation syntax 2025-11-24 18:22:03 -06:00
lexicon Redo the directory structure. Add a couple not-finished core modules. Add .gitignore 2025-11-24 17:17:20 -06:00
runtime Redo the directory structure. Add a couple not-finished core modules. Add .gitignore 2025-11-24 17:17:20 -06:00
tests initial commit. 2025-11-23 00:58:46 -06:00
.gitignore Redo the directory structure. Add a couple not-finished core modules. Add .gitignore 2025-11-24 17:17:20 -06:00
LICENSE.md Add LICENSE.md 2025-11-23 06:40:56 +00:00
README.md Update README.md. Add array foreach example. Add better formatting. 2025-11-24 06:07:09 +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
}

Foreach loop on arrays

Integer<> nums.set(<1, 2, 3, 4>);

nums.each(
    i -> {
        if(i.mod(2).eq(0)){
            my.output.print(i); // outputs 2, 4
        }
    }
);

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.