diff --git a/README.md b/README.md new file mode 100644 index 0000000..2864bb9 --- /dev/null +++ b/README.md @@ -0,0 +1,165 @@ +# 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 +```waddle +// 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 +```waddle +// 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 +```waddle +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 +```waddle +// 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 + +```waddle +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. \ No newline at end of file