<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ideawaza.com/index.php?action=history&amp;feed=atom&amp;title=Alma-0</id>
	<title>Alma-0 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ideawaza.com/index.php?action=history&amp;feed=atom&amp;title=Alma-0"/>
	<link rel="alternate" type="text/html" href="https://ideawaza.com/index.php?title=Alma-0&amp;action=history"/>
	<updated>2026-09-30T03:41:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://ideawaza.com/index.php?title=Alma-0&amp;diff=70218&amp;oldid=prev</id>
		<title>wikademia&gt;Eme: by http://en.wikipedia.org/w/index.php?title=Alma-0&amp;action=history</title>
		<link rel="alternate" type="text/html" href="https://ideawaza.com/index.php?title=Alma-0&amp;diff=70218&amp;oldid=prev"/>
		<updated>2011-02-26T07:41:07Z</updated>

		<summary type="html">&lt;p&gt;by http://en.wikipedia.org/w/index.php?title=Alma-0&amp;amp;action=history&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alma-0&amp;#039;&amp;#039;&amp;#039; is a [[multi-paradigm]] computer [[programming language]]. It is small, [[Strongly typed programming language|strongly typed]], and combines [[constraint programming]], a limited number of features inspired by [[logic programming]] and supports [[imperative (programming)|imperative]] [[programming paradigm|paradigms]]. The language advocates [[declarative programming]], the designers claim that search-oriented solutions built with it are substantially simpler than their counterparts written in purely imperative or logic programming style.{{Citation needed|date=February 2011}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Since the designers of Alma-0 wanted to create a distinct and substantially simpler proposal than previous attempts at integration of declarative programming constructs (such as [[automatic backtracking]]) into imperative programming, the design of Alma-0 was guided by the following four principles:&lt;br /&gt;
* the logic-based extension should be &amp;#039;&amp;#039;downward&amp;#039;&amp;#039; compatible with the underlying imperative programming language&lt;br /&gt;
* the logic-based extension should be &amp;#039;&amp;#039;upward&amp;#039;&amp;#039; compatible with a future extension that will support [[constraint programming]]&lt;br /&gt;
* the constructs that will implement the extension should support and encourage declarative programming.&lt;br /&gt;
* the extension should be kept small (nine new features have been proposed and implemented)&lt;br /&gt;
&lt;br /&gt;
Alma-0 can be viewed not only as a specific and concrete programming language proposal, but also as an example of a &amp;#039;&amp;#039;generic method&amp;#039;&amp;#039; for extending any imperative programming language with features that support declarative programming.&lt;br /&gt;
&lt;br /&gt;
The feasibility of the Alma-0 approach has been demonstrated through a full implementation of the language (including a description of its semantics) for a subset of [[Modula-2]].&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
The implemented features in Alma-0 include:&lt;br /&gt;
*use of boolean expressions as statements and vice versa&lt;br /&gt;
*a dual for the &amp;lt;code&amp;gt;FOR&amp;lt;/code&amp;gt; statement that introduces non-determinism in the form of &amp;#039;&amp;#039;choice points&amp;#039;&amp;#039; and &amp;#039;&amp;#039;backtracking&amp;#039;&amp;#039;&lt;br /&gt;
*a &amp;lt;code&amp;gt;FORALL&amp;lt;/code&amp;gt; statement that introduces a controlled form of iteration over the backtracking&lt;br /&gt;
*[[unification (computing)|unification]] which, although limited to the use of equality as assignment, yields a new [[Parameter (computer science)|parameter-passing]] mechanism.&lt;br /&gt;
&lt;br /&gt;
==Imperative and logic programming modes==&lt;br /&gt;
The Alma-0 designers claim that the assignment, which is usually shunned in pure declarative and logic programming, is actually needed in a number of natural situations, including for counting and recording purposes. They also affirm that the means of expression of such &amp;quot;natural&amp;quot; uses of assignment within the logic programming paradigm are unnatural.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://www.cwi.nl/en/alma/ Towards an Imperative Constraint Programming Language] Centrum Wiskunde &amp;amp; Informatica, CWI project home page&lt;br /&gt;
*[http://www.cwi.nl/alma Compiler] download&lt;br /&gt;
{{Use dmy dates|date=February 2011}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Procedural programming languages]]&lt;br /&gt;
[[Category:Logic programming languages]]&lt;br /&gt;
[[Category:Multi-paradigm programming languages]]&lt;/div&gt;</summary>
		<author><name>wikademia&gt;Eme</name></author>
	</entry>
</feed>