Merge branch 'master' of repos.qualitycoder.net:funkywaddle/Waddle_Language
This commit is contained in:
commit
760ae5ffc1
199
README.md
Normal file
199
README.md
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
# 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
|
||||
```waddle
|
||||
Animal {
|
||||
// Type implementation
|
||||
}
|
||||
```
|
||||
#### Inheritance
|
||||
```waddle
|
||||
Animal/Dog {
|
||||
// Dog-specific implementations
|
||||
}
|
||||
```
|
||||
|
||||
#### Interface definition
|
||||
```waddle
|
||||
@Mammal {
|
||||
// Interface methods
|
||||
}
|
||||
```
|
||||
|
||||
#### Interface implementation
|
||||
```waddle
|
||||
Animal/Dog -> [Mammal, Domesticated] {
|
||||
// Multiple interface support
|
||||
}
|
||||
```
|
||||
|
||||
### Functions
|
||||
|
||||
#### Function declaration
|
||||
|
||||
##### Public function
|
||||
```waddle
|
||||
+fn calculateArea(width: Integer, height: Integer) -> [Decimal] {
|
||||
rtn width.multiply(height);
|
||||
}
|
||||
```
|
||||
|
||||
##### Protected Function
|
||||
```waddle
|
||||
fn calculateArea(width: Integer, height: Integer) -> [Decimal] {
|
||||
rtn width.multiply(height);
|
||||
}
|
||||
```
|
||||
|
||||
##### Private Function
|
||||
```waddle
|
||||
-fn calculateArea(width: Integer, height: Integer) -> [Decimal] {
|
||||
rtn width.multiply(height);
|
||||
}
|
||||
```
|
||||
|
||||
##### Lambda expression
|
||||
```waddle
|
||||
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
|
||||
|
||||
#### Forward iteration
|
||||
```waddle
|
||||
loop(i, 0->10) {
|
||||
my.output.print(i);
|
||||
}
|
||||
```
|
||||
|
||||
#### Foward iteration, with step
|
||||
```waddle
|
||||
loop(i, 0->10, 2) {
|
||||
my.output.print(i); // outputs 0, 2, 4, 6, 8, 10
|
||||
}
|
||||
```
|
||||
|
||||
#### Reverse iteration
|
||||
```waddle
|
||||
rloop(i, 10->0) {
|
||||
my.output.print(i);
|
||||
}
|
||||
```
|
||||
|
||||
#### Reverse iteration, with step
|
||||
```waddle
|
||||
rloop(i, 10->0, 2) {
|
||||
my.output.print(i); // outputs 10, 8, 6, 4, 2, 0
|
||||
}
|
||||
```
|
||||
|
||||
#### Foreach loop on arrays
|
||||
```waddle
|
||||
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
|
||||
|
||||
```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.
|
||||
Loading…
Reference in a new issue