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 |
- |