<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=Expression-oriented_programming_language</id>
	<title>Expression-oriented programming language - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=Expression-oriented_programming_language"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Expression-oriented_programming_language&amp;action=history"/>
	<updated>2026-06-23T19:35:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=Expression-oriented_programming_language&amp;diff=561444&amp;oldid=prev</id>
		<title>imported&gt;QuantumNinus: biased user reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Expression-oriented_programming_language&amp;diff=561444&amp;oldid=prev"/>
		<updated>2025-09-25T19:16:59Z</updated>

		<summary type="html">&lt;p&gt;biased user reference&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Notability|date=July 2022}}&lt;br /&gt;
&lt;br /&gt;
An &amp;#039;&amp;#039;&amp;#039;expression-oriented programming language&amp;#039;&amp;#039;&amp;#039; is a [[programming language]] in which every (or nearly every) construction is an [[Expression (computer science)|expression]] and thus yields a value.&amp;lt;ref&amp;gt;{{Cite web |title=Glossary - The Rust Programming Language |url=https://web.mit.edu/rust-lang_v1.25/arch/amd64_ubuntu1404/share/doc/rust/html/book/first-edition/glossary.html#expression-oriented-language |access-date=2022-07-06 |website=web.mit.edu}}&amp;lt;/ref&amp;gt;  The typical exceptions are [[Macro (computer science)|macro]] definitions, [[preprocessor]] commands, and [[Declaration (computer programming)|declarations]], which expression-oriented languages often treat as [[Statement (computer science)|statements]].&lt;br /&gt;
&lt;br /&gt;
[[Lisp (programming language)|Lisp]]&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Cite journal |last1=Syme |first1=Don |date=2020-06-14 |title=The early history of F# |journal=Proceedings of the ACM on Programming Languages |language=en |volume=4 |issue=HOPL |pages=1–58 |doi=10.1145/3386325 |issn=2475-1421 |doi-access=free}}&amp;lt;/ref&amp;gt; and [[ALGOL 68]] are expression-oriented languages. [[Pascal (programming language)|Pascal]] is not an expression-oriented language.&lt;br /&gt;
&lt;br /&gt;
All [[functional programming]] languages are expression-oriented.&lt;br /&gt;
&lt;br /&gt;
==Criticism and prevention==&lt;br /&gt;
{{Synthesis|date=July 2022}}&lt;br /&gt;
{{See also|Assignment (computer science)#Assignment versus equality|Relational operator#Confusion with assignment operators}}&lt;br /&gt;
Critics, including language designers,&amp;lt;ref&amp;gt;[https://www.oracle.com/java/technologies/javase/codeconventions-programmingpractices.html#547 Java Code Conventions &amp;quot;10.4 Variable Assignments&amp;quot;]&amp;lt;/ref&amp;gt;{{Failed verification|date=July 2022}} blame expression-orientation for an entire class of [[software bug|programming mistakes]] wherein a programmer accidentally codes an [[Assignment (computer science)|assignment]] &amp;#039;&amp;#039;expression&amp;#039;&amp;#039;, which replaces a variable with an expression rather than testing it for [[Equality (relational operator)|equality]] with that expression.&lt;br /&gt;
&lt;br /&gt;
The designers of [[Ada (programming language)|Ada]] and [[Java (programming language)|Java]] prevent this type of mistake by restricting [[Conditional (computer programming)|control expressions]] to those that evaluate strictly to the [[boolean data type]].&amp;lt;ref&amp;gt;[https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.9 The Java Language Specification, Java SE 8 Edition &amp;quot;14.9 The if Statement&amp;quot;]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[https://www.adaic.org/learn/materials/intro/part4/ Introducing Ada]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The designers of [[Python (programming language)|Python]] implemented assignment as a statement rather than an expression, thus prohibiting assignment from nesting inside any other statement or expression.&amp;lt;ref&amp;gt;[https://docs.python.org/3/reference/simple_stmts.html#assignment The Python Language Reference &amp;quot;6.2. Assignment statements&amp;quot;]&amp;lt;/ref&amp;gt; (Until version 3.8 added &amp;#039;assignment expressions&amp;#039;, with a different syntax.&amp;lt;ref&amp;gt;[https://www.python.org/dev/peps/pep-0572/ &amp;quot;PEP 572: Assignment Expressions&amp;quot;]&amp;lt;/ref&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
In some expression-oriented languages, expressions that merely cause [[side effect (computer science)|side effects]] return [[void type]]s.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
{{More citations needed|date=July 2022}}&lt;br /&gt;
{{Expand section|date=February 2018}}&lt;br /&gt;
*[[ALGOL 68]]&lt;br /&gt;
*[[BLISS]]&lt;br /&gt;
*[[Icon (programming language)|Icon]]&lt;br /&gt;
*[[Lisp (programming language)|Lisp]]&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
*[[ML (programming language)|ML]]&lt;br /&gt;
*[[Perl]]&lt;br /&gt;
*[[Rebol]]&lt;br /&gt;
*[[Ruby (programming language)|Ruby]]&lt;br /&gt;
*[[Elixir (programming language)|Elixir]]&lt;br /&gt;
*[[Erlang (programming language)|Erlang]]&lt;br /&gt;
*[[Haskell]]&lt;br /&gt;
*[[Rust (programming language)|Rust]]&amp;lt;ref&amp;gt;{{Cite web |title=Functions - The Rust Programming Language |url=https://web.mit.edu/rust-lang_v1.25/arch/amd64_ubuntu1404/share/doc/rust/html/book/first-edition/functions.html#expressions-vs-statements |access-date=2022-07-06 |website=web.mit.edu}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
*[[Scala (programming language)|Scala]]&lt;br /&gt;
*[[Smalltalk]]&lt;br /&gt;
*[[Kotlin (programming language)|Kotlin]]&lt;br /&gt;
*[[OCaml]]&amp;lt;ref&amp;gt;{{Cite web |title=COS 326: Functional Programming |url=https://www.cs.princeton.edu/~dpw/courses/cos326-12/notes/type-check.php |access-date=2022-07-06 |website=www.cs.princeton.edu}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;!-- *[[PHP]]&amp;lt;ref&amp;gt;[https://www.php.net/manual/en/language.expressions.php PHP Manual &amp;quot;Expressions&amp;quot;]&amp;lt;/ref&amp;gt; -- See talks. PHP manual saying something does not really mean that it is true =( --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Command–query separation]]&lt;br /&gt;
*[[Functional programming]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
{{Programming paradigms navbox}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming language classification]]&lt;/div&gt;</summary>
		<author><name>imported&gt;QuantumNinus</name></author>
	</entry>
</feed>