SETL es un lenguaje de programación de muy alto nivel basado en la teoría matemática de conjuntos . Originalmente se desarrolló cerca de Jacob T. Schwartz (en) en el Instituto Courant de Ciencias Matemáticas de la Universidad de Nueva York . Existe una variante llamada ISETL (del inglés Interactive SET Language ) que permite la programación en conjuntos matemáticos .
SETL proporciona dos tipos básicos de datos: conjuntos y secuencias desordenados (también llamados tuplas ). Los elementos de conjuntos y tuplas pueden ser de cualquier tipo arbitrario, incluidos los propios conjuntos y tuplas. Las funciones se proporcionan como conjuntos de pares (es decir, d., Tuplas de longitud 2) y pueden tener campos y codominios de tipos arbitrarios. Las operaciones primitivas en SETL incluyen, entre otras, pertenencia al conjunto, unión, intersección y poder de conjuntos. SETL permite expresar expresiones booleanas cuantificadas construidas utilizando el cálculo de predicados de primer orden, cuantificadores universales y cuantificadores existenciales . SETL también proporciona varios iteradores para producir varios bucles en estructuras de datos.
Devuelve todos los números primos menores que n:
NbPremiers := func(n); return {x: x in {2..n} | forall y in {2..x-1} | x mod y /=0}; end; NbPremiers(100);La puntuación es similar a la comprensión de listas .
ABC , el precursor de Python , se inspiró en SETL para Lambert Meertens , quien pasó un año con el grupo SETL en NYU antes de crear la versión final de ABC.