|
|
||
|---|---|---|
| core | ||
| docs | ||
| examples | ||
| tests | ||
| LICENSE.md | ||
| README.md | ||
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
StringIntegerDecimalBoolean
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.