This document attempts to collect all aspects of a language (by some opinionated partitioning). The number of issues is becoming significant, and we need to know what we need to work on to actually get somewhere. Feel free to add aspects that are currently left out.
Legend:
- 🟢 - well-designed
- 🟡 - a lot of work is still required, but first steps are made
- 🔴 - hasn't been considered yet
- 🟢 Variables
- basic structure proposed in proposal 0.1
- The val and var issue
- Specification in RFC0001 for both global and local variables
- 🟡 Functions/methods
- 🟢 Free functions
- Proposed in proposal 0.1
- Specification in RFC0001
- 🟡 Member functions
- Proposed in the issue about record types
- 🟢 Main Function
- Proposed in Main function signatures issue
- Specification in RFC0004 and RFC0013
- 🟢 Free functions
- 🟡 Control structures
- 🟢 If-else
- Proposed in proposal 0.1
- Specification in RFC0001
- 🟢 While-loop
- Proposed in proposal 0.1
- Specification in RFC0001
- 🟡 For-loop
- Proposed in proposal 0.2
- 🟡 Match
- Proposed in the pattern matching issue
- 🟢 Goto
- Proposed in the goto and implicit loop labels issue
- Specification in RFC0001
- 🟢 Break/continue in loops
- Proposed in the goto and implicit loop labels issue as specialized labels
- Specification in RFC0001
- 🟡 Let ... in construct
- 🟢 If-else
- 🟢Literal values
- Proposal in the literal values issue
- String interpolation issue
- Specification for string literals in RFC0005
- Specification for primitive literals in RFC0002
- 🟡 Operators
- Basic, built-in operators proposed in proposal 0.1
- Exponential operator
- Implies operator
- Inequality syntax
- Colon as tuple construction
- User-defined operators
- Specification for basic operators in RFC0002
- 🟡 Exceptions, throwing, catching
- 🟢 Modules
- Issue about declarations and definitions
- The module system issue
- Specification for module system in RFC0011
- 🟡 Built-in primitives
- Many are proposed in proposal 0.1
- There are quite a few left out, never mentioned (like interop primitives)
- Specification in RFC0002
- 🟡 Record types
- Proposal about the basics of record types
- 🟡 Discriminated unions
- 🟡 Traits
- Proposal
- Internals
- Very much related and strong hints are in the record types issue
- 🟡 Properties
- Issue about possibilities, possible syntaxes for properties
- 🟡 Type-inference
- Overview is in the proposal 0.2
- There is the type inference issue
- The initial inference issue
- 🟢 Overloading
- Overview is in the proposal 0.2
- Specification for overloading in RFC0010 and RFC0012
- 🟡 Generics
- For methods, mentioned in proposal 0.2
- For methods specification in RFC0012
- For types, nothing is mentioned yet
- 🟡 Nullability
- The issue about erasable nullables
- 🔴 Casting
- Not mentioned anywhere yet
- 🔴 Asynchronous programming
- Not mentioned anywhere yet
- 🔴 Generators
- Not mentioned anywhere yet
- 🟡 Pattern matching
- Proposed in the pattern matching issue
- Case-exclusion issue
- 🟡 Lambda functions
- Discussed in the lambdas issue
- 🟡 Attributes
- Briefly mentioned in the metaprogramming issue
- Nothing exact proposed yet
- 🟡 Derive-metchanism
- Briefly mentioned in the metaprogramming issue
- Nothing exact proposed yet
- 🟡 Macro-system
- Possibilities outlined in the metaprogramming issue
- A slightly more detailed "wish-list" for capabilities in the F# CEs expressed as higher-order macros issue
- 🟢 Documentation
- Documentation comments issue
- Specifications in RFC0009
- 🟡 Enforcing TCO