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

-