An executable algorithmic language. The algorithms are executed over abstract data types like arrays, structures, cons lists (viewed as abstractions of simple linked lists).