Flix



Website: flix.dev


Flix este un limbaj de programare funcțional, imperativ și logic dezvoltat la Universitatea Aarhus, cu finanțare din partea fondului de cercetare independent Danemarca și de o comunitate de contribuabili cu sursă open.

Limbajul Flix acceptă tipuri de date algebrice, potrivirea modelului, polimorfism parametric, currying, funcții de ordin superior, înregistrări extensibile, concurență bazată pe canal și procese și eliminarea apelurilor de coadă.

Două caracteristici notabile ale FLIX sunt sistemul său de tip și efecte și suportul său pentru constrângerile Datalog de primă clasă.

Sistemul de tip Flix și efectele acceptă inferența de tip Hindley-Milner în stil.

Sistemul separă codul pur și impur: dacă o expresie este tastată ca fiind pură, atunci nu poate produce un efect în timpul rulării.

Funcțiile de ordin superior pot aplica dacă li se oferă argumente de funcții pure (sau impure).

Sistemul de tip și efect susține polimorfismul cu efect, ceea ce înseamnă că efectul unei funcții de ordin superior poate depinde de efectul (efectele) argumentelor sale.

FLIX acceptă programele Datalog ca valori de primă clasă.

O valoare a programului Datalog, adică o colecție de fapte și reguli Datalog, poate fi transmisă și returnată din funcții, stocate în structuri de date și compusă cu alte valori ale programului Datalog.

Modelul minim al valorii programului Datalog poate fi calculat și este el însuși o valoare a programului Datalog.

În acest fel, Flix poate fi vizualizat ca un limbaj meta de programare pentru Datalog.

FLIX acceptă negația stratificată, iar compilatorul Flix asigură stratificarea în timp de compilare.

Flix acceptă, de asemenea, o formă îmbogățită de constrângeri Datalog în care predicatele li se oferă semantică de zăbrele.