SETL
# SETL

SETL é uma linguagem de programação de "altíssimo nível", baseada na teoria matemática de conjuntos. Foi originalmente desenvolvida por Jacob Theodore Schwartz no Courant Institute of Mathematical Sciences na NYU no fim dos anos 1960.
SETL fornece dois tipos básicos de dados agregados: conjuntos não-ordenados, e sequências (este último também chamado de tuplas). Os elementos dos conjuntos e tuplas podem ser de qualquer tipo arbitrário, incluindo conjuntos e tuplas eles mesmos. Mapeamentos (Maps) são fornecidos como conjuntos de pares (ou seja, tuplas de dimensão 2) e podem ter domínio arbitrário e tipos de intervalos arbitrários. Operações primitivas em SETL incluem pertinência de conjuntos, união, interseção e construção de conjuntos de potência, entre outras.
A linguagem SETL fornece expressões booleanas quantificadas construídas utilizando-se quantificadores universais e quantificadores existênciais da lógica de primeira ordem.
A linguagem SETL fornece diversos iterators para produzir uma variedade de laços sobre estruturas de dados agregados.
Na década de 1970, SETL foi portada para o BESM-6, ES EVM e outros sistemas de informática russos.
David Bacon, que antes era um estudante de PhD na NYU com Jack Schwartz ainda mantém ativamente o compilador SETL e seu website.

## Exemplo de código

Imprime todos os números primos de 2 to N:
A notação é semelhante a de uma List comprehension.
A definição do procedimento fatorial:
Uma expressão mais convencional em SETL para fatoriais em que (n > 0):