WLTools: Language Specification¶
The purpose of this wiki is to rigorously describe Wolfram Language to assist authors of Wolfram Language tools and students of programming languages. Despite its widespread use in academia and industry, Wolfram Language has no formal specification. This website is an attempt to fix that. If you are looking for user documentation or a programming tutorial, you are in the wrong place.
Would you like to help construct a language specification for Wolfram Language? We invite contributions from anyone. It's as easy as clicking " Edit on GitHub" and writing some Markdown. A good place to start is the Contributing page.
Hit us up on...
- Slack Workspace: https://wolfr.am/y0c73dZg
- GitHub: https://github.com/WLTools Unfortunately, GitHub requires organization members to be "invited" by email or GitHub username, but I intend it to be open to anyone who wishes to participate. Hit us up on Slack.
Table of Contents¶
-
Language Specification
-
Syntax
- Primitives
- Strings
- Number representations
- Symbols (identifiers)
- Special character representations
- Operators
- Variadic forms
- Operators with a built-in meaning
- List of all operators with precedence, associativity, affix, and arity
- Two-dimensional "operators"
- FullForm (M-expressions)
- Pseudo-operators
- Formatting and whitespace
- Box sublanguage
- Issues and inconsistencies
- Precedence
- FullForm interpretation
- Nonexpression objects ("atomic functions")
- Bugs
-
Semantics
- Symbol properties
- OwnValues
- DownValues, UpValues
- DefaultValues
- Options
- Attributes
- Messages
- SubValues
- NValues
- FormatValues
- Scoping rules
- Scoping operators
- Contexts
- λ calculus semantics
- Packages
- Pattern matching
- Patterns
- Types of equality
- Options
- Evaluation
- Types
- Messages
- Homoiconicity
-
Standard Library
- Manipulating primitives and expressions
- "List" processing and functional programming
- Homoiconic functions
- Introspection
- Strings
- Numbers
- Control flow
- Controlling evaluation
- IO
- Mathematics
- Graphics
- UI
-
Typesetting
-
System and Environment
- Autoevaluating symbols
-
Interfaces
- Notebook
- REPL
- Applications
- WSTP
- WXF
-
-
Resources for implementors
- General advice for implementors
- Test suite derived from this wiki
- Implementing pattern matching
- Python
- Go
- ML-like languages
- Parsing strategies
- Functional language implementation
- WL code highlighters and editors
- Differences between the Mathematica command line and notebook frontend
This website and its authors are not affiliated with Wolfram LLC in any way.