<?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=User%3AKevin_Reid%2FUser_far_proxy</id>
		<title>User:Kevin Reid/User far proxy - 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=User%3AKevin_Reid%2FUser_far_proxy"/>
		<link rel="alternate" type="text/html" href="http://50.77.162.165/mediawiki/index.php?title=User:Kevin_Reid/User_far_proxy&amp;action=history"/>
		<updated>2026-04-25T00:06:17Z</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=User:Kevin_Reid/User_far_proxy&amp;diff=2056&amp;oldid=prev</id>
		<title>Kevin Reid:&amp;#32;uploading old content from July 26, 2008</title>
		<link rel="alternate" type="text/html" href="http://50.77.162.165/mediawiki/index.php?title=User:Kevin_Reid/User_far_proxy&amp;diff=2056&amp;oldid=prev"/>
				<updated>2010-05-06T14:03:00Z</updated>
		
		<summary type="html">&lt;p&gt;uploading old content from July 26, 2008&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The basic idea here is that there ought to be a way for a user to interactively provide the behavior of a far ref: for general interactive use where a callback is wanted, for debugging eventual protocols, and for demonstrating how E works.&lt;br /&gt;
&lt;br /&gt;
This ties directly into the interactive object manipulation ideas that are part of [[./E-AUI]] but I haven't implemented it in that framework yet.&lt;br /&gt;
&lt;br /&gt;
This is a draft REPL-based implementation which I wrote July 26, 2008. I haven't checked whether it works. —[[User:Kevin Reid|Kevin Reid]] 09:03, 6 May 2010 (CDT)&lt;br /&gt;
&lt;br /&gt;
The UI design is that notifications are printed to stdout with an index &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt;, and the arguments and return-value resolver are obtained by &amp;lt;code&amp;gt;verb[&amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;args[&amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;reply[&amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 var lastID := 0&lt;br /&gt;
 def verbs := [].asMap().diverge()&lt;br /&gt;
 def args  := [].asMap().diverge()&lt;br /&gt;
 def reply := [].asMap().diverge()&lt;br /&gt;
 def make(label :String) {&lt;br /&gt;
   return makeProxy(def handler {&lt;br /&gt;
     to handleSendOnly(verb, args) {&lt;br /&gt;
       def thisID := lastID += 1&lt;br /&gt;
       stdout.println(`$label received $verb$args [$thisID]`)&lt;br /&gt;
       verbs[thisID] := verb&lt;br /&gt;
       args[thisID] := args&lt;br /&gt;
     }&lt;br /&gt;
     to handleSend(verb, args) {&lt;br /&gt;
       handler.handleSendOnly(verb, args)&lt;br /&gt;
       stdout.println(`Expecting a reply`)&lt;br /&gt;
       def thisID := lastID # XXX kludge&lt;br /&gt;
       reply[thisID] := def response&lt;br /&gt;
       response&lt;br /&gt;
     }&lt;br /&gt;
   })&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Category:Kevin Reid/Unfinished projects]]&lt;/div&gt;</summary>
		<author><name>Kevin Reid</name></author>	</entry>

	</feed>