Content deleted Content added
No edit summary |
|||
Line 14:
'''Flix''' is a [[functional programming|functional]], [[imperative programming|imperative]], and [[logic programming|logic]] [[programming language]] developed at [[Aarhus University]] with funding from the [[Danish_Council_for_Independent_Research|Independent Research Fund Denmark]]<ref>{{cite web |title=Forskningsprojekter |url=https://dff.dk/forskningsprojekter?SearchableText=functional+and+declarative+logic+programming&period%3Alist=all&instrument%3Alist=all&filed_method%3Alist=all |website=Danmarks Frie Forskningsfond |language=da}}</ref> and by a community of [[open source]] contributors. Flix supports [[algebraic data types]], [[pattern matching]], [[parametric polymorphism]], [[currying]], [[higher-order functions]], [[extensible records]]<ref>{{cite journal |last1=Leijen |first1=Daan |title=Extensible records with scoped labels |journal=Trends in Functional Programming}}</ref>, [[Communicating_sequential_processes|channel and process-based concurrency]], and [[tail call elimination]].
Flix supports [[Datalog]] constraints as first-class values entities. A Datalog constraint set, i.e. a set of Datalog facts and rules, can be passed to and returned from functions, stored in data structures, and composed with other Datalog constraint sets. The [[minimal model]] of a Datalog constraint set can be computed which is itself another Datalog constraint set. In this way, Flix can be used as a statically-typed meta-programming language for Datalog where Datalog programs are constructed and solved at run-time. Flix also supports [[stratified negation]] and its type system ensures that such programs are stratified at compile-time.
The Flix type and effect system supports [[Hindley–Milner_type_system|Hindley-Milner]]-style type inference.
== Features ==
|