Programming language design checklist
What does a programming language need? Here is a list of everything I could come up with, with no details.
Mostly in order:
- Basic datatypes
- Numbers
- Integer
- Float
- Boolean
- String
- Null
- Numbers
- Comments
- Single line
- Multiline
- Operators
-
+
,-
-
*
,/
,**
%
-
==
,!=
-
and
,or
(with short-circuiting) - bitwise operators:
&
,|
,~
,^
-
<
,>
,<=
,>=
-
- Variables
- Declaration
- (Re)assignment
- Referencing
- Conditionals
- If
- While
- Repeat-until
- For
- Continue, break
- Switch/case/when
- Goto (it has valid uses)
- Scoping
- Lexical scope
- Block statement
- Functions
- With parameters
- With return value
- Closures
- Anonymous functions
- Ruby-style blocks
- Named arguments
- Constants
- Garbage collection
- Structure types
- Struct
- Classes
- Methods
- Traits, mixins
- Accessors
- Inheritance (maybe)
- Equality and comparison
- Collection types
- Array/List
- Dictionary/Map/Hash
- Set
- Range
- Tuple
- Collection syntax/methods
- Iteration
- map/collect
- filter/select/reject
- fold/reduce/inject
- Native functions
- IO
- Write
- Read
- Formatted print
- IO
- Standard library
- ???
- IO
- Parsing
- JSON
- CSV
- …
- Further
- String interpolation
- Modules
- Testing
- Source code formatting
- Maybe
- List comprehensions
- Destructuring
- Pattern matching
- Concurrency
- Type system
- Extension methods
- Comptime
- Macros
- Build system
- Package manager
- LSP
- Code/test coverage
See also
- Language Checklist (Nicholas Yang)