# Language map
You can learn Shelly in layers. The shell layer handles commands and their I/O;
the value layer handles data; the application layer supplies interfaces and
modules. A script can use all three without changing languages.
## Foundations
- [Language basics](Language-Basics): statements, comments, quoting, and grouping.
- [Variables and scope](Variables-and-Scope): declarations, assignment, shadowing,
caller scope, and captured bindings.
- [Numbers and logic](Numbers-and-Logic): numeric promotion, arithmetic, equality,
ordering, truthiness, and short-circuit evaluation.
- [Strings and paths](Strings-and-Paths): Unicode text, interpolation, slices,
home-directory display, and file patterns.
## Collections and decisions
- [Arrays](Arrays): element contracts, slices, copying, spread, and stack methods.
- [Hash maps](Hash-Maps): typed keys and values, lookup, and pairs.
- [Ranges and iteration](Ranges-and-Iteration): bounded and open ranges, snapshots,
and the `next_item` protocol.
- [Control flow](Control-Flow): `if`, `for`, `while`, `until`, and loop transfers.
- [Match and type guards](Match-and-Type-Guards): value/range cases and narrowing.
## Program structure
- [Functions and calls](Functions-and-Calls): argument positions, results,
executable references, aliases, and versioned definitions.
- [Closures and function types](Closures-and-Function-Types): live captures,
callbacks, prototypes, and optional arguments.
- [Methods and properties](Methods-and-Properties): live `$self`, getters,
setters, dynamic member names, and receiver-dependent contracts.
- [Structs](Structs), [Enums](Enums), [Named types and unions](Named-Types-and-Unions).
- [Conversions](Conversions): explicit conversion and source/target hooks.
- [Reflection](Reflection): runtime types and discoverable interfaces.
## Shell execution and composition
- [Pipelines](Pipelines) and [Pipeline formats](Pipeline-Formats).
- [Pipeline splits](Pipeline-Splits): nested branches, required alignment guides,
streaming fan-out, and portable tab settings.
- [Commands and exit status](Commands-and-Exit-Status).
- [Redirection](Redirection) and [Environment](Environment).
- [Errors and cleanup](Errors-and-Cleanup).
## Modules and libraries
- [Modules](Modules), [Module packages](Module-Packages), and
[Conditional code](Conditional-Code).
- [Standard library](Standard-Library) and [Prelude](Prelude).
- [Bytes and I/O](Bytes-and-IO), [Item streams](Item-Streams), [JSON](JSON).
- [Networking](Networking), [HTTP](HTTP), [HTTP servers](HTTP-Servers),
[Framing and RPC](Framing-and-RPC).
## Interactive tools
- [Startup and library selection](Startup-and-Standard-Library).
- [REPL and history](REPL-and-History), [Prompts and widgets](Prompts-and-Widgets).
- [Terminal formatting](Terminal-Formatting), [Line editing](Line-Editing),
[Editor integration](Editor-Integration).
[Recipes](Recipes) combines topics into small programs. The
[syntax reference](Syntax-Reference) is a compact reminder once the concepts are
familiar.
---
Related: [Home](Home) ยท [Syntax reference](Syntax-Reference)