Flix (programming language): Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Alter: journal. Add: series, arxiv, s2cid, isbn. | You can use this bot yourself. Report bugs here. | Suggested by Ost316 | Category:AfC pending submissions by age/4 days ago‎ | via #UCB_Category
FrescoBot (talk | contribs)
m Bot: link syntax and minor changes
Line 32:
The Flix compiler disallows most forms of unused or redundant code, including: unused local variables, unused functions, unused formal parameters, unused type parameters, and unused type declarations, such unused constructs are reported as compiler errors<ref>{{cite web |title=Redundancies as Compile-Time Errors |url=https://flix.dev/blog/redundancies-as-compile-time-errors/ |website=flix.dev}}</ref>. [[Variable shadowing]] is also disallowed. The stated rationale is that unused or redundant code is often correlated with erroneous code<ref>{{cite journal |last1=Engler |first1=D. |title=Using redundancies to find errors |journal=IEEE Transactions on Software Engineering |date=October 2003 |volume=29 |issue=10 |pages=915–928 |doi=10.1109/TSE.2003.1237172}}</ref>.
 
A [[Visual_Studio_Code|Visual Studio Code]] extension for Flix is available<ref>{{cite web |title=flix - Visual Studio Marketplace |url=https://marketplace.visualstudio.com/items?itemName=flix.flix |website=marketplace.visualstudio.com |language=en-us}}</ref>. The extension is based on the [[Language_Server_Protocol|Language Server Protocol]], a common interface between [[Integrated_development_environment|IDEs]] and [[compilers]] being developed by [[Microsoft]].
 
Flix is [[Open-source_software|open source software]] available under the [[Apache_License|Apache 2.0 License]].
Line 144:
</syntaxhighlight>
 
A higher-order function can specify that a function argument must be pure, impure, or that it is effect polymorphic.
 
For example, the definition of <code>Set.exists</code> requires that its function argument <code>f</code> is pure:
Line 348:
 
* [[Expression-oriented_programming_language|Everything is an expression]]. Most Flix constructs, except for top-level declarations, are expressions that evaluate to values.
* [[Closed-world_assumption|Closed-world assumption]]. The Flix compiler assumes that the source code of the entire program is available at compile-time.
* Pure and impure code is separated. The type and effect system precisely captures whether an expression may produce an effect<ref>{{cite web |title=Taming Impurity with Polymorphic Effects |url=https://flix.dev/blog/taming-impurity-with-polymorphic-effects/ |website=flix.dev}}</ref>.
* The language has no compile-time warnings, only errors.