<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://eiffelroom.org">
<channel>
 <title>eiffelroom - Comments</title>
 <link>http://eiffelroom.org</link>
 <description>Comments</description>
 <language>en</language>
<feedburner:info uri="eiffelroom-comments" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://eiffelroom.org/crss.xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://eiffelroom.org/crss.xml" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Feiffelroom.org%2Fcrss.xml" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
 <title>UFOs</title>
 <link>http://eiffelroom.org/node/394#comment-800</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Alexander has clarified that ephemeral classes have no identity and no state.
&lt;/p&gt;&lt;p&gt;Maybe we could call instances of them UFOs: Unidentified Fleeting Objects.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Wed, 03 Mar 2010 18:31:31 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>peter_gummer</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 800 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>It is a connection between</title>
 <link>http://eiffelroom.org/node/395#comment-799</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/395"&gt;Formal Generics in ROUTINE, PROCEDURE, FUNCTION and PREDICATE&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;It is a connection between TYPE being generic and the SCOOP necessity to know the separate status of the target type. A new query was added to ROUTINE to get that type and the signature of that query was naturally &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;TYPE &lt;span style="color: #FF0000;"&gt;&amp;#91;&lt;/span&gt;BASE_TYPE&lt;span style="color: #FF0000;"&gt;&amp;#93;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;. If we did not have &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;BASE_TYPE&lt;/code&gt;&lt;/span&gt; then the only type we could give that query was &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;TYPE &lt;span style="color: #FF0000;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;detachable&lt;/span&gt; &lt;a href="http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+any&amp;amp;btnI=I%27m+Feeling+Lucky"&gt;&lt;span style="color: #800000"&gt;ANY&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #FF0000;"&gt;&amp;#93;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;.
&lt;/p&gt;&lt;p&gt;However I don't know about the current version of SCOOP and if this still applies.
&lt;/p&gt;&lt;p&gt;Others from the ECMA committee might remember another reason for &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;BASE_TYPE&lt;/code&gt;&lt;/span&gt;.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Tue, 02 Mar 2010 22:53:55 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>manus_eiffel</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 799 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>I once used it as a kind of</title>
 <link>http://eiffelroom.org/node/395#comment-798</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/395"&gt;Formal Generics in ROUTINE, PROCEDURE, FUNCTION and PREDICATE&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;I once used it as a kind of documentation. I created a deferred class with a function in it, and specified the contract of the function (it was intended as a call back) there. The idea was that the programmer, seeing a BASE_TYPE, would take a look at that class, and know what the contract of the call-back was supposed to be.
&lt;/p&gt;&lt;p&gt;This could only act as a hint. I was just trying to make some use of an otherwise useless construct.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Tue, 02 Mar 2010 21:11:16 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>colin-adams</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 798 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>Agreed</title>
 <link>http://eiffelroom.org/node/395#comment-797</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/395"&gt;Formal Generics in ROUTINE, PROCEDURE, FUNCTION and PREDICATE&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;I can attest that the BASE_TYPE generic is never used. I have never seen even one case where the base type was restricted to anything...
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Tue, 02 Mar 2010 20:34:18 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>zsimic</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 797 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>That's correct</title>
 <link>http://eiffelroom.org/node/394#comment-796</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;When this possibility is required, we can have 2 classes with the expanded one inheriting the reference:
&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; A_REF
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt;
	...
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;expanded&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; A &lt;span style="color: #0600FF; font-weight: bold;"&gt;inherit&lt;/span&gt; A_REF &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
Then the code from the example can be rewritten as
&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;a&lt;span style="color: #600000;"&gt;:&lt;/span&gt; A_REF
b&lt;span style="color: #600000;"&gt;:&lt;/span&gt; B
&amp;nbsp;
a &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; b&lt;/pre&gt;&lt;/div&gt;
Hopefully in practice this will not happen too often, because the idea is to detach any state and identity from an object - allowing the attachments like the above we preserve them instead.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Mon, 01 Mar 2010 22:42:43 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>alexk_es</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 796 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>There is one issue with</title>
 <link>http://eiffelroom.org/node/394#comment-795</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;There is one issue with having &lt;b&gt;expanded&lt;/b&gt; class without attributes being considered ephemeral it is the one of conformance. In the case of the ephemeral class &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;expanded&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; A&lt;/code&gt;&lt;/span&gt;, and having &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; B &lt;span style="color: #0600FF; font-weight: bold;"&gt;inherit&lt;/span&gt; A&lt;/code&gt;&lt;/span&gt;, you cannot write the following:
&lt;/p&gt;&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;a&lt;span style="color: #600000;"&gt;:&lt;/span&gt; A
b&lt;span style="color: #600000;"&gt;:&lt;/span&gt; B
&amp;nbsp;
a &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; b&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;&lt;p&gt;but I definitely agree that expanded classes without attributes fit the description of ephemeral classes.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Mon, 01 Mar 2010 15:52:00 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>manus_eiffel</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 795 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>Clarification</title>
 <link>http://eiffelroom.org/node/394#comment-794</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;I'd like to clarify the idea of the previous message. When we talk about objectless calls, we mean that out of the 3 properties associated with &lt;a href="http://en.wikipedia.org/wiki/Object_(computer_science)" class="external text" title="http://en.wikipedia.org/wiki/Object_(computer_science)"&gt;objects&lt;/a&gt;:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt; identity
&lt;/li&gt;&lt;li&gt; state
&lt;/li&gt;&lt;li&gt; behaviour
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;we need only one - behaviour. The other two should not be present for the calls to be safe as objectless. And this is what expanded classes without attributes provide: only behaviour without any identity or/and state. Therefore they can be used directly for the purpose raised by this topic:
&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;note&lt;/span&gt;
	identity&lt;span style="color: #600000;"&gt;:&lt;/span&gt; &lt;span style="color: #603000;"&gt;no&lt;/span&gt;
	state&lt;span style="color: #600000;"&gt;:&lt;/span&gt; &lt;span style="color: #603000;"&gt;no&lt;/span&gt;
	behaviour&lt;span style="color: #600000;"&gt;:&lt;/span&gt; &lt;span style="color: #603000;"&gt;yes&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;expanded&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; MATH_64
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Logarithm&lt;/span&gt;
	log2 &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;value&lt;span style="color: #600000;"&gt;:&lt;/span&gt; REAL_64&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #600000;"&gt;:&lt;/span&gt; REAL_64
			&lt;span style="color: #008000; font-style: italic;"&gt;-- Logarithm with base 2&lt;/span&gt;
		...
	&lt;span style="color: #000060;"&gt;ln&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;value&lt;span style="color: #600000;"&gt;:&lt;/span&gt; REAL_64&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #600000;"&gt;:&lt;/span&gt; REAL_64
			&lt;span style="color: #008000; font-style: italic;"&gt;-- Logarithm with base `e'&lt;/span&gt;
		...
	&lt;span style="color: #000060;"&gt;lg&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;value&lt;span style="color: #600000;"&gt;:&lt;/span&gt; REAL_64&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #600000;"&gt;:&lt;/span&gt; REAL_64
			&lt;span style="color: #008000; font-style: italic;"&gt;-- Logarithm with base 10&lt;/span&gt;
		...
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;&lt;p&gt;Free bonus: the objectless features can be used in unqualified calls (if inherited, including secret inheritance), qualified objectless calls and qualified object calls:
&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;inherit&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#123;&lt;/span&gt;&lt;a href="http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+none&amp;amp;btnI=I%27m+Feeling+Lucky"&gt;&lt;span style="color: #800000"&gt;NONE&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #FF0000;"&gt;&amp;#125;&lt;/span&gt; MATH_64 &lt;span style="color: #008000; font-style: italic;"&gt;-- Normal inheritance can be used as well if required&lt;/span&gt;
...
	&lt;span style="color: #000060;"&gt;m&lt;/span&gt;&lt;span style="color: #600000;"&gt;:&lt;/span&gt; MATH_64 &lt;span style="color: #008000; font-style: italic;"&gt;-- Can be declared if we want to avoid inheritance from MATH_64&lt;/span&gt;
...
	&lt;span style="color: #000060;"&gt;x&lt;/span&gt; &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; ln &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;y&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Unqualified call to inherited feature&lt;/span&gt;
	x &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#123;&lt;/span&gt;MATH_64&lt;span style="color: #FF0000;"&gt;&amp;#125;&lt;/span&gt;.&lt;span style="color: #000060;"&gt;ln&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;y&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Qualified objectless call&lt;/span&gt;
	x &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; m.&lt;span style="color: #000060;"&gt;ln&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;y&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Qualified object call (the object `m' is only to make the call, it's not used by itself)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Mon, 01 Mar 2010 02:06:51 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>alexk_es</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 794 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>It should not do any harm</title>
 <link>http://eiffelroom.org/node/394#comment-793</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;I believe it's OK to inherit and redefine features that are initially used as objectless. The issue is that they cannot be any longer used as objectless if the inheriting/redefining class does not ensure this property. But this does not break clients of the original objectless class, because the calls are not associated with any objects, they are bound to the class instead.
&lt;/p&gt;&lt;p&gt;(And if one wants to forbid such inheritance or redefinition, the class can be marked as frozen.)
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Mon, 01 Mar 2010 01:23:56 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>alexk_es</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 793 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>Shall we introduce new entities?</title>
 <link>http://eiffelroom.org/node/394#comment-792</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;It looks like I failed to highlight that apart from stateless property of a class that can be used for objectless calls the other one is lack of &lt;a href="http://en.wikipedia.org/wiki/Identity_(object-oriented_programming)" class="external text" title="http://en.wikipedia.org/wiki/Identity_(object-oriented_programming)"&gt;identity&lt;/a&gt;. Indeed stateless class still can be used to program an application with the behaviour that depends on the objects (the example is simplified, compared to real life, but should give an idea):
&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; TRAFFIC_LIGHT_COLOR
&lt;span style="color: #0600FF; font-weight: bold;"&gt;inherit&lt;/span&gt;
	&lt;a href="http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+any&amp;amp;btnI=I%27m+Feeling+Lucky"&gt;&lt;span style="color: #800000"&gt;ANY&lt;/span&gt;&lt;/a&gt;
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;redefine&lt;/span&gt;
			out
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#123;&lt;/span&gt;TRAFFIC_LIGHT&lt;span style="color: #FF0000;"&gt;&amp;#125;&lt;/span&gt;
	default_create
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Output&lt;/span&gt;
	out&lt;span style="color: #600000;"&gt;:&lt;/span&gt; &lt;a href="http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+string&amp;amp;btnI=I%27m+Feeling+Lucky"&gt;&lt;span style="color: #800000"&gt;STRING&lt;/span&gt;&lt;/a&gt;
			&lt;span style="color: #008000; font-style: italic;"&gt;-- &amp;lt;Precursor&amp;gt;&lt;/span&gt;
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;local&lt;/span&gt;
			controller&lt;span style="color: #600000;"&gt;:&lt;/span&gt; TRAFFIC_LIGHT
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt;
			&lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; controller
			&lt;span style="color: #0600FF; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #800080;"&gt;Current&lt;/span&gt; &lt;span style="color: #600000;"&gt;=&lt;/span&gt; controller.&lt;span style="color: #000060;"&gt;green&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;then&lt;/span&gt;
				&lt;span style="color: #800080;"&gt;Result&lt;/span&gt; &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; &lt;span style="color: #0080A0;"&gt;&amp;quot;green&amp;quot;&lt;/span&gt;
			&lt;span style="color: #0600FF; font-weight: bold;"&gt;elseif&lt;/span&gt; &lt;span style="color: #800080;"&gt;Current&lt;/span&gt; &lt;span style="color: #600000;"&gt;=&lt;/span&gt; controller.&lt;span style="color: #000060;"&gt;yellow&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;then&lt;/span&gt;
				&lt;span style="color: #800080;"&gt;Result&lt;/span&gt; &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; &lt;span style="color: #0080A0;"&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt;
			&lt;span style="color: #0600FF; font-weight: bold;"&gt;else&lt;/span&gt;
				&lt;span style="color: #800080;"&gt;Result&lt;/span&gt; &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; &lt;span style="color: #0080A0;"&gt;&amp;quot;red&amp;quot;&lt;/span&gt;
			&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; TRAFFIC_LIGHT
&lt;span style="color: #0600FF; font-weight: bold;"&gt;inherit&lt;/span&gt;
	&lt;a href="http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+any&amp;amp;btnI=I%27m+Feeling+Lucky"&gt;&lt;span style="color: #800000"&gt;ANY&lt;/span&gt;&lt;/a&gt;
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;redefine&lt;/span&gt;
			default_create
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Creation&lt;/span&gt;
	default_create
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt;
			light &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; red
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Access&lt;/span&gt;
	light&lt;span style="color: #600000;"&gt;:&lt;/span&gt; TRAFFIC_LIGHT_COLOR
			&lt;span style="color: #008000; font-style: italic;"&gt;-- Current light&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Modification&lt;/span&gt;
	turn_green &lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt; light &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; green &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
	turn_yellow &lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt; light &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; yellow &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
	turn_red &lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt; light &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; red &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Allowed values of `light'&lt;/span&gt;
	green&lt;span style="color: #600000;"&gt;:&lt;/span&gt; TRAFFIC_LIGHT_COLOR &lt;span style="color: #0600FF; font-weight: bold;"&gt;once&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0080A0;"&gt;&amp;quot;PROCESS&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; &lt;span style="color: #800080;"&gt;Result&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
	yellow&lt;span style="color: #600000;"&gt;:&lt;/span&gt; TRAFFIC_LIGHT_COLOR &lt;span style="color: #0600FF; font-weight: bold;"&gt;once&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0080A0;"&gt;&amp;quot;PROCESS&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; &lt;span style="color: #800080;"&gt;Result&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
	red&lt;span style="color: #600000;"&gt;:&lt;/span&gt; TRAFFIC_LIGHT_COLOR &lt;span style="color: #0600FF; font-weight: bold;"&gt;once&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0080A0;"&gt;&amp;quot;PROCESS&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; &lt;span style="color: #800080;"&gt;Result&lt;/span&gt; &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&amp;nbsp;
t&lt;span style="color: #600000;"&gt;:&lt;/span&gt; TRAFFIC_LIGHT
a, b&lt;span style="color: #600000;"&gt;:&lt;/span&gt; TRAFFIC_LIGHT_COLOR
...
&lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; t
a &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; t.&lt;span style="color: #000060;"&gt;light&lt;/span&gt;
t.&lt;span style="color: #000060;"&gt;turn_green&lt;/span&gt;
b &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; t.&lt;span style="color: #000060;"&gt;light&lt;/span&gt;
io.&lt;span style="color: #000060;"&gt;put_string&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;a.&lt;span style="color: #000060;"&gt;out&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Prints &amp;quot;red&amp;quot;&lt;/span&gt;
io.&lt;span style="color: #000060;"&gt;put_string&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;b.&lt;span style="color: #000060;"&gt;out&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #008000; font-style: italic;"&gt;-- Prints &amp;quot;green&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
As the example demonstrates we need to get rid of object identity to allow objectless calls.
&lt;/p&gt;&lt;p&gt;The last property is already present in expanded classes without attributes. If we follow Occam's razor, there is no need to invent a new notion. Otherwise we can quickly get into the situation like "Doesn't Y already provide X? - Yes, it does, but we added Z and use it instead."
&lt;/p&gt;&lt;p&gt;However, the classes that are supposed to be used in a specific way are better to be explicitly marked as such. My feeling is that the built-in Eiffel documentation system, based on &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;note&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; clause, is quite underused for this purpose. In particular, we may have an associated clause
&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;note&lt;/span&gt;
	state&lt;span style="color: #600000;"&gt;:&lt;/span&gt; &lt;span style="color: #603000;"&gt;no&lt;/span&gt;
	identity&lt;span style="color: #600000;"&gt;:&lt;/span&gt; &lt;span style="color: #603000;"&gt;no&lt;/span&gt;
	storable&lt;span style="color: #600000;"&gt;:&lt;/span&gt; &lt;span style="color: #603000;"&gt;no&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
for the classes like these.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Mon, 01 Mar 2010 01:15:14 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>alexk_es</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 792 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>Inheriting from an ephemeral class</title>
 <link>http://eiffelroom.org/node/394#comment-791</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;What would happen if I write a class that inherits from an ephemeral class?
&lt;/p&gt;&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;ephemeral &lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; A
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt;
	objectless_feature &lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt; ... &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; B
&lt;span style="color: #0600FF; font-weight: bold;"&gt;inherit&lt;/span&gt; A
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; TEST
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt;
	g
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;local&lt;/span&gt;
			b&lt;span style="color: #600000;"&gt;:&lt;/span&gt; B
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt;
			&lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; b
			b.&lt;span style="color: #000060;"&gt;objectless_feature&lt;/span&gt;
		&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;&lt;p&gt;This would always call &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;&lt;span style="color: #FF0000;"&gt;&amp;#123;&lt;/span&gt;A&lt;span style="color: #FF0000;"&gt;&amp;#125;&lt;/span&gt;.&lt;span style="color: #000060;"&gt;objectless_feature&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;, right? No opportunity for polymorphism? Or would class B be permitted to redefine objectless_feature?
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Mon, 01 Mar 2010 00:54:53 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>peter_gummer</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 791 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>Stateless classes</title>
 <link>http://eiffelroom.org/node/394#comment-790</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;(This idea came to mind while reading Alexander's post below.)
&lt;/p&gt;&lt;p&gt;Rather than "ephemeral classes", I think a better name would be "stateless classes".
&lt;/p&gt;&lt;p&gt;Eiffel already uses too many idiosyncratic keywords, which I suspect may be a barrier to its wider acceptance: "deferred" vs "abstract", "void" vs "null", etc. The word "stateless" has been widely used for a long time.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Sun, 28 Feb 2010 20:56:25 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>peter_gummer</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 790 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>The mechanism is ready for use</title>
 <link>http://eiffelroom.org/node/394#comment-789</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Talking about objectless calls, we can consider how objects are used. There are 2 properties tightly bound to an object:
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt; state - attributes hold associated values
&lt;/li&gt;&lt;li&gt; identity - reference equality can tell if the objects are the same or not even if they are in the same state
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;We do not care for identity of objects of expanded types. In other words we never know if an object of an expanded type is "the same object" referenced by some other entity (or an expression in general) or not.
&lt;/p&gt;&lt;p&gt;From the practical point of view, if we consider a boolean expression
&lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;a &lt;span style="color: #600000;"&gt;=&lt;/span&gt; b&lt;/code&gt;&lt;/span&gt;
where type of &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;a&lt;/code&gt;&lt;/span&gt; and &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;b&lt;/code&gt;&lt;/span&gt; is the same stateless type (i.e. has no attributes), we can get different results if the type is reference, for example, because the equality can be preceded by
&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;&lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; a
&lt;span style="color: #0600FF; font-weight: bold;"&gt;create&lt;/span&gt; b&lt;/pre&gt;&lt;/div&gt;
but we'll always get True if the type is expanded (the equality operator above refers to the standard object equality, not to some special cases, like NaN in floating point math, discussed &lt;a href="http://bertrandmeyer.com/2010/02/06/reflexivity-and-other-pillars-of-civilization/" class="external text" title="http://bertrandmeyer.com/2010/02/06/reflexivity-and-other-pillars-of-civilization/"&gt;elsewhere&lt;/a&gt;).
&lt;/p&gt;&lt;p&gt;In the latter case there is neither state nor identity associated with an object: objects of the same expanded type without attributes cannot be distinguished in any way. Moreover, no special rules for using special entity &lt;span class="geshifilter"&gt;&lt;code class="geshifilter-eiffel"&gt;&lt;span style="color: #800080;"&gt;Current&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; are required, because it is safe to use it: there is nothing associated with it. Summarizing the above, Eiffel already has appropriate mechanism for "ephemeral" classes: they are expanded classes without attributes. Only the language specification needs to be updated to allow objectless calls on types, based on such classes.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Sun, 28 Feb 2010 10:40:51 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>alexk_es</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 789 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>The name was suggested during</title>
 <link>http://eiffelroom.org/node/394#comment-788</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;The name was suggested during an ECMA meeting. It might not be the final name, but for the moment this is what we will use for testing this.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Sun, 28 Feb 2010 01:04:47 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>manus_eiffel</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 788 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>This mechanism is known in</title>
 <link>http://eiffelroom.org/node/394#comment-787</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;This mechanism is known in the Eiffel world as reverse inheritance and was proposed many years ago. I don't have the details but this was looked at by the ECMA committee and dismissed for the time being because most likely it was not resolving a problem that users were having.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Sun, 28 Feb 2010 01:04:05 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>manus_eiffel</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 787 at http://eiffelroom.org</value>
</guid>
</item>
<item>
 <title>I wonder how compatible the</title>
 <link>http://eiffelroom.org/node/394#comment-786</link>
 <description>&lt;p&gt;In reply to &lt;a href="http://eiffelroom.org/node/394"&gt;Ephemeral classes&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;I wonder how compatible the idea of ephemeral is to "exherit"-ing from existing classes; essentially associating additional functionality to objects.  The use-case would be, I have some common function I apply to an integer so it should be associated with an integer.
&lt;/p&gt;&lt;p&gt;&lt;div class="geshifilter"&gt;&lt;pre class="eiffel geshifilter-eiffel" style="font-family:monospace;"&gt;ephemeral &lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; BLOCK
exherit
NATURAL_32
&amp;nbsp;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt;
 mix &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;other&lt;span style="color: #600000;"&gt;:&lt;/span&gt; BLOCK&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #600000;"&gt;:&lt;/span&gt; BLOCK
  &lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt;
    &lt;span style="color: #800080;"&gt;Result&lt;/span&gt; &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; &lt;span style="color: #800080;"&gt;Current&lt;/span&gt;.&lt;span style="color: #0600FF; font-weight: bold;"&gt;xor&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;other&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt;
  &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;class&lt;/span&gt; APPLICATION
&lt;span style="color: #0600FF; font-weight: bold;"&gt;feature&lt;/span&gt;
 make
  &lt;span style="color: #0600FF; font-weight: bold;"&gt;local&lt;/span&gt;
   op1&lt;span style="color: #600000;"&gt;:&lt;/span&gt; NATURAL_32
   op2&lt;span style="color: #600000;"&gt;:&lt;/span&gt; NATURAL_32
   block1&lt;span style="color: #600000;"&gt;:&lt;/span&gt; BLOCK
   block2&lt;span style="color: #600000;"&gt;:&lt;/span&gt; BLOCK
   block3&lt;span style="color: #600000;"&gt;:&lt;/span&gt; BLOCK
  &lt;span style="color: #0600FF; font-weight: bold;"&gt;do&lt;/span&gt;
   op1 &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; 0xababcdcd
   op2 &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; 0x44444444
   block1 &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; op1
   block2 &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; op2
   block3 &lt;span style="color: #600000;"&gt;:=&lt;/span&gt; block1.&lt;span style="color: #000060;"&gt;mix&lt;/span&gt; &lt;span style="color: #FF0000;"&gt;&amp;#40;&lt;/span&gt;block2&lt;span style="color: #FF0000;"&gt;&amp;#41;&lt;/span&gt;
  &lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;span style="color: #0600FF; font-weight: bold;"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;&lt;p&gt;If one were to exherit from multiple classes, it would be similar to how generic conformance works.  You can exherit the class as long as the object you're operating on statically conforms to the exheritance clause.
&lt;/p&gt;&lt;p&gt;In my opinion this would be a cleaner way to define conforming inheritance.
&lt;/p&gt;&lt;p&gt;To your original point, it would be nice to be able to define C callback code within Eiffel.
&lt;/p&gt;</description>
 <pubDate> <key>pubDate</key>
 <value>Sat, 27 Feb 2010 09:16:07 -0800</value>
</pubDate>
 <dc:creator> <key>dc:creator</key>
 <value>clemahieu</value>
</dc:creator>
 <guid> <key>guid</key>
 <attributes> <isPermaLink>false</isPermaLink>
</attributes>
 <value>comment 786 at http://eiffelroom.org</value>
</guid>
</item>
</channel>
</rss>
