Welcome to Claro!
User Guide
1.
Hello, World
2.
Getting Started!
2.1.
Understanding the Starter Project
2.2.
Your First Program
2.3.
Intro to Modules
Reference Guide
3.
Common Programming Concepts
3.1.
Variables & Primitive Types
3.2.
Separate Variable Declaration & Initialization
3.3.
Variable Reassignment
3.4.
String Formatting
3.5.
Control Flow
3.5.1.
If-Else
3.5.2.
While
3.5.3.
For
3.5.4.
Repeat
3.5.5.
Pipes
3.5.6.
Pattern Matching
3.5.6.1.
Matching Structured Data
3.5.6.2.
Wildcard Patterns
3.5.6.3.
Static Exhaustiveness Checks
3.5.7.
Collection Comprehension
3.5.7.1.
Comprehension is More Than Syntax Sugar
4.
Types
4.1.
Builtin Collections
4.1.1.
Lists
4.1.2.
Sets
4.1.3.
Maps
4.1.4.
Tuples
4.1.5.
Structs
4.2.
Oneofs
4.2.1.
"Narrowing" / Type Guards
4.3.
Atoms
4.4.
Aliases
4.4.1.
Aliases are Not a New Type Declaration
4.5.
User Defined Types
4.5.1.
Parameterized Types
4.5.1.1.
Concrete Type Inference
4.5.2.
Recursive Types
4.5.2.1.
Impossible Recursive Types
5.
Type Inference
5.1.
Required Type Annotations
6.
Procedures
6.1.
Functions
6.2.
Consumers
6.3.
Providers
7.
Lambdas & First Class Procedures
7.1.
Lambdas are Restricted "Closures"
8.
Error Handling
8.1.
Error Propagation
9.
Generics
9.1.
Contracts
9.1.1.
Implementing a Contract
9.1.2.
Multiple Type Params
9.1.2.1.
(Advanced) Implied Types
9.1.3.
Dynamic Dispatch
9.2.
Generic Return Type Inference
10.
Copying Data
10.1.
Mutability Coercion on Copy
10.2.
Performance Optimizations
10.3.
Known Copy Bugs
11.
Resource Files
12.
Module System
12.1.
Module APIs
12.1.1.
Procedure Signatures
12.1.2.
Type & Alias Definitions
12.1.2.1.
Initializers
12.1.2.2.
Unwrappers
12.1.2.3.
Opaque Types
12.1.3.
Static Values
12.1.3.1.
Flags
12.1.4.
HTTP Services
12.2.
Visibility
12.3.
Swapping Dependencies
13.
Concurrency
13.1.
Graph Procedures
13.2.
Graph Procedure Composition
13.3.
Calling Graph Procedures
13.4.
(Advanced) Conditional Subgraph Execution
14.
Fearless Concurrency
14.1.
Guaranteed Data-Race-Free Concurrency
14.2.
Guaranteed Deadlock-Free Concurrency
14.2.1.
Blocking Procedures
14.2.2.
Re: "What Color is Your Function?"
14.2.3.
(Advanced) Blocking Generics
15.
Basic HTTP Servers
16.
JSON Parsing
17.
Build Time Metaprogramming
17.1.
Source Code Templates
17.2.
(Literal) Code Reuse
17.2.1.
Reusing Module APIs
17.2.2.
Reusing Source Code
17.2.3.
Abstract Modules
StdLib
18.
Default Modules
18.1.
booleans
18.2.
deque
18.3.
doubles
18.4.
files
18.5.
floats
18.6.
futures
18.7.
fp
18.8.
ints
18.9.
lists
18.10.
longs
18.11.
maps
18.12.
math
18.13.
priority_queue
18.14.
random
18.15.
scanner
18.16.
sets
18.17.
std
18.18.
strings
18.19.
string_builder
Light
Rust
Coal
Navy
Ayu
The Claro Programming Language (DRAFT)
Common Programming Concepts