|
B = Built-in, L = library provided, - = none |
|
|
D |
|
|
Basic types |
|
|
Nil |
- |
|
Booleans |
B |
|
Integer types |
8 |
|
Floating point types |
3 |
|
Int vector (SIMD) types |
L |
|
FP vector (SIMD) types |
L |
|
Pointers |
B |
|
References |
B |
|
Non-null references |
- |
|
Complex types |
|
|
String types |
3 |
|
Arrays, constant size, destructive update |
B |
|
Arrays, variable size, destructive update |
B |
|
Hash tables |
B |
|
Trees |
L |
|
Queues |
L |
|
Stacks |
L |
|
Complex integer types |
B/L |
|
Complex floating point types |
B/L |
|
Arbitrary precision integers |
L |
|
Arbitrary precision floats |
L |
|
Enums |
B |
|
Structs |
B |
|
Records |
B |
|
Unsafe features |
|
|
Casts |
B |
|
Unions |
B |
|
Pointer arithmetic |
B |
|
Safety features |
|
|
Function contracts |
B |
|
Class contracts |
B |
|
Shallow mutability |
B |
|
Deep mutability |
B |
|
Functional types |
|
|
Pair |
L |
|
Sum type (variant) |
L |
|
Product type (tuple) |
L |
|
Algebraic types |
L |
|
Type classes |
- |
|
Monads |
L |
|
maybe |
L |
|
list |
L |
|
io |
L |
|
Functions |
B |
|
Object oriented types |
|
|
Classes |
B |
|
Objects |
B |
|
Interfaces |
B |
|
Traits |
- |
|
Single inheritance |
B |
|
Multiple inheritance |
- |
|
Singletons |
L |
|
Prototypes |
- |
|
Anonymous classes |
B |
|
Self types |
- |
|
Top type |
B (Object/void*) |
|
Bottom type |
- |
|
Single dispatch |
B |
|
Multiple dispatch |
- |
|
Type system features |
|
|
Manifest typing |
B |
|
Inferred typing |
B (partial) |
|
Dynamic typing |
- |
|
Static typing |
B |
|
Strong typing |
B (partial) |
|
Weak typing |
B (partial) |
|
Structural typing |
- |
|
Nominative typing |
B |
|
Duck typing |
- |
|
Dependent typing |
- |
|
tactics |
- |
|
proof terms |
- |
|
termination checking |
- |
|
can depend on any term |
- |
|
universes |
- |
|
proof irrelevance |
- |
|
program extraction |
- |
|
extraction erases irrelevant parts |
- |
|
Uniqueness typing |
- |
|
Linear typing |
- |
|
Polymorphism |
|
|
Parametric (rank-1) |
B |
|
Parametric (rank-k) |
- |
|
Parametric (rank-n) |
- |
|
Predicative |
- |
|
Impredicative |
- |
|
Bounded parametric |
- |
|
Subtype |
B |
|
Ad-hoc with early biding |
B |
|
Ad-hoc with late binding |
- |
|
Pattern matching |
|
|
Basic types |
B |
|
Algebraic types |
- |
|
Dynamic to static |
- |
|
Evaluation strategies |
|
|
Strict |
|
|
applicative |
- |
|
by value |
B |
|
by ref |
B |
|
by sharing |
- |
|
by copy-restore |
- |
|
partial |
- |
|
Non-strict |
|
|
normal |
- |
|
by name |
B |
|
by need |
- |
|
by macro expansion |
B |
|
hygienic macros |
- |
|
Full beta-reduction |
- |
|
Call by future |
L |
|
Optimistic |
- |