<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://50.77.162.165/mediawiki/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://50.77.162.165/mediawiki/index.php?action=history&amp;feed=atom&amp;title=ExitFunction</id>
		<title>ExitFunction - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://50.77.162.165/mediawiki/index.php?action=history&amp;feed=atom&amp;title=ExitFunction"/>
		<link rel="alternate" type="text/html" href="http://50.77.162.165/mediawiki/index.php?title=ExitFunction&amp;action=history"/>
		<updated>2026-04-19T17:56:10Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.15.5-7</generator>

	<entry>
		<id>http://50.77.162.165/mediawiki/index.php?title=ExitFunction&amp;diff=1670&amp;oldid=prev</id>
		<title>Kevin Reid:&amp;#32;more categories</title>
		<link rel="alternate" type="text/html" href="http://50.77.162.165/mediawiki/index.php?title=ExitFunction&amp;diff=1670&amp;oldid=prev"/>
				<updated>2008-07-02T02:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;more categories&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Currently hypothetical as a [[guard]] and [[auditor]]. [[Ejector]]s and [[throw]] are existing examples of ExitFunctions.&lt;br /&gt;
&lt;br /&gt;
An [[ExitFunction]] is an object whose run/1 [[method]] does not [[return]], and has no [[side effects]] before it [[exit]]s. That is, calling an ExitFunction's run/1 cannot be [[plan interference]].&lt;br /&gt;
&lt;br /&gt;
In the below example, it is guaranteed that &amp;lt;code&amp;gt;println(&amp;quot;okay&amp;quot;)&amp;lt;/code&amp;gt; will happen before any effects specific to &amp;lt;var&amp;gt;ef&amp;lt;/var&amp;gt; occur, and that &amp;lt;code&amp;gt;println(&amp;quot;oops&amp;quot;)&amp;lt;/code&amp;gt; will not happen.&lt;br /&gt;
&lt;br /&gt;
 def example(ef :ExitFunction) {&lt;br /&gt;
     try {&lt;br /&gt;
         ef(&amp;quot;boo&amp;quot;)&lt;br /&gt;
     } finally {&lt;br /&gt;
         println(&amp;quot;okay&amp;quot;)&lt;br /&gt;
     }&lt;br /&gt;
     println(&amp;quot;oops&amp;quot;)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
[[User:Kevin Reid]] proposes that parameters which are expected to be [[ejector]]s should be guarded by ExitFunction instead of [[OneArgFunc]], except where the programmer has considered the possibility of [[plan interference]].&lt;br /&gt;
&lt;br /&gt;
See also [[Non-optional ejectors]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Guards]]&lt;br /&gt;
[[Category:Reference properties]]&lt;br /&gt;
[[Category:Unresolved design issues]]&lt;br /&gt;
[[Category:Protocols]]&lt;br /&gt;
[[Category:Message run/1]]&lt;/div&gt;</summary>
		<author><name>Kevin Reid</name></author>	</entry>

	<entry>
		<id>http://50.77.162.165/mediawiki/index.php?title=ExitFunction&amp;diff=3592&amp;oldid=prev</id>
		<title>Kevin Reid at 19:26, 20 June 2008</title>
		<link rel="alternate" type="text/html" href="http://50.77.162.165/mediawiki/index.php?title=ExitFunction&amp;diff=3592&amp;oldid=prev"/>
				<updated>2008-06-20T19:26:58Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:26, 20 June 2008&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Reference properties]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Reference properties]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Unresolved design issues]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Unresolved design issues]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Protocols]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Message run/1]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-19 17:56:10 --&gt;
&lt;/table&gt;</summary>
		<author><name>Kevin Reid</name></author>	</entry>

	</feed>