<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-14004</id>
	<title>Nabble - Concatenative</title>
	<updated>2009-09-24T22:19:50Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Concatenative-f14004.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Concatenative-f14004.html" />
	<subtitle type="html">&lt;a href=&quot;http://www.latrobe.edu.au/philosophy/phimvt/joy.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Concatenative languages&lt;/a&gt;&amp;nbsp;behave in a way which looks imperative (like C or Perl), but can be reasoned about in a functional manner (like ML or Haskell).</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-25606675</id>
	<title>Pipes and filters (was Re: A Joy VM in OCaml</title>
	<published>2009-09-24T22:19:50Z</published>
	<updated>2009-09-24T22:19:50Z</updated>
	<author>
		<name>JohnCarter</name>
	</author>
	<content type="html">On Tue, 22 Sep 2009, chris glur wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; This forum prompted me to investigate the power of
&lt;br&gt;&amp;gt; linux 'pipe programming',
&lt;br&gt;&amp;gt; which is astoundingly decetive.
&lt;br&gt;&amp;gt; It's magically easy, for small jobs, but quickly becomes unmanageable.
&lt;br&gt;&lt;br&gt;Hmm. It's just another tool that sort of vanishes into the background
&lt;br&gt;of stuff getting done. Go digging (hard) around a major unixy project
&lt;br&gt;like gcc and you'll find pipes are quietly and unobtrusively used in
&lt;br&gt;many places.
&lt;br&gt;&lt;br&gt;It's no panacea... but it it's a nifty solution to a largish pool of
&lt;br&gt;commonly occurring problems.
&lt;br&gt;&lt;br&gt;I once wrote, before SQL became commonly and freely available, a
&lt;br&gt;largish datamining project heavily using pipes and filters.
&lt;br&gt;&lt;br&gt;It was very similar to &amp;quot;NoSql&amp;quot;, so rather than dig out my very old
&lt;br&gt;programs to show you... let me just point you at NoSql.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/Home%20Page&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/Home%20Page&lt;/a&gt;&lt;br&gt;&lt;br&gt;Most database projects get hung up on the need to do updates. In the
&lt;br&gt;datamining world your data is usually dumped from one or more upstream
&lt;br&gt;databases and then you just digest that static dump.
&lt;br&gt;&lt;br&gt;Programming with pipes and filter database like nosql is a breeze. You
&lt;br&gt;build up your pipeline one element at a time inspecting the output.
&lt;br&gt;&lt;br&gt;You can then tie it all together by dumping intermediate results in
&lt;br&gt;files and use &amp;quot;make&amp;quot; to track dependencies and update things as is
&lt;br&gt;needed.
&lt;br&gt;&lt;br&gt;However, I'm not sure how we got on to this....
&lt;br&gt;&lt;br&gt;I'm not sure &amp;quot;pipes and filters&amp;quot; are quite equivalent to
&lt;br&gt;&amp;quot;concatenative&amp;quot; although the similarities and differences might be
&lt;br&gt;interesting to explore.
&lt;br&gt;&lt;br&gt;A way to explore it may be looking at NoSql filter elements and some
&lt;br&gt;of the nosql example pipelines.
&lt;br&gt;&lt;br&gt;John Carter &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Phone : (64)(3) 358 6639
&lt;br&gt;Tait Electronics &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Fax &amp;nbsp; : (64)(3) 359 4632
&lt;br&gt;PO Box 1645 Christchurch &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Email : &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25606675&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;john.carter@...&lt;/a&gt;
&lt;br&gt;New Zealand
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25606675.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25561916</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-22T08:13:55Z</published>
	<updated>2009-09-22T08:13:55Z</updated>
	<author>
		<name>William Tanksley, Jr</name>
	</author>
	<content type="html">chris glur &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25561916&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;crglur@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; This forum seems to have died.
&lt;br&gt;&lt;br&gt;No, it's just a slow period -- this happens from time to time. There
&lt;br&gt;aren't many people carrying on active research; mine is on hiatus as
&lt;br&gt;I've been working on giving a new son a start in the world.
&lt;br&gt;&lt;br&gt;&amp;gt; Perhaps others had discovered what I only now discovered:
&lt;br&gt;&amp;gt; cat-style can be as deceptive as BASIC was in the 70s.
&lt;br&gt;&amp;gt; You think you're programming, but you're just hacking a mess.
&lt;br&gt;&lt;br&gt;Unlikely. This forum is largely for research; at the present state of
&lt;br&gt;the art, the research is focused on the primitives, and nobody
&lt;br&gt;reasonable expects perfection from a primitive research effort. The
&lt;br&gt;practical people should be hanging out in the Factor and Forth (and
&lt;br&gt;possibly Postscript) groups, where they'll find pragmatic
&lt;br&gt;applications.
&lt;br&gt;&lt;br&gt;&amp;gt; This forum prompted me to investigate the power of
&lt;br&gt;&amp;gt; linux 'pipe programming',
&lt;br&gt;&amp;gt; which is astoundingly decetive.
&lt;br&gt;&amp;gt; It's magically easy, for small jobs, but quickly becomes unmanageable.
&lt;br&gt;&lt;br&gt;I suspect you were using an overly simple language, then. FP, FL,
&lt;br&gt;NIAL, or Q might be a better way to carry on your experiments; they're
&lt;br&gt;all based on the ideas of data pipelines, but they have strong
&lt;br&gt;facilities to group, manipulate, and redirect the data, as well as the
&lt;br&gt;control flow. NIAL is the only open-source one; Q (kx.com) is the only
&lt;br&gt;commercially successful one. FP and FL founded not only the idea of
&lt;br&gt;dataflow-centered programming, but also the entire idea of &amp;quot;functional
&lt;br&gt;programming&amp;quot;, which has now become a major driver of programming
&lt;br&gt;languages (although not at all in the way the author intended).
&lt;br&gt;&lt;br&gt;&amp;gt; == Chris Glur.
&lt;br&gt;&lt;br&gt;-Wm
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25561916.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25558356</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-22T04:30:05Z</published>
	<updated>2009-09-22T04:30:05Z</updated>
	<author>
		<name>Tom Schouten-3</name>
	</author>
	<content type="html">On Mon, Sep 21, 2009 at 01:47:35PM -0500, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25558356&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;john@...&lt;/a&gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;... go read Backus, Bird, de Moor, Meijer, Fokkinga,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Paterson, Tatsuya, Iverson, Meertens, Gibbons, et cetera.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Care to complete the list?
&lt;br&gt;&lt;br&gt;Backus[1]. De Moor[2], Bird[3], Meijer[4], Patterson[5], Tatsuya[6],
&lt;br&gt;Iverson[7], Meertens[8], Gibbons[9].
&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://nl.wikipedia.org/wiki/John_Backus&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://nl.wikipedia.org/wiki/John_Backus&lt;/a&gt;&lt;br&gt;[2] &lt;a href=&quot;http://www.comlab.ox.ac.uk/people/oege.demoor/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.comlab.ox.ac.uk/people/oege.demoor/&lt;/a&gt;&lt;br&gt;[3] &lt;a href=&quot;http://en.wikipedia.org/wiki/Richard_Bird_%28computer_scientist%29&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Richard_Bird_%28computer_scientist%29&lt;/a&gt;&lt;br&gt;[4] &lt;a href=&quot;http://lambda-the-ultimate.org/user/776&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lambda-the-ultimate.org/user/776&lt;/a&gt;&lt;br&gt;[5] &lt;a href=&quot;http://www.soi.city.ac.uk/~ross/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.soi.city.ac.uk/~ross/&lt;/a&gt;&lt;br&gt;[6] 
&lt;br&gt;[7] &lt;a href=&quot;http://en.wikipedia.org/wiki/Kenneth_E._Iverson&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Kenneth_E._Iverson&lt;/a&gt;&lt;br&gt;[8] &lt;a href=&quot;http://en.wikipedia.org/wiki/Lambert_Meertens&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Lambert_Meertens&lt;/a&gt;&lt;br&gt;[9] 
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25558356.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25553127</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-21T17:58:52Z</published>
	<updated>2009-09-21T17:58:52Z</updated>
	<author>
		<name>chris glur</name>
	</author>
	<content type="html">This forum seems to have died.
&lt;br&gt;Perhaps others had discovered what I only now discovered:
&lt;br&gt;cat-style can be as deceptive as BASIC was in the 70s.
&lt;br&gt;You think you're programming, but you're just hacking a mess.
&lt;br&gt;&lt;br&gt;This forum prompted me to investigate the power of
&lt;br&gt;linux 'pipe programming',
&lt;br&gt;which is astoundingly decetive.
&lt;br&gt;It's magically easy, for small jobs, but quickly becomes unmanageable.
&lt;br&gt;== Chris Glur.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On 9/4/09, Tom Schouten &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25553127&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tom@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, Sep 04, 2009 at 01:52:42AM +0300, chris glur wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; OTOH perhaps such &amp;quot;democratic committee&amp;quot; projects aren't feasible.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; I believe good results require a sufficiently annoying `itch' locally
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; applied to a single implementor / designer.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Yes, you're talking about making fish.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;I'm talking about making fishermen.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Most of the value-added in computing comes from the soft: psychology
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;and human-cognition. OTOH the Hard: technology; is easier to talk
&lt;br&gt;&amp;gt;&amp;gt; about.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Eg. the only justification for music is 'emotion manipulation'.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;But that's near impossible to quantify or describe.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;OTOH volumes are/can-be written about the technicalities.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Interesting viewpoint.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;My previous laboured example, perhaps didn't prove the conclusion:--
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;The brief sequence of functions described by:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;quot; pstree -p | cut -b25- | grep su &amp;quot;.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;which does:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;print the process-tree,
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;but cut-out and show only the part of the lines, from the 25th char
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;to end-line,
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;and show only lines which contain the string &amp;quot;su&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;shows a very cognitive economical way of achieving the goal.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;And has the very important advantage of being achieved by successive
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;refinement.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Which makes for increased productivity.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What you described is a `process' view on approaching a problem.
&lt;br&gt;&amp;gt; The combinator-style that Joy/Factor/Forth/... promote is an
&lt;br&gt;&amp;gt; example of this. &amp;nbsp;This is also called `point-free' style.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; An applicative language combines this with an `object' view, where
&lt;br&gt;&amp;gt; you name intermediate objects in addition to processes that turn
&lt;br&gt;&amp;gt; objects into objects.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; From a human cognition point of view it seems to me that these
&lt;br&gt;&amp;gt; are quite basic entities that can be used to structure the
&lt;br&gt;&amp;gt; information transfer from one brain to another.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The formal language equivalents sure have their roots in natural
&lt;br&gt;&amp;gt; languages, with the added advantage that these languages can
&lt;br&gt;&amp;gt; be manipulated as objects themselves.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (I have the feeling I'm just stating the obvious though..)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;But I'm still waiting for for an explanation if/why joy is good.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;And I expect the outcome of any effort to pay-back in the future.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Education, knowledge of universally applicable principles is more
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;profitable
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;than aquiring *A* product.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; `good' is relative to `purpose'.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On this i can only comment from a personal angle: &amp;nbsp;I think
&lt;br&gt;&amp;gt; concatenative languages are good for the purpose of working
&lt;br&gt;&amp;gt; with them as data on a meta-level.
&lt;br&gt;&amp;gt; I.e. playing with evaluation order (staging &amp; partial
&lt;br&gt;&amp;gt; evaluation) and allowing very simple interpreters.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Additionally they are interesting for anything that is
&lt;br&gt;&amp;gt; related to arithmetic (or other problems that ``naturally
&lt;br&gt;&amp;gt; factor'' into small processes).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; As a general purpose programming language however, I feel
&lt;br&gt;&amp;gt; they are too restrictive. &amp;nbsp;Some solutions seem to me to
&lt;br&gt;&amp;gt; be more naturally expressed as object instead of process.
&lt;br&gt;&amp;gt; More specifically: when random access of objects by name
&lt;br&gt;&amp;gt; simplifies matters (i.e. tree-structured data translation).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25553127.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25548983</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-21T11:47:35Z</published>
	<updated>2009-09-21T11:47:35Z</updated>
	<author>
		<name>John Nowak</name>
	</author>
	<content type="html">On Mon, 21 Sep 2009 19:50:00 +0300, chris glur &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25548983&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;crglur@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; This forum seems to have died.
&lt;br&gt;&amp;gt; Perhaps others had discovered what I only now discovered:
&lt;br&gt;&amp;gt; cat-style can be as deceptive as BASIC was in the 70s.
&lt;br&gt;&amp;gt; You think you're programming, but you're just hacking a mess.
&lt;br&gt;&lt;br&gt;I think it's more likely that no one is interested in responding
&lt;br&gt;to your inane questions. &amp;nbsp;If you want to know what the point of
&lt;br&gt;all this is, go read Backus, Bird, de Moor, Meijer, Fokkinga,
&lt;br&gt;Paterson, Tatsuya, Iverson, Meertens, Gibbons, et cetera.
&lt;br&gt;&lt;br&gt;I'm still working on things. I've been quiet because I've been
&lt;br&gt;busy, not because I've decided that this is all a waste of time.
&lt;br&gt;&lt;br&gt;- John
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25548983.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25547228</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-21T09:50:00Z</published>
	<updated>2009-09-21T09:50:00Z</updated>
	<author>
		<name>chris glur</name>
	</author>
	<content type="html">This forum seems to have died.
&lt;br&gt;Perhaps others had discovered what I only now discovered:
&lt;br&gt;cat-style can be as deceptive as BASIC was in the 70s.
&lt;br&gt;You think you're programming, but you're just hacking a mess.
&lt;br&gt;&lt;br&gt;This forum prompted me to investigate the power of
&lt;br&gt;linux 'pipe programming',
&lt;br&gt;which is astoundingly decetive.
&lt;br&gt;It's magically easy, for small jobs, but quickly becomes unmanageable.
&lt;br&gt;== Chris Glur.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On 9/4/09, Tom Schouten &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25547228&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tom@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, Sep 04, 2009 at 01:52:42AM +0300, chris glur wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; OTOH perhaps such &amp;quot;democratic committee&amp;quot; projects aren't feasible.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; I believe good results require a sufficiently annoying `itch' locally
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; applied to a single implementor / designer.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Yes, you're talking about making fish.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;I'm talking about making fishermen.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Most of the value-added in computing comes from the soft: psychology
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;and human-cognition. OTOH the Hard: technology; is easier to talk
&lt;br&gt;&amp;gt;&amp;gt; about.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Eg. the only justification for music is 'emotion manipulation'.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;But that's near impossible to quantify or describe.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;OTOH volumes are/can-be written about the technicalities.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Interesting viewpoint.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;My previous laboured example, perhaps didn't prove the conclusion:--
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;The brief sequence of functions described by:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;quot; pstree -p | cut -b25- | grep su &amp;quot;.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;which does:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;print the process-tree,
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;but cut-out and show only the part of the lines, from the 25th char
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;to end-line,
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;and show only lines which contain the string &amp;quot;su&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;shows a very cognitive economical way of achieving the goal.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;And has the very important advantage of being achieved by successive
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;refinement.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Which makes for increased productivity.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What you described is a `process' view on approaching a problem.
&lt;br&gt;&amp;gt; The combinator-style that Joy/Factor/Forth/... promote is an
&lt;br&gt;&amp;gt; example of this. &amp;nbsp;This is also called `point-free' style.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; An applicative language combines this with an `object' view, where
&lt;br&gt;&amp;gt; you name intermediate objects in addition to processes that turn
&lt;br&gt;&amp;gt; objects into objects.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; From a human cognition point of view it seems to me that these
&lt;br&gt;&amp;gt; are quite basic entities that can be used to structure the
&lt;br&gt;&amp;gt; information transfer from one brain to another.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The formal language equivalents sure have their roots in natural
&lt;br&gt;&amp;gt; languages, with the added advantage that these languages can
&lt;br&gt;&amp;gt; be manipulated as objects themselves.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (I have the feeling I'm just stating the obvious though..)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;But I'm still waiting for for an explanation if/why joy is good.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;And I expect the outcome of any effort to pay-back in the future.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Education, knowledge of universally applicable principles is more
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;profitable
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;than aquiring *A* product.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; `good' is relative to `purpose'.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On this i can only comment from a personal angle: &amp;nbsp;I think
&lt;br&gt;&amp;gt; concatenative languages are good for the purpose of working
&lt;br&gt;&amp;gt; with them as data on a meta-level.
&lt;br&gt;&amp;gt; I.e. playing with evaluation order (staging &amp; partial
&lt;br&gt;&amp;gt; evaluation) and allowing very simple interpreters.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Additionally they are interesting for anything that is
&lt;br&gt;&amp;gt; related to arithmetic (or other problems that ``naturally
&lt;br&gt;&amp;gt; factor'' into small processes).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; As a general purpose programming language however, I feel
&lt;br&gt;&amp;gt; they are too restrictive. &amp;nbsp;Some solutions seem to me to
&lt;br&gt;&amp;gt; be more naturally expressed as object instead of process.
&lt;br&gt;&amp;gt; More specifically: when random access of objects by name
&lt;br&gt;&amp;gt; simplifies matters (i.e. tree-structured data translation).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25547228.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25293880</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-04T05:53:44Z</published>
	<updated>2009-09-04T05:53:44Z</updated>
	<author>
		<name>Tom Schouten-3</name>
	</author>
	<content type="html">On Fri, Sep 04, 2009 at 01:52:42AM +0300, chris glur wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; OTOH perhaps such &amp;quot;democratic committee&amp;quot; projects aren't feasible.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; I believe good results require a sufficiently annoying `itch' locally
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; applied to a single implementor / designer.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Yes, you're talking about making fish.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;I'm talking about making fishermen.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Most of the value-added in computing comes from the soft: psychology
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;and human-cognition. OTOH the Hard: technology; is easier to talk about.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Eg. the only justification for music is 'emotion manipulation'.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;But that's near impossible to quantify or describe.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;OTOH volumes are/can-be written about the technicalities.
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;Interesting viewpoint.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;My previous laboured example, perhaps didn't prove the conclusion:--
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;The brief sequence of functions described by:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;quot; pstree -p | cut -b25- | grep su &amp;quot;.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;which does:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;print the process-tree,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;but cut-out and show only the part of the lines, from the 25th char
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;to end-line,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;and show only lines which contain the string &amp;quot;su&amp;quot;;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;shows a very cognitive economical way of achieving the goal.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;And has the very important advantage of being achieved by successive
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;refinement.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Which makes for increased productivity.
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;What you described is a `process' view on approaching a problem.
&lt;br&gt;The combinator-style that Joy/Factor/Forth/... promote is an
&lt;br&gt;example of this. &amp;nbsp;This is also called `point-free' style.
&lt;br&gt;&lt;br&gt;An applicative language combines this with an `object' view, where
&lt;br&gt;you name intermediate objects in addition to processes that turn
&lt;br&gt;objects into objects.
&lt;br&gt;&lt;br&gt;From a human cognition point of view it seems to me that these
&lt;br&gt;are quite basic entities that can be used to structure the 
&lt;br&gt;information transfer from one brain to another.
&lt;br&gt;&lt;br&gt;The formal language equivalents sure have their roots in natural
&lt;br&gt;languages, with the added advantage that these languages can
&lt;br&gt;be manipulated as objects themselves. &amp;nbsp;
&lt;br&gt;&lt;br&gt;(I have the feeling I'm just stating the obvious though..)
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;But I'm still waiting for for an explanation if/why joy is good.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;And I expect the outcome of any effort to pay-back in the future.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Education, knowledge of universally applicable principles is more
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;profitable
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;than aquiring *A* product.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;`good' is relative to `purpose'.
&lt;br&gt;&lt;br&gt;On this i can only comment from a personal angle: &amp;nbsp;I think
&lt;br&gt;concatenative languages are good for the purpose of working
&lt;br&gt;with them as data on a meta-level. &amp;nbsp;
&lt;br&gt;I.e. playing with evaluation order (staging &amp; partial
&lt;br&gt;evaluation) and allowing very simple interpreters.
&lt;br&gt;&lt;br&gt;Additionally they are interesting for anything that is
&lt;br&gt;related to arithmetic (or other problems that ``naturally
&lt;br&gt;factor'' into small processes).
&lt;br&gt;&lt;br&gt;As a general purpose programming language however, I feel
&lt;br&gt;they are too restrictive. &amp;nbsp;Some solutions seem to me to
&lt;br&gt;be more naturally expressed as object instead of process.
&lt;br&gt;More specifically: when random access of objects by name
&lt;br&gt;simplifies matters (i.e. tree-structured data translation).
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25293880.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25285525</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-03T15:52:42Z</published>
	<updated>2009-09-03T15:52:42Z</updated>
	<author>
		<name>chris glur</name>
	</author>
	<content type="html">&amp;gt;&amp;gt; OTOH perhaps such &amp;quot;democratic committee&amp;quot; projects aren't feasible.
&lt;br&gt;&lt;br&gt;&amp;gt; I believe good results require a sufficiently annoying `itch' locally
&lt;br&gt;&amp;gt; applied to a single implementor / designer.
&lt;br&gt;&lt;br&gt;Yes, you're talking about making fish.
&lt;br&gt;I'm talking about making fishermen.
&lt;br&gt;&lt;br&gt;Most of the value-added in computing comes from the soft: psychology
&lt;br&gt;&amp;nbsp; and human-cognition. &amp;nbsp;OTOH the Hard: technology; is easier to talk about.
&lt;br&gt;&lt;br&gt;Eg. the only justification for music is 'emotion manipulation'.
&lt;br&gt;But that's near impossible to quantify or describe.
&lt;br&gt;OTOH volumes are/can-be written about the technicalities.
&lt;br&gt;&lt;br&gt;My previous laboured example, perhaps didn't prove the conclusion:--
&lt;br&gt;&lt;br&gt;The brief sequence of functions described by:
&lt;br&gt;&amp;nbsp;&amp;quot; pstree -p | cut -b25- | grep su &amp;quot;.
&lt;br&gt;which does:
&lt;br&gt;&amp;nbsp;print the process-tree,
&lt;br&gt;&amp;nbsp;but cut-out and show only the part of the lines, from the 25th char
&lt;br&gt;to end-line,
&lt;br&gt;&amp;nbsp; and show only lines which contain the string &amp;quot;su&amp;quot;;
&lt;br&gt;&lt;br&gt;shows a very cognitive economical way of achieving the goal.
&lt;br&gt;&lt;br&gt;And has the very important advantage of being achieved by successive refinement.
&lt;br&gt;Which makes for increased productivity.
&lt;br&gt;&lt;br&gt;But I'm still waiting for for an explanation if/why joy is good.
&lt;br&gt;And I expect the outcome of any effort to pay-back in the future.
&lt;br&gt;Education, knowledge of universally applicable principles is more profitable
&lt;br&gt;than aquiring *A* product.
&lt;br&gt;&lt;br&gt;== Chris Glur.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On 9/3/09, eas lab &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25285525&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;lab.eas@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; .. continued fron previous post, because the mailer objected to the
&lt;br&gt;&amp;gt; complete text.
&lt;br&gt;&amp;gt; ------------
&lt;br&gt;&amp;gt; Because I'm an isolated researcher, I appreciate when others expose
&lt;br&gt;&amp;gt; the route to their results, rather than just giving the 'show-room'
&lt;br&gt;&amp;gt; end product. &amp;nbsp;Perhaps some see this as indiscreet exhibitionism ?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; As an example of how I'd like open-collaborative projects to be,
&lt;br&gt;&amp;gt; I'm going to NOW try to expose how I partially achieved a nasty task
&lt;br&gt;&amp;gt; using unix's cat-like facilities.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; TASK DESCRIPTION: find which [if any] Desktop, VT pair is currently 'open'
&lt;br&gt;&amp;gt; at
&lt;br&gt;&amp;gt; the correct directory, to process the newly arrived email, news, http
&lt;br&gt;&amp;gt; ...etc.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Think of a system from 200 years ago, where 10 to 20 sheets for 6 to 8
&lt;br&gt;&amp;gt; categories are distributed between 4 clerks. Clerk1 may have 4 sheets for:
&lt;br&gt;&amp;gt; vegetables, meat, clothing, meat.
&lt;br&gt;&amp;gt; When a transaction for meat arrives, it should be directed to the clerk
&lt;br&gt;&amp;gt; who currently has the/a 'meat' sheet.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Since this is a computer and not paper-sheets, multiple clerks/processes
&lt;br&gt;&amp;gt; can have the same sheet/directory open. &amp;nbsp;And muliple copies of a
&lt;br&gt;&amp;gt; sheet/directory
&lt;br&gt;&amp;gt; may be open for reading/editing its files. And always allocating new
&lt;br&gt;&amp;gt; sheets/VirtualTerminals to the new topic as they arrive would give an
&lt;br&gt;&amp;gt; explosive
&lt;br&gt;&amp;gt; growth of redundant sheets/VTs.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If you had 20 copies of a book, all open, mostly at different pages
&lt;br&gt;&amp;gt; and you had to switch between books to see which, if any book was open at
&lt;br&gt;&amp;gt; the 'meat page', this would be frustrating; compared to scanning down a list
&lt;br&gt;&amp;gt; of (book, page-topic) pairs, to find the/a 'meat' book/page.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So the 1st REFINED TASK DESCRIPTION is:
&lt;br&gt;&amp;gt; find which Desktop/VT, if any, has the directory for the newly arrived item.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Then the 2nd REFINED TASK DESCRIPTION 'became':
&lt;br&gt;&amp;gt; generate a list of the open directories for the 10 to 20 mc-tasks,
&lt;br&gt;&amp;gt; and generate info which relates the (D,V) pair to the &amp;nbsp;task-directory,
&lt;br&gt;&amp;gt; so that by visually scanning the 2 lists the D/V which matches the mc-task
&lt;br&gt;&amp;gt; can be found.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; As an example this task that I'm writing now, will be in a path/directory
&lt;br&gt;&amp;gt; *cat* or *Cat*; and I can see that it's using desktop1, VT4; which I
&lt;br&gt;&amp;gt; designate as D,V=1,4.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But when I switch out of this D,V to some other jobs and new info arrives
&lt;br&gt;&amp;gt; for
&lt;br&gt;&amp;gt; the 'cat' topic, I'll have forgotten/lost D,V=1,4. &amp;nbsp;In fact possibly D,V=1,4
&lt;br&gt;&amp;gt; will have been allocated to a different topic.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The 2 sets of info look like this [where I just have to remember that
&lt;br&gt;&amp;gt; they're
&lt;br&gt;&amp;gt; call PT &amp; DV] :-
&lt;br&gt;&amp;gt; --&amp;gt; # PT
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1477 &amp;nbsp; /mnt/cdrom/Inet
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1549 &amp;nbsp; /mnt/cdrom
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1593 &amp;nbsp; /mnt/cdrom/Legal/TLC/Aug09
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1824 &amp;nbsp; /mnt/cdrom/Legal/TLC/Aug09
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2429 &amp;nbsp; /mnt/cdrom/Inet/RSS
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8952 &amp;nbsp; /mnt/cdrom/Legal/TLC/UKdefaultJ
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 9837 &amp;nbsp; /mnt/cdrom/Legal/TLC
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13406 &amp;nbsp; /mnt/cdrom/Legal/TLC/UKdefaultJ
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13529 &amp;nbsp; /mnt/cdrom/Legal
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13570 &amp;nbsp; /mnt/cdrom/Legal/TLC/PreApr09
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13925 &amp;nbsp; /mnt/cdrom/AI/Catamorfic
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;17614 &amp;nbsp; /mnt/cdrom/Legal/TLC/PreApr09/CCnewJudges
&lt;br&gt;&amp;gt; mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;24024 &amp;nbsp; /mnt/cdrom/Legal/AudtrFiduc
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --&amp;gt; # DV
&lt;br&gt;&amp;gt; |-kdeinit(1186)-+-su(1196)---bash(1271)---mc(13529)---bash(13531)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1199)---bash(1303)---linux.oberon.no(14102)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1201)---bash(9009)---mc(13570)---bash(13572)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `-su(1203)---bash(9805)---mc(9837)---bash(9839)
&lt;br&gt;&amp;gt; |-kdeinit(1188)-+-su(1204)---bash(1335)---mc(1593)---bash(1595)---less.bin(19649)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1207)---bash(1367)---mc(1824)---bash(1826)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1209)---bash(1399)---linux.oberon.no(1431)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `-su(1211)---bash(9481)---lynx(17276)
&lt;br&gt;&amp;gt; |-kdeinit(1189)-+-su(1213)---bash(2075)---mc(17614)---bash(17616)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1215)---bash(2107)---mc(2429)---bash(2431)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1218)---bash(2139)---mc(13406)---bash(13408)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1222)---bash(2171)---sob(9671)---oberon(9712)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `-su(1225)---bash(8919)---mc(8952)---bash(8954)
&lt;br&gt;&amp;gt; |-kdeinit(1192)-+-su(1221)---bash(1235)---linux.oberon.no(1441)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1226)---bash(1445)---mc(1477)---bash(1479)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1265)---bash(1517)---mc(1549)---bash(1551)
&lt;br&gt;&amp;gt; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `-su(13889)---bash(13893)---mc(13925)---bash(13927)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This can look a bit overwhelming, but searching for the 'cat', we find
&lt;br&gt;&amp;gt; &amp;nbsp;/mnt/cdrom/AI/Catamorfic
&lt;br&gt;&amp;gt; as the 3rd last element, and with a pid-number of: 13925.
&lt;br&gt;&amp;gt; And the 2nd info-set has mc(13925) in the 4th/last branch of the node
&lt;br&gt;&amp;gt; which has linux.oberon.no(1441) as it's 1st branch.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Which means DV=1,4 as we already know !
&lt;br&gt;&amp;gt; Similarly we see that the 2 'tree-branches' which are already allocated
&lt;br&gt;&amp;gt; to &amp;quot;Aug09&amp;quot;, are D,V=3,1 &amp; D,V=3,2 , via pid=1593 and pid=1824 .
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Up till now, I've had to use the hack of puting the 'oberon' in the
&lt;br&gt;&amp;gt; N-th VT of the Nth Desktop, in order to see which Desktop a set of
&lt;br&gt;&amp;gt; branches represent. Obviously I'd like some kind of 'artificial
&lt;br&gt;&amp;gt; intelligence' method to further proccess and just place the D/V pair
&lt;br&gt;&amp;gt; next to the corresponding directory-path. &amp;nbsp;Like so:-
&lt;br&gt;&amp;gt; 1,2= /mnt/cdrom/Inet
&lt;br&gt;&amp;gt; 1,3= /mnt/cdrom
&lt;br&gt;&amp;gt; 1,4= /mnt/cdrom/AI/Catamorfic
&lt;br&gt;&amp;gt; &amp;nbsp;...etc.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But ! by using successive refinement, one can get the benefit of the
&lt;br&gt;&amp;gt; partially working product and finish it later -- &amp;nbsp;or never.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Finally ! let's see [by exposing the details of my thought process]
&lt;br&gt;&amp;gt; how this came from cat-style linux facilities.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 1. Let's examine the minimalist cat-code to see what it does.
&lt;br&gt;&amp;gt; 2. where is the code, to be found to examine?
&lt;br&gt;&amp;gt; 3. since it's executable, linux's &amp;quot;whereis&amp;quot; will show us.
&lt;br&gt;&amp;gt; 4. do: &amp;quot;whereis PT&amp;quot; &amp;nbsp; gives us: &amp;quot;PT: /usr/local/bin/PT&amp;quot;
&lt;br&gt;&amp;gt; 5. and show the contents of the script/executable-code
&lt;br&gt;&amp;gt; &amp;nbsp; ie. &amp;quot;cat /usr/local/bin/PT&amp;quot; &amp;nbsp;shows the single line:-
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;quot;lsof | grep DIR | grep mc | grep &amp;quot;/&amp;quot;. &amp;nbsp;| cut -b-17,67-&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; BTW, this is an example for windows-users of what linux does;
&lt;br&gt;&amp;gt; &amp;nbsp;and truthfully the file/script had several lines of comments
&lt;br&gt;&amp;gt; which accumulated during its evolution which I'm excluding.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If I look at the line of: code, I guess this is what it does:
&lt;br&gt;&amp;gt; &amp;nbsp;lsof : list all the open file,
&lt;br&gt;&amp;gt; &amp;nbsp;| grep DIR : but show only the lines containing &amp;quot;DIR&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp;| grep mc : and of those show only the lines containing &amp;quot;mc&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp;| grep &amp;quot;/&amp;quot;. : and of those show only the lines containing
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;/&amp;quot;&amp;lt;some non 'bad chars'&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;{I NOW don't remember exactly which char=set &amp;quot;.&amp;quot; represents}
&lt;br&gt;&amp;gt; &amp;nbsp;| cut -b-17,67- : and show only parts of the line/s, probably cutting-out
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; pieces at boundries 17th char &amp; 67th char.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; NB. the parts which I'm not NOW sure about should be explained in the
&lt;br&gt;&amp;gt; &amp;nbsp;script's comments. &amp;nbsp;But I'm not 'sanatizing' and pretending that I know.
&lt;br&gt;&amp;gt; -------------
&lt;br&gt;&amp;gt; And similarly the cat-like-code for &amp;quot;DV&amp;quot; is:
&lt;br&gt;&amp;gt; &amp;nbsp;pstree -p | cut -b25- | grep su
&lt;br&gt;&amp;gt; which apparently does:
&lt;br&gt;&amp;gt; &amp;nbsp;print the process-tree,
&lt;br&gt;&amp;gt; &amp;nbsp;but cut-out and show only part of the lines, apparently from the 25th char
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;up to the end,
&lt;br&gt;&amp;gt; &amp;nbsp;and show only lines which contain the string &amp;quot;su&amp;quot;.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Which I guess gives the 2nd data structures above.
&lt;br&gt;&amp;gt; BTW for 'win users':
&lt;br&gt;&amp;gt; if you've previously typed : &amp;quot;cat /usr/local/bin/PT&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp; it only needs 3 keystrokes to get: &amp;quot;cat /usr/local/bin/DV&amp;quot;
&lt;br&gt;&amp;gt; although I prefer ETH-oberon which works without any keyboard, if need be.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hopefully this example shows how comfortable it can be to develop a large
&lt;br&gt;&amp;gt; class of tasks in a cat-style language.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It would be valuable for me, and possibly for others, if cat-contributors
&lt;br&gt;&amp;gt; could refine the above down to a lower level. Ie. the implementation of
&lt;br&gt;&amp;gt; &amp;quot;grep:
&lt;br&gt;&amp;gt; and eg. &amp;quot;tr&amp;quot; in a cat-like language would be valuable. &amp;nbsp;Frankly I don't even
&lt;br&gt;&amp;gt; know how joy implements its control-structures, because I never found a
&lt;br&gt;&amp;gt; &amp;quot;TOP&amp;quot;
&lt;br&gt;&amp;gt; view of what joy was good for.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The basis of the &amp;quot;hello world&amp;quot; approach is that a demonstrable model is
&lt;br&gt;&amp;gt; made available as soon as possible; and then later one can see how the
&lt;br&gt;&amp;gt; actual
&lt;br&gt;&amp;gt; characters are printed - at a lower level ?
&lt;br&gt;&amp;gt; The top-goal must be exposed before the implementation details.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; == Chris Glur.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25285525.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25278831</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-03T08:47:10Z</published>
	<updated>2009-09-03T08:47:10Z</updated>
	<author>
		<name>eas lab</name>
	</author>
	<content type="html">.. continued fron previous post, because the mailer objected to the
&lt;br&gt;complete text.
&lt;br&gt;------------
&lt;br&gt;Because I'm an isolated researcher, I appreciate when others expose
&lt;br&gt;the route to their results, rather than just giving the 'show-room'
&lt;br&gt;end product. &amp;nbsp;Perhaps some see this as indiscreet exhibitionism ?
&lt;br&gt;&lt;br&gt;As an example of how I'd like open-collaborative projects to be,
&lt;br&gt;I'm going to NOW try to expose how I partially achieved a nasty task
&lt;br&gt;using unix's cat-like facilities.
&lt;br&gt;&lt;br&gt;TASK DESCRIPTION: find which [if any] Desktop, VT pair is currently 'open' at
&lt;br&gt;the correct directory, to process the newly arrived email, news, http ...etc.
&lt;br&gt;&lt;br&gt;Think of a system from 200 years ago, where 10 to 20 sheets for 6 to 8
&lt;br&gt;categories are distributed between 4 clerks. Clerk1 may have 4 sheets for:
&lt;br&gt;vegetables, meat, clothing, meat.
&lt;br&gt;When a transaction for meat arrives, it should be directed to the clerk
&lt;br&gt;who currently has the/a 'meat' sheet.
&lt;br&gt;&lt;br&gt;Since this is a computer and not paper-sheets, multiple clerks/processes
&lt;br&gt;can have the same sheet/directory open. &amp;nbsp;And muliple copies of a sheet/directory
&lt;br&gt;may be open for reading/editing its files. And always allocating new
&lt;br&gt;sheets/VirtualTerminals to the new topic as they arrive would give an explosive
&lt;br&gt;growth of redundant sheets/VTs.
&lt;br&gt;&lt;br&gt;If you had 20 copies of a book, all open, mostly at different pages
&lt;br&gt;and you had to switch between books to see which, if any book was open at
&lt;br&gt;the 'meat page', this would be frustrating; compared to scanning down a list
&lt;br&gt;of (book, page-topic) pairs, to find the/a 'meat' book/page.
&lt;br&gt;&lt;br&gt;So the 1st REFINED TASK DESCRIPTION is:
&lt;br&gt;find which Desktop/VT, if any, has the directory for the newly arrived item.
&lt;br&gt;&lt;br&gt;Then the 2nd REFINED TASK DESCRIPTION 'became':
&lt;br&gt;generate a list of the open directories for the 10 to 20 mc-tasks,
&lt;br&gt;and generate info which relates the (D,V) pair to the &amp;nbsp;task-directory,
&lt;br&gt;so that by visually scanning the 2 lists the D/V which matches the mc-task
&lt;br&gt;can be found.
&lt;br&gt;&lt;br&gt;As an example this task that I'm writing now, will be in a path/directory
&lt;br&gt;*cat* or *Cat*; and I can see that it's using desktop1, VT4; which I
&lt;br&gt;designate as D,V=1,4.
&lt;br&gt;&lt;br&gt;But when I switch out of this D,V to some other jobs and new info arrives for
&lt;br&gt;the 'cat' topic, I'll have forgotten/lost D,V=1,4. &amp;nbsp;In fact possibly D,V=1,4
&lt;br&gt;will have been allocated to a different topic.
&lt;br&gt;&lt;br&gt;The 2 sets of info look like this [where I just have to remember that they're
&lt;br&gt;call PT &amp; DV] :-
&lt;br&gt;--&amp;gt; # PT
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1477 &amp;nbsp; /mnt/cdrom/Inet
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1549 &amp;nbsp; /mnt/cdrom
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1593 &amp;nbsp; /mnt/cdrom/Legal/TLC/Aug09
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1824 &amp;nbsp; /mnt/cdrom/Legal/TLC/Aug09
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2429 &amp;nbsp; /mnt/cdrom/Inet/RSS
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8952 &amp;nbsp; /mnt/cdrom/Legal/TLC/UKdefaultJ
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 9837 &amp;nbsp; /mnt/cdrom/Legal/TLC
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13406 &amp;nbsp; /mnt/cdrom/Legal/TLC/UKdefaultJ
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13529 &amp;nbsp; /mnt/cdrom/Legal
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13570 &amp;nbsp; /mnt/cdrom/Legal/TLC/PreApr09
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13925 &amp;nbsp; /mnt/cdrom/AI/Catamorfic
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;17614 &amp;nbsp; /mnt/cdrom/Legal/TLC/PreApr09/CCnewJudges
&lt;br&gt;mc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;24024 &amp;nbsp; /mnt/cdrom/Legal/AudtrFiduc
&lt;br&gt;&lt;br&gt;--&amp;gt; # DV
&lt;br&gt;|-kdeinit(1186)-+-su(1196)---bash(1271)---mc(13529)---bash(13531)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1199)---bash(1303)---linux.oberon.no(14102)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1201)---bash(9009)---mc(13570)---bash(13572)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `-su(1203)---bash(9805)---mc(9837)---bash(9839)
&lt;br&gt;|-kdeinit(1188)-+-su(1204)---bash(1335)---mc(1593)---bash(1595)---less.bin(19649)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1207)---bash(1367)---mc(1824)---bash(1826)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1209)---bash(1399)---linux.oberon.no(1431)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `-su(1211)---bash(9481)---lynx(17276)
&lt;br&gt;|-kdeinit(1189)-+-su(1213)---bash(2075)---mc(17614)---bash(17616)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1215)---bash(2107)---mc(2429)---bash(2431)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1218)---bash(2139)---mc(13406)---bash(13408)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1222)---bash(2171)---sob(9671)---oberon(9712)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `-su(1225)---bash(8919)---mc(8952)---bash(8954)
&lt;br&gt;|-kdeinit(1192)-+-su(1221)---bash(1235)---linux.oberon.no(1441)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1226)---bash(1445)---mc(1477)---bash(1479)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-su(1265)---bash(1517)---mc(1549)---bash(1551)
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `-su(13889)---bash(13893)---mc(13925)---bash(13927)
&lt;br&gt;&lt;br&gt;&lt;br&gt;This can look a bit overwhelming, but searching for the 'cat', we find
&lt;br&gt;&amp;nbsp;/mnt/cdrom/AI/Catamorfic
&lt;br&gt;as the 3rd last element, and with a pid-number of: 13925.
&lt;br&gt;And the 2nd info-set has mc(13925) in the 4th/last branch of the node
&lt;br&gt;which has linux.oberon.no(1441) as it's 1st branch.
&lt;br&gt;&lt;br&gt;Which means DV=1,4 as we already know !
&lt;br&gt;Similarly we see that the 2 'tree-branches' which are already allocated
&lt;br&gt;to &amp;quot;Aug09&amp;quot;, are D,V=3,1 &amp; D,V=3,2 , via pid=1593 and pid=1824 .
&lt;br&gt;&lt;br&gt;&lt;br&gt;Up till now, I've had to use the hack of puting the 'oberon' in the
&lt;br&gt;N-th VT of the Nth Desktop, in order to see which Desktop a set of
&lt;br&gt;branches represent. Obviously I'd like some kind of 'artificial
&lt;br&gt;intelligence' method to further proccess and just place the D/V pair
&lt;br&gt;next to the corresponding directory-path. &amp;nbsp;Like so:-
&lt;br&gt;1,2= /mnt/cdrom/Inet
&lt;br&gt;1,3= /mnt/cdrom
&lt;br&gt;1,4= /mnt/cdrom/AI/Catamorfic
&lt;br&gt;&amp;nbsp;...etc.
&lt;br&gt;&lt;br&gt;But ! by using successive refinement, one can get the benefit of the
&lt;br&gt;partially working product and finish it later -- &amp;nbsp;or never.
&lt;br&gt;&lt;br&gt;Finally ! let's see [by exposing the details of my thought process]
&lt;br&gt;how this came from cat-style linux facilities.
&lt;br&gt;&lt;br&gt;1. Let's examine the minimalist cat-code to see what it does.
&lt;br&gt;2. where is the code, to be found to examine?
&lt;br&gt;3. since it's executable, linux's &amp;quot;whereis&amp;quot; will show us.
&lt;br&gt;4. do: &amp;quot;whereis PT&amp;quot; &amp;nbsp; gives us: &amp;quot;PT: /usr/local/bin/PT&amp;quot;
&lt;br&gt;5. and show the contents of the script/executable-code
&lt;br&gt;&amp;nbsp; ie. &amp;quot;cat /usr/local/bin/PT&amp;quot; &amp;nbsp;shows the single line:-
&lt;br&gt;&amp;nbsp;&amp;quot;lsof | grep DIR | grep mc | grep &amp;quot;/&amp;quot;. &amp;nbsp;| cut -b-17,67-&amp;quot;
&lt;br&gt;&lt;br&gt;BTW, this is an example for windows-users of what linux does;
&lt;br&gt;&amp;nbsp;and truthfully the file/script had several lines of comments
&lt;br&gt;which accumulated during its evolution which I'm excluding.
&lt;br&gt;&lt;br&gt;If I look at the line of: code, I guess this is what it does:
&lt;br&gt;&amp;nbsp;lsof : list all the open file,
&lt;br&gt;&amp;nbsp;| grep DIR : but show only the lines containing &amp;quot;DIR&amp;quot;
&lt;br&gt;&amp;nbsp;| grep mc : and of those show only the lines containing &amp;quot;mc&amp;quot;
&lt;br&gt;&amp;nbsp;| grep &amp;quot;/&amp;quot;. : and of those show only the lines containing
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;/&amp;quot;&amp;lt;some non 'bad chars'&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{I NOW don't remember exactly which char=set &amp;quot;.&amp;quot; represents}
&lt;br&gt;&amp;nbsp;| cut -b-17,67- : and show only parts of the line/s, probably cutting-out
&lt;br&gt;&amp;nbsp; &amp;nbsp; pieces at boundries 17th char &amp; 67th char.
&lt;br&gt;&lt;br&gt;NB. the parts which I'm not NOW sure about should be explained in the
&lt;br&gt;&amp;nbsp;script's comments. &amp;nbsp;But I'm not 'sanatizing' and pretending that I know.
&lt;br&gt;-------------
&lt;br&gt;And similarly the cat-like-code for &amp;quot;DV&amp;quot; is:
&lt;br&gt;&amp;nbsp;pstree -p | cut -b25- | grep su
&lt;br&gt;which apparently does:
&lt;br&gt;&amp;nbsp;print the process-tree,
&lt;br&gt;&amp;nbsp;but cut-out and show only part of the lines, apparently from the 25th char
&lt;br&gt;&amp;nbsp; &amp;nbsp;up to the end,
&lt;br&gt;&amp;nbsp;and show only lines which contain the string &amp;quot;su&amp;quot;.
&lt;br&gt;&lt;br&gt;Which I guess gives the 2nd data structures above.
&lt;br&gt;BTW for 'win users':
&lt;br&gt;if you've previously typed : &amp;quot;cat /usr/local/bin/PT&amp;quot;
&lt;br&gt;&amp;nbsp; it only needs 3 keystrokes to get: &amp;quot;cat /usr/local/bin/DV&amp;quot;
&lt;br&gt;although I prefer ETH-oberon which works without any keyboard, if need be.
&lt;br&gt;&lt;br&gt;Hopefully this example shows how comfortable it can be to develop a large
&lt;br&gt;class of tasks in a cat-style language.
&lt;br&gt;&lt;br&gt;It would be valuable for me, and possibly for others, if cat-contributors
&lt;br&gt;could refine the above down to a lower level. Ie. the implementation of &amp;quot;grep:
&lt;br&gt;and eg. &amp;quot;tr&amp;quot; in a cat-like language would be valuable. &amp;nbsp;Frankly I don't even
&lt;br&gt;know how joy implements its control-structures, because I never found a &amp;quot;TOP&amp;quot;
&lt;br&gt;view of what joy was good for.
&lt;br&gt;&lt;br&gt;The basis of the &amp;quot;hello world&amp;quot; approach is that a demonstrable model is
&lt;br&gt;made available as soon as possible; and then later one can see how the actual
&lt;br&gt;characters are printed - at a lower level ?
&lt;br&gt;The top-goal must be exposed before the implementation details.
&lt;br&gt;&lt;br&gt;== Chris Glur.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25278831.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25273883</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-03T04:10:47Z</published>
	<updated>2009-09-03T04:10:47Z</updated>
	<author>
		<name>Tom Schouten-3</name>
	</author>
	<content type="html">On Wed, Sep 02, 2009 at 12:22:33AM +0300, chris glur wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; I've been pondering for a while about whether this is useful
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; to actually turn into an application: to build a unix shell
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; that _is_ a concatenative language. It's a lot of work to get
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; right though.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; However, starting with scsh this might not be so far-fetched..
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;I'd like to see a collaborative project in that direction;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;which was very transparent.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;I.e. doesn't just publish the final products hand-book, but
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;rather exposes all steps of the design process.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;OTOH perhaps such &amp;quot;democratic committee&amp;quot; projects aren't feasible.
&lt;/div&gt;&lt;br&gt;I believe good results require a sufficiently annoying `itch' locally
&lt;br&gt;applied to a single implementor / designer.
&lt;br&gt;&lt;br&gt;Committees are probably only useful if there are too many people with the
&lt;br&gt;same itch but different ways of scratching, or if a sufficiently
&lt;br&gt;annoying itch doesn't emerge spontaneously.
&lt;br&gt;&lt;br&gt;Considering joy vs. shell programming, I do have a couple of ideas though,
&lt;br&gt;while I think it's far from trivial to do it right.
&lt;br&gt;&lt;br&gt;&amp;nbsp;- If you can figure out how to map programs, program arguments, and
&lt;br&gt;&amp;nbsp; &amp;nbsp;pipes to clearly defined Joy function and data objects, and figure
&lt;br&gt;&amp;nbsp; &amp;nbsp;out how to mesh the different name spaces the job seems half way done.
&lt;br&gt;&amp;nbsp; &amp;nbsp;The rest is the long tail of infinite refinement and bug hunting.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;I.e. the shell language could be a combination of
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- Joy combinators
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- Programs (can they be joy combinators? how to mix function
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and file system namespaces?)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- Command lines of most sufficiently complex programs behave as 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;`mini-DSLs'. &amp;nbsp;Can they be mapped to combinators, or should they
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;be abstract data? &amp;nbsp;Can you brush this away into a wrapper
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;by treating providing some kind of compiler/interpreter for
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;each sufficiently complex external app (a good example would
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;be mplayer/mencoder).
&lt;br&gt;&lt;br&gt;&amp;nbsp;- It might be a playing field where the original highly reflective 
&lt;br&gt;&amp;nbsp; &amp;nbsp;intensional Joy approach is workable. &amp;nbsp;In all other practicaly
&lt;br&gt;&amp;nbsp; &amp;nbsp;applications of concatenative languages I see, extensional approach
&lt;br&gt;&amp;nbsp; &amp;nbsp;seems to be better from both modularity and efficiency viewpoints
&lt;br&gt;&amp;nbsp; &amp;nbsp;(i.e. where you want play with static code properties).
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25273883.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25247664</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-01T14:22:33Z</published>
	<updated>2009-09-01T14:22:33Z</updated>
	<author>
		<name>chris glur</name>
	</author>
	<content type="html">&amp;gt; I've been pondering for a while about whether this is useful
&lt;br&gt;&amp;gt; to actually turn into an application: to build a unix shell
&lt;br&gt;&amp;gt; that _is_ a concatenative language. It's a lot of work to get
&lt;br&gt;&amp;gt; right though.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; However, starting with scsh this might not be so far-fetched..
&lt;br&gt;I'd like to see a collaborative project in that direction;
&lt;br&gt;which was very transparent.
&lt;br&gt;I.e. doesn't just publish the final products hand-book, but
&lt;br&gt;rather exposes all steps of the design process.
&lt;br&gt;&lt;br&gt;OTOH perhaps such &amp;quot;democratic committee&amp;quot; projects aren't feasible.
&lt;br&gt;I recently read some man/info * which gave a nice example of how
&lt;br&gt;the simple 'transformers' can be serially piped together to achieve
&lt;br&gt;a task. &amp;nbsp;I'm sorry that I didn't read this 15 years ago.
&lt;br&gt;-------
&lt;br&gt;.. continued if my web-crap posts this !
&lt;br&gt;== Chris Glur
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25247664.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25236440</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-09-01T01:35:56Z</published>
	<updated>2009-09-01T01:35:56Z</updated>
	<author>
		<name>Tom Schouten-3</name>
	</author>
	<content type="html">Indeed.
&lt;br&gt;&lt;br&gt;I've been pondering for a while about whether this is useful to
&lt;br&gt;actually turn into an application: &amp;nbsp;to build a unix shell that _is_
&lt;br&gt;a concatenative language. &amp;nbsp;It's a lot of work to get right though.
&lt;br&gt;&lt;br&gt;However, starting with scsh this might not be so far-fetched..
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Mon, Aug 31, 2009 at 11:01:45PM -0700, Don Groves wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;I have always found stack programming and Unix shell programming
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;to be very similar, the stack being a LIFO pipe connecting successive
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;refinements rather than the FIFO pipe used in Unix. As with the Unix
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;shell, the transformations of the stack can be verified at each step of
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;the process.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;--
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;don
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;On Aug 31, 2009, at 10:02 PM, chris glur wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; What is this good for ?
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; The answer that I didn't get directly, but which hints led to,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; for my previous question: &amp;quot;what is cat-style good for&amp;quot;;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; could have been &amp;quot;it facilitates successive refinement, which
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; aids software productivety&amp;quot;.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; Unix shell programming, which amazingly is several decades old,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; allows remarkable economy in effort by using the 'data view'
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; [vs. procedural or OO views], by merely passing the data through
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; multiple stages of simple filters.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; Successive-refinement applies [which allows the programmer to
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; confirm each step] because the data transformation can be confirmed
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; at the output of each serial-filter.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; == Chris Glur.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; On 8/26/09, Tom Schouten &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25236440&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tom@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; ... and another one: extensional, non-linear Joy stack machine that
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; works using binary tree representation of code, and a binary tree
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; rotation in the interpreter, with again the continuation = a
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; quotation.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; &lt;a href=&quot;http://zwizwa.be/darcs/libprim/pf/seq.ml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://zwizwa.be/darcs/libprim/pf/seq.ml&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; ------------------------------------
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt; Yahoo! Groups Links
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25236440.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25234795</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-08-31T23:01:45Z</published>
	<updated>2009-08-31T23:01:45Z</updated>
	<author>
		<name>Don Groves</name>
	</author>
	<content type="html">I have always found stack programming and Unix shell programming
&lt;br&gt;to be very similar, the stack being a LIFO pipe connecting successive
&lt;br&gt;refinements rather than the FIFO pipe used in Unix. As with the Unix
&lt;br&gt;shell, the transformations of the stack can be verified at each step of
&lt;br&gt;the process.
&lt;br&gt;--
&lt;br&gt;don
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Aug 31, 2009, at 10:02 PM, chris glur wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; What is this good for ?
&lt;br&gt;&amp;gt; The answer that I didn't get directly, but which hints led to,
&lt;br&gt;&amp;gt; for my previous question: &amp;quot;what is cat-style good for&amp;quot;;
&lt;br&gt;&amp;gt; could have been &amp;quot;it facilitates successive refinement, which
&lt;br&gt;&amp;gt; aids software productivety&amp;quot;.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Unix shell programming, which amazingly is several decades old,
&lt;br&gt;&amp;gt; allows remarkable economy in effort by using the 'data view'
&lt;br&gt;&amp;gt; [vs. procedural or OO views], by merely passing the data through
&lt;br&gt;&amp;gt; multiple stages of simple filters.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Successive-refinement applies &amp;nbsp;[which allows the programmer to
&lt;br&gt;&amp;gt; confirm each step] because the data transformation can be confirmed
&lt;br&gt;&amp;gt; at the output of each serial-filter.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; == Chris Glur.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On 8/26/09, Tom Schouten &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25234795&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tom@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; ... and another one: extensional, non-linear Joy stack machine that
&lt;br&gt;&amp;gt;&amp;gt; works using binary tree representation of code, and a binary tree
&lt;br&gt;&amp;gt;&amp;gt; rotation in the interpreter, with again the continuation = a &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; quotation.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://zwizwa.be/darcs/libprim/pf/seq.ml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://zwizwa.be/darcs/libprim/pf/seq.ml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yahoo! Groups Links
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25234795.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25234346</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-08-31T22:02:29Z</published>
	<updated>2009-08-31T22:02:29Z</updated>
	<author>
		<name>chris glur</name>
	</author>
	<content type="html">What is this good for ?
&lt;br&gt;The answer that I didn't get directly, but which hints led to,
&lt;br&gt;for my previous question: &amp;quot;what is cat-style good for&amp;quot;;
&lt;br&gt;could have been &amp;quot;it facilitates successive refinement, which
&lt;br&gt;aids software productivety&amp;quot;.
&lt;br&gt;&lt;br&gt;Unix shell programming, which amazingly is several decades old,
&lt;br&gt;allows remarkable economy in effort by using the 'data view'
&lt;br&gt;[vs. procedural or OO views], by merely passing the data through
&lt;br&gt;multiple stages of simple filters.
&lt;br&gt;&lt;br&gt;Successive-refinement applies &amp;nbsp;[which allows the programmer to
&lt;br&gt;confirm each step] because the data transformation can be confirmed
&lt;br&gt;at the output of each serial-filter.
&lt;br&gt;&lt;br&gt;== Chris Glur.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On 8/26/09, Tom Schouten &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25234346&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tom@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; ... and another one: extensional, non-linear Joy stack machine that
&lt;br&gt;&amp;gt; works using binary tree representation of code, and a binary tree
&lt;br&gt;&amp;gt; rotation in the interpreter, with again the continuation = a quotation.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://zwizwa.be/darcs/libprim/pf/seq.ml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://zwizwa.be/darcs/libprim/pf/seq.ml&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25234346.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25153138</id>
	<title>Re: A Joy VM in OCaml</title>
	<published>2009-08-26T06:30:17Z</published>
	<updated>2009-08-26T06:30:17Z</updated>
	<author>
		<name>Tom Schouten-3</name>
	</author>
	<content type="html">... and another one: extensional, non-linear Joy stack machine that
&lt;br&gt;works using binary tree representation of code, and a binary tree
&lt;br&gt;rotation in the interpreter, with again the continuation = a quotation.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://zwizwa.be/darcs/libprim/pf/seq.ml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://zwizwa.be/darcs/libprim/pf/seq.ml&lt;/a&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25153138.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25129945</id>
	<title>A Joy VM in OCaml</title>
	<published>2009-08-25T00:48:51Z</published>
	<updated>2009-08-25T00:48:51Z</updated>
	<author>
		<name>Tom Schouten-3</name>
	</author>
	<content type="html">Hello list,
&lt;br&gt;&lt;br&gt;Something I'd like to share: a small interpreter for an (intensional)
&lt;br&gt;Joy dialect, that has helped me to clarify some conversation about
&lt;br&gt;implementation of concatenative languages.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://zwizwa.be/darcs/libprim/pf/joy.ml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://zwizwa.be/darcs/libprim/pf/joy.ml&lt;/a&gt;&lt;br&gt;&lt;br&gt;What I found remarkable is that the continuation of such an intensional
&lt;br&gt;VM _really is just an intensional quotation_.
&lt;br&gt;&lt;br&gt;This is mostly to contrast the PF VM, an early-bound extensional Joy dialect
&lt;br&gt;with linear core memory and nonlinear code memory. &amp;nbsp;I.e. it uses linear
&lt;br&gt;lists for data, delimited continuations, and partial applications, and
&lt;br&gt;nonlinear memory for the code graph.
&lt;br&gt;&lt;br&gt;I think I finally found a way to combine linearity and some form of
&lt;br&gt;reflection by using a staged approach.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://zwizwa.be/darcs/libprim/pf/pf.ml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://zwizwa.be/darcs/libprim/pf/pf.ml&lt;/a&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;Tom
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-Joy-VM-in-OCaml-tp25129945p25129945.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25069233</id>
	<title>Re: Compression: Huffman Coding with Joy</title>
	<published>2009-08-20T13:23:13Z</published>
	<updated>2009-08-20T13:23:13Z</updated>
	<author>
		<name>wodan58</name>
	</author>
	<content type="html">--- In &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25069233&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;concatenative@...&lt;/a&gt;, &amp;quot;icpdesign&amp;quot; &amp;lt;taoufik.dachraoui@...&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Dear,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; How do you implement the Huffman Coding with Joy?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I would like to compare it with other languages (eg. F#)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Kind regards
&lt;br&gt;&amp;gt; Taoufik
&lt;br&gt;&amp;gt;
&lt;/div&gt;Hello,
&lt;br&gt;&lt;br&gt;Huffman Coding seems like a nice algorithm to try my
&lt;br&gt;new programming skills. Please bear in mind that this
&lt;br&gt;is my first program in JOY.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://home.kpn.nl/r.wiersma26/huffman.pdf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://home.kpn.nl/r.wiersma26/huffman.pdf&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://home.kpn.nl/r.wiersma26/hzip.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://home.kpn.nl/r.wiersma26/hzip.txt&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://home.kpn.nl/r.wiersma26/hunzip.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://home.kpn.nl/r.wiersma26/hunzip.txt&lt;/a&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Compression%3A-Huffman-Coding-with-Joy-tp22893446p25069233.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24339619</id>
	<title>Re: ANN: Concatenative Macro Processor</title>
	<published>2009-07-04T19:35:01Z</published>
	<updated>2009-07-04T19:35:01Z</updated>
	<author>
		<name>MarkWH</name>
	</author>
	<content type="html">--- In &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24339619&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;concatenative@...&lt;/a&gt;, eas lab &amp;lt;lab.eas@...&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Just to keep the pipes exercised
&lt;br&gt;&amp;gt; &amp;nbsp;[I suspected that I'd been cut-off of cat-list
&lt;br&gt;&amp;gt; &amp;nbsp;[what's happening in the 1st-world/N-hemisphere
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;'for' no cat-list-traffic ?] ]
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm asking what's Minimac's minimal-syntax ?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I/we don't just go off to httpS on a whim.
&lt;br&gt;&amp;gt; ANNs should contain minimum info to justify
&lt;br&gt;&amp;gt; further effort investment.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; How would it:
&lt;br&gt;&amp;gt; remove all sequences of lines,
&lt;br&gt;&amp;gt; &amp;nbsp; starting from &amp;lt;string1&amp;gt; upto &amp;lt;string2&amp;gt; ?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; == TIA.
&lt;/div&gt;&lt;br&gt;Hi,
&lt;br&gt;&lt;br&gt;Thanks for your questions.
&lt;br&gt;&lt;br&gt;Minimac has almost no syntax, basically a set of special characters that trigger behaviors (quoting, escaping, naming, compiling, etc...) and a dictionary (i.e. symbol table) of built-in macros that is extended at runtime with user macro definitions. See the draft manual for more info: &lt;a href=&quot;http://code.google.com/p/minimac/wiki/manual&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://code.google.com/p/minimac/wiki/manual&lt;/a&gt;&lt;br&gt;&lt;br&gt;As to your second question on removing sequences of lines, minimac is a macro processor similar in purpose to m4, i.e. it expands macro directives contained in a source file, what you're describing is a job better suited for a stream editor.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&amp;nbsp;Mark Humphries
&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://freshmeat.net/projects/minimac-macro-processor&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://freshmeat.net/projects/minimac-macro-processor&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ANN%3A-Concatenative-Macro-Processor-tp24158312p24339619.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24334295</id>
	<title>Re: ANN: Concatenative Macro Processor</title>
	<published>2009-07-04T05:48:59Z</published>
	<updated>2009-07-04T05:48:59Z</updated>
	<author>
		<name>eas lab</name>
	</author>
	<content type="html">Just to keep the pipes exercised
&lt;br&gt;&amp;nbsp;[I suspected that I'd been cut-off of cat-list
&lt;br&gt;&amp;nbsp;[what's happening in the 1st-world/N-hemisphere
&lt;br&gt;&amp;nbsp; &amp;nbsp;'for' no cat-list-traffic ?] ]
&lt;br&gt;&lt;br&gt;I'm asking what's Minimac's minimal-syntax ?
&lt;br&gt;&lt;br&gt;I/we don't just go off to httpS on a whim.
&lt;br&gt;ANNs should contain minimum info to justify
&lt;br&gt;further effort investment.
&lt;br&gt;&lt;br&gt;How would it:
&lt;br&gt;remove all sequences of lines,
&lt;br&gt;&amp;nbsp; starting from &amp;lt;string1&amp;gt; upto &amp;lt;string2&amp;gt; ?
&lt;br&gt;&lt;br&gt;== TIA.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On 6/23/09, Mark W. Humphries &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24334295&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mwh@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Minimac (&lt;a href=&quot;http://freshmeat.net/projects/minimac-macro-processor&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://freshmeat.net/projects/minimac-macro-processor&lt;/a&gt;) is a
&lt;br&gt;&amp;gt; minimalist, general purpose text macro processor.
&lt;br&gt;&amp;gt; It uses an explicit argument stack, and user functions are defined by
&lt;br&gt;&amp;gt; concatenation.
&lt;br&gt;&amp;gt; The software is currently in alpha release.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Example: 99 bottles of beer (&lt;a href=&quot;http://99-bottles-of-beer.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://99-bottles-of-beer.net/&lt;/a&gt;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; `drink! ( u -- ) `{continue}${#}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; this-many-bottles of beer on the wall, this-many-bottles of beer.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Take one down and pass it around, fewer-bottles of beer on the wall.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; {repeat}`
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; `oh-no! ( -- ) `No more bottles of beer on the wall, no more bottles of
&lt;br&gt;&amp;gt; beer.`
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; `please! ( u -- u ) `{#}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Go to the store and buy some more, this-many-bottles of beer on the
&lt;br&gt;&amp;gt; wall.`
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; `this-many-bottles ( u -- u ) `[{dup} 0&amp; ~no more bottles~&amp; {case} 1&amp; ~1
&lt;br&gt;&amp;gt; bottle~&amp; {case} {.} ~ bottles~]`
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; `fewer-bottles ( u -- u-1 ) `{--}$this-many-bottles`
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 99&amp; drink!
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; oh-no!
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 99&amp; please!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt; &amp;nbsp;Mark Humphries
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ANN%3A-Concatenative-Macro-Processor-tp24158312p24334295.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24158312</id>
	<title>ANN: Concatenative Macro Processor</title>
	<published>2009-06-22T18:09:55Z</published>
	<updated>2009-06-22T18:09:55Z</updated>
	<author>
		<name>MarkWH</name>
	</author>
	<content type="html">Minimac (&lt;a href=&quot;http://freshmeat.net/projects/minimac-macro-processor&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://freshmeat.net/projects/minimac-macro-processor&lt;/a&gt;) is a
&lt;br&gt;minimalist, general purpose text macro processor. 
&lt;br&gt;It uses an explicit argument stack, and user functions are defined by concatenation.
&lt;br&gt;The software is currently in alpha release.
&lt;br&gt;&lt;br&gt;Example: 99 bottles of beer (&lt;a href=&quot;http://99-bottles-of-beer.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://99-bottles-of-beer.net/&lt;/a&gt;)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; `drink! ( u -- ) `{continue}${#}
&lt;br&gt;&amp;nbsp; &amp;nbsp; this-many-bottles of beer on the wall, this-many-bottles of beer.
&lt;br&gt;&amp;nbsp; &amp;nbsp; Take one down and pass it around, fewer-bottles of beer on the wall.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; {repeat}` 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; `oh-no! ( -- ) `No more bottles of beer on the wall, no more bottles of beer.` 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; `please! ( u -- u ) `{#}
&lt;br&gt;&amp;nbsp; &amp;nbsp; Go to the store and buy some more, this-many-bottles of beer on the wall.` 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; `this-many-bottles ( u -- u ) `[{dup} 0&amp; ~no more bottles~&amp; {case} 1&amp; ~1 bottle~&amp; {case} {.} ~ bottles~]` 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; `fewer-bottles ( u -- u-1 ) `{--}$this-many-bottles` 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; 99&amp; drink!
&lt;br&gt;&amp;nbsp; &amp;nbsp; oh-no!
&lt;br&gt;&amp;nbsp; &amp;nbsp; 99&amp; please!
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&amp;nbsp;Mark Humphries
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ANN%3A-Concatenative-Macro-Processor-tp24158312p24158312.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23259541</id>
	<title>Re: proof/examples of productivety increase ?</title>
	<published>2009-04-27T08:59:11Z</published>
	<updated>2009-04-27T08:59:11Z</updated>
	<author>
		<name>William Tanksley, Jr</name>
	</author>
	<content type="html">Nigel Galloway wrote:
&lt;br&gt;&amp;gt; Should a language like Joy be compared to Java.
&lt;br&gt;&lt;br&gt;Yes and no. A language like Joy yes; Joy itself NO. Joy is an academic
&lt;br&gt;prototype, not really intended for any specific use.
&lt;br&gt;&lt;br&gt;&amp;gt; For efficiency the JVM reads and 'understands' the bytecodes. It does
&lt;br&gt;&amp;gt; not execute them slavishly as real assmbler is by a real CPU but
&lt;br&gt;&amp;gt; intelligently optimizing the instructions.
&lt;br&gt;&lt;br&gt;Right.
&lt;br&gt;&lt;br&gt;The concatenative language &amp;quot;Cat&amp;quot; was originally designed for this
&lt;br&gt;general type of use, as an intermediate language. You might want to read
&lt;br&gt;up on it. It also has a fairly advanced type checker.
&lt;br&gt;&lt;br&gt;-Wm
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/proof-examples-of-productivety-increase---tp23012019p23259541.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23254565</id>
	<title>Re: proof/examples of productivety increase ?</title>
	<published>2009-04-27T04:41:54Z</published>
	<updated>2009-04-27T04:41:54Z</updated>
	<author>
		<name>Nigel Galloway-2</name>
	</author>
	<content type="html">Should a language like Joy be compared to Java. Java compiles into class files, which consist of bytecodes, which is  assembler like code for the JVM.
&lt;br&gt; 
&lt;br&gt;Joy comes in 2 parts an iterpreter and a language. The language is more like the JVM facing Java bytecode assembler than the programmer facing Java language.
&lt;br&gt; 
&lt;br&gt;Java is interesting in this respect: its class files are compiled in such a way that closure is regularly achieved at the bytecode level by adding extra instructions. This means that the correctness and resource usage can be verified when the class is loaded. For efficiency the JVM reads and 'understands' the bytecodes. It does not execute them slavishly as real assmbler is by a real CPU but intelligently optimizing the instructions.
&lt;br&gt;&lt;br&gt;To be efficient at a programming level, a language designed for the type of problem is required. This should be compiled into Joy. The questions then are: 
&lt;br&gt; 
&lt;br&gt;  can this Joyclass be optimized using concatative algorithms into something better than the Java class or the Intel assembler?
&lt;br&gt; 
&lt;br&gt;  can this be done by machine, or would it require rooms full of people hand optimizing assembler like Joy?
&lt;br&gt; 
&lt;br&gt;--- On Sun, 12/4/09, chris glur &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23254565&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;crglur@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;From: chris glur &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23254565&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;crglur@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Subject: [stack] proof/examples of productivety increase ?
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23254565&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;concatenative@...&lt;/a&gt;
&lt;br&gt;Date: Sunday, 12 April, 2009, 4:42 PM
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On cleaning out archives of
&lt;br&gt;Tue, Apr 29, 2008 at 10:20 AM
&lt;br&gt;where John Nowak wrote:
&lt;br&gt;&lt;br&gt;&amp;gt;Most type systems are not compositional which destroys the simple
&lt;br&gt;&amp;gt;algebra of concatenative programs. Take these equivalencies
&lt;br&gt;&amp;gt;for example:
&lt;br&gt;&lt;br&gt;&amp;gt; [$A] i == $A -- application
&lt;br&gt;&amp;gt; [$A] [$B] o == [$A $B] -- composition
&lt;br&gt;&amp;gt; $a [$B] pa == [$a $B] -- partial application
&lt;br&gt;&amp;gt; [$A] m == [$A] $A -- self-application
&lt;br&gt;&lt;br&gt;&amp;gt;Unfortunately, all of these rules (except perhaps for partial
&lt;br&gt;&amp;gt;application) fall apart once types are involved. This is of
&lt;br&gt;&amp;gt;practical concern as it makes cut-and-paste refactoring
&lt;br&gt;&amp;gt;impossible and will cause problems with many macro
&lt;br&gt;&amp;gt;transformations.
&lt;br&gt;&lt;br&gt;I wondered is there a tutorial on 'algebra of concatenative
&lt;br&gt;programs', preferably without another new syntax,
&lt;br&gt;which shows complete examples of design and/or correctness proof ?
&lt;br&gt;&lt;br&gt;Some time back I did a string-utility. Something like:
&lt;br&gt;remove all non-line-leading repeated spaces in all lines,
&lt;br&gt;and was amazed at the complexity, with the nested loops and several
&lt;br&gt;pointers needed. And I recently gave back a book which told about
&lt;br&gt;the well-know Hi-priest who published about 'correctness proofs'
&lt;br&gt;and later 2 guys found 2 errors and yet later someone else found
&lt;br&gt;another error. Does anyone know of a link to this story ?
&lt;br&gt;I think it was in the '70s ..Parnas...Hoare. .days.
&lt;br&gt;&lt;br&gt;Frankly, this concat-business seems pointless to me unless it can
&lt;br&gt;increase productivety, which IMO is only possible by:
&lt;br&gt;1. being more readable - eg. by being closer to the mental model
&lt;br&gt;of the problem/S. Which I don't think it is eg. compared to
&lt;br&gt;typical java or Algol-family code ..... Eiffel ?...;
&lt;br&gt;2. being ameniable to formal correctness proof techniques, eg.
&lt;br&gt;via transformations, by its algebra.
&lt;br&gt;&lt;br&gt;The newsgroup/s re. 'formal methods' only have lists of conferences.
&lt;br&gt;Like snake-oil-peddlars: pay for an attendance and get a key to
&lt;br&gt;the inner secrets. For decades formal methods have been the
&lt;br&gt;'real soon now magic bullet'. Like epaper seems to be lately.
&lt;br&gt;&lt;br&gt;I want some concrete demonstrations.
&lt;br&gt;Starting from 'hello world' level and extending to usefull
&lt;br&gt;utilities. BTW who can demonstrate cat's benefit on a string
&lt;br&gt;utility, like above or similar ?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&lt;br&gt;== Chris Glur.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;[Non-text portions of this message have been removed]
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/proof-examples-of-productivety-increase---tp23012019p23254565.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23141112</id>
	<title>list about PL design</title>
	<published>2009-04-20T09:06:23Z</published>
	<updated>2009-04-20T09:06:23Z</updated>
	<author>
		<name>spir</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;just started a mailing list about programming language design.
&lt;br&gt;It's called 'PiLuD' ;-)
&lt;br&gt;For anyone interested.
&lt;br&gt;&lt;br&gt;subscribe &amp;nbsp;: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23141112&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pilud+subscribe@...&lt;/a&gt;
&lt;br&gt;send mail &amp;nbsp;: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23141112&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pilud@...&lt;/a&gt;
&lt;br&gt;home page &amp;nbsp;: &lt;a href=&quot;http://groups.google.com/group/pilud&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.google.com/group/pilud&lt;/a&gt;&lt;br&gt;&lt;br&gt;You'll find a list of sample topics, only intended to help the list start &amp; live, at
&lt;br&gt;&lt;a href=&quot;http://groups.google.com/group/pilud/web/topics&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.google.com/group/pilud/web/topics&lt;/a&gt;&lt;br&gt;Add your own center of interests.
&lt;br&gt;&lt;br&gt;Denis
&lt;br&gt;------
&lt;br&gt;la vita e estrany
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/list-about-PL-design-tp23141112p23141112.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23012019</id>
	<title>proof/examples of productivety increase ?</title>
	<published>2009-04-12T08:42:54Z</published>
	<updated>2009-04-12T08:42:54Z</updated>
	<author>
		<name>chris glur</name>
	</author>
	<content type="html">On cleaning out archives of
&lt;br&gt;Tue, Apr 29, 2008 at 10:20 AM
&lt;br&gt;where John Nowak wrote:
&lt;br&gt;&lt;br&gt;&amp;gt;Most type systems are not compositional which destroys the simple
&lt;br&gt;&amp;gt;algebra of concatenative programs. Take these equivalencies
&lt;br&gt;&amp;gt;for example:
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp;[$A] i == $A -- application
&lt;br&gt;&amp;gt; &amp;nbsp;[$A] [$B] o == [$A $B] -- composition
&lt;br&gt;&amp;gt; &amp;nbsp;$a [$B] pa == [$a $B] -- partial application
&lt;br&gt;&amp;gt; &amp;nbsp;[$A] m == [$A] $A -- self-application
&lt;br&gt;&lt;br&gt;&amp;gt;Unfortunately, all of these rules (except perhaps for partial
&lt;br&gt;&amp;gt;application) fall apart once types are involved. This is of
&lt;br&gt;&amp;gt;practical concern as it makes cut-and-paste refactoring
&lt;br&gt;&amp;gt;impossible and will cause problems with many macro
&lt;br&gt;&amp;gt;transformations.
&lt;br&gt;&lt;br&gt;I wondered is there a tutorial on 'algebra of concatenative
&lt;br&gt;programs', preferably without another new syntax,
&lt;br&gt;which shows complete examples of design and/or correctness proof ?
&lt;br&gt;&lt;br&gt;Some time back I did a string-utility. &amp;nbsp;Something like:
&lt;br&gt;remove all non-line-leading repeated spaces in all lines,
&lt;br&gt;and was amazed at the complexity, with the nested loops and several
&lt;br&gt;pointers needed. &amp;nbsp;And I recently gave back a book which told about
&lt;br&gt;the well-know Hi-priest who published about 'correctness proofs'
&lt;br&gt;and later 2 guys found 2 errors and yet later someone else found
&lt;br&gt;another error. Does anyone know of a link to this story ?
&lt;br&gt;I think it was in the '70s ..Parnas...Hoare..days.
&lt;br&gt;&lt;br&gt;Frankly, this concat-business seems pointless to me unless it can
&lt;br&gt;increase productivety, which IMO is only possible by:
&lt;br&gt;1. being more readable - eg. by being closer to the mental model
&lt;br&gt;&amp;nbsp; of the problem/S. Which I don't think it is eg. compared to
&lt;br&gt;&amp;nbsp; typical java or Algol-family code ..... Eiffel ?...;
&lt;br&gt;2. being ameniable to formal correctness proof techniques, eg.
&lt;br&gt;&amp;nbsp; via transformations, by its algebra.
&lt;br&gt;&lt;br&gt;The newsgroup/s re. 'formal methods' only have lists of conferences.
&lt;br&gt;Like snake-oil-peddlars: pay for an attendance and get a key to
&lt;br&gt;the inner secrets. &amp;nbsp; For decades formal methods have been the
&lt;br&gt;'real soon now magic bullet'. &amp;nbsp;Like epaper seems to be lately.
&lt;br&gt;&lt;br&gt;I want some concrete demonstrations.
&lt;br&gt;Starting from 'hello world' level and extending to usefull
&lt;br&gt;utilities. BTW who can demonstrate cat's benefit on a string
&lt;br&gt;utility, like above or similar ?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&lt;br&gt;== Chris Glur.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/proof-examples-of-productivety-increase---tp23012019p23012019.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22907394</id>
	<title>Re: Re: Motivations to embrace undecidable type systems</title>
	<published>2009-04-06T05:00:38Z</published>
	<updated>2009-04-06T05:00:38Z</updated>
	<author>
		<name>John Nowak</name>
	</author>
	<content type="html">&lt;br&gt;On Apr 5, 2009, at 5:09 AM, hallucious wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Thanks for the info and for bearing with me.
&lt;br&gt;&amp;gt; I do want to move on to type systems that are useful for compilers.
&lt;br&gt;&lt;br&gt;It seems to me that some of the most interesting work in this field &amp;nbsp;
&lt;br&gt;(type systems for compilers) is being done by the Church Project (&lt;a href=&quot;http://www.church-project.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.church-project.org&lt;/a&gt;&amp;nbsp;
&lt;br&gt;). They've already done much work on compositional analysis which may &amp;nbsp;
&lt;br&gt;be useful to you if you're not already familiar with it.
&lt;br&gt;&lt;br&gt;- John
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22907394.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22893498</id>
	<title>Re: Compression: Huffman Coding with Joy</title>
	<published>2009-04-05T05:40:24Z</published>
	<updated>2009-04-05T05:40:24Z</updated>
	<author>
		<name>Taoufik Dachraoui</name>
	</author>
	<content type="html">Dear,
&lt;br&gt;&lt;br&gt;You can find the F# code for Huffman coding in 
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blogs.msdn.com/lukeh/archive/2008/05/05/huffman-coding-with-f.aspx&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://blogs.msdn.com/lukeh/archive/2008/05/05/huffman-coding-with-f.aspx&lt;/a&gt;&lt;br&gt;&lt;br&gt;Kind regards
&lt;br&gt;Taoufik
&lt;br&gt;&lt;br&gt;--- In &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22893498&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;concatenative@...&lt;/a&gt;, &amp;quot;icpdesign&amp;quot; &amp;lt;taoufik.dachraoui@...&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Dear,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; How do you implement the Huffman Coding with Joy?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I would like to compare it with other languages (eg. F#)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Kind regards
&lt;br&gt;&amp;gt; Taoufik
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Compression%3A-Huffman-Coding-with-Joy-tp22893446p22893498.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22893446</id>
	<title>Compression: Huffman Coding with Joy</title>
	<published>2009-04-05T05:34:56Z</published>
	<updated>2009-04-05T05:34:56Z</updated>
	<author>
		<name>Taoufik Dachraoui</name>
	</author>
	<content type="html">Dear,
&lt;br&gt;&lt;br&gt;How do you implement the Huffman Coding with Joy?
&lt;br&gt;&lt;br&gt;I would like to compare it with other languages (eg. F#)
&lt;br&gt;&lt;br&gt;Kind regards
&lt;br&gt;Taoufik
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Compression%3A-Huffman-Coding-with-Joy-tp22893446p22893446.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22891878</id>
	<title>Re: Motivations to embrace undecidable type systems</title>
	<published>2009-04-05T02:09:21Z</published>
	<updated>2009-04-05T02:09:21Z</updated>
	<author>
		<name>hallucious</name>
	</author>
	<content type="html">Hi John,
&lt;br&gt;&lt;br&gt;Thanks for the info and for bearing with me.
&lt;br&gt;I do want to move on to type systems that are useful for compilers.
&lt;br&gt;&lt;br&gt;I shall clarify the subordinate role of this type system in the report.
&lt;br&gt;&lt;br&gt;Adrian
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22891878.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22890937</id>
	<title>Re: Re: Motivations to embrace undecidable type systems</title>
	<published>2009-04-04T23:27:11Z</published>
	<updated>2009-04-04T23:27:11Z</updated>
	<author>
		<name>John Nowak</name>
	</author>
	<content type="html">On Apr 4, 2009, at 9:41 PM, hallucious wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; If decidable type inference means that the type of quotations and &amp;nbsp;
&lt;br&gt;&amp;gt; compositions of functions can be inferred and expressed, then I &amp;nbsp;
&lt;br&gt;&amp;gt; think that type inference is decidable in this system. You are not &amp;nbsp;
&lt;br&gt;&amp;gt; forced to simplify. (I should have pointed that out.)
&lt;br&gt;&lt;br&gt;It's easy to infer the constraints, but type inference (I believe) &amp;nbsp;
&lt;br&gt;also entails checking that those constraints are satisfied and not in &amp;nbsp;
&lt;br&gt;contradiction to one another. For example, you may have the following &amp;nbsp;
&lt;br&gt;composition:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A b -&amp;gt; A b &amp;nbsp; &amp;nbsp; &amp;nbsp;b Int
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C String d d &amp;nbsp; -&amp;gt; E
&lt;br&gt;&lt;br&gt;And you could assign it the following type:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A b -&amp;gt; E where A &amp;lt; C and b = String and b &amp;lt; d and d = Int
&lt;br&gt;&lt;br&gt;This alone is not useful because the type inferred is not valid.
&lt;br&gt;&lt;br&gt;- John
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22890937.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22890880</id>
	<title>Re: Motivations to embrace decidable type systems</title>
	<published>2009-04-04T23:15:21Z</published>
	<updated>2009-04-04T23:15:21Z</updated>
	<author>
		<name>John Nowak</name>
	</author>
	<content type="html">&lt;br&gt;On Apr 4, 2009, at 9:01 PM, hallucious wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; One motivation for this work was to broaden the range of functions &amp;nbsp;
&lt;br&gt;&amp;gt; which can be investigated by looking at their type, which can be &amp;nbsp;
&lt;br&gt;&amp;gt; useful to see their effect.
&lt;br&gt;&lt;br&gt;You may want to look at Djinn if you haven't already:
&lt;br&gt;&lt;a href=&quot;http://lambda-the-ultimate.org/node/1178&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lambda-the-ultimate.org/node/1178&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; Another was to allow the programmer to provide additional &amp;nbsp;
&lt;br&gt;&amp;gt; constraints. I also hoped that the type would form a basis for &amp;nbsp;
&lt;br&gt;&amp;gt; proving properties of any function, using denotation provided by the &amp;nbsp;
&lt;br&gt;&amp;gt; programmer.
&lt;br&gt;&lt;br&gt;In my opinion, it would be more useful to add types dependent on &amp;nbsp;
&lt;br&gt;values rather than (or in addition to) higher rank polymorphism and &amp;nbsp;
&lt;br&gt;subtyping if your goal to allow programmers to prove things. There &amp;nbsp;
&lt;br&gt;are, as you probably know, a large number of languages that already &amp;nbsp;
&lt;br&gt;take this approach (Agda, Coq, Epigram, Dependent ML, ATS, etc).
&lt;br&gt;&lt;br&gt;&amp;gt; I do not expect that there is any automated (unguided) procedure to &amp;nbsp;
&lt;br&gt;&amp;gt; check, for instance, whether two type formulas are equivalent in &amp;nbsp;
&lt;br&gt;&amp;gt; this system. (Is this what decidable type inference means?)
&lt;br&gt;&lt;br&gt;In practice, I believe undecidable just means &amp;quot;not guaranteed to &amp;nbsp;
&lt;br&gt;terminate&amp;quot;. For example, type inference is undecidable in a language &amp;nbsp;
&lt;br&gt;like Agda because certain programs will cause the type checking stage &amp;nbsp;
&lt;br&gt;to never finish.
&lt;br&gt;&lt;br&gt;- John
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22890880.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22889605</id>
	<title>Re: Motivations to embrace undecidable type systems</title>
	<published>2009-04-04T18:41:42Z</published>
	<updated>2009-04-04T18:41:42Z</updated>
	<author>
		<name>hallucious</name>
	</author>
	<content type="html">If decidable type inference means that the type of quotations and compositions of functions can be inferred and expressed, then I think that type inference is decidable in this system. You are not forced to simplify. (I should have pointed that out.)
&lt;br&gt;&lt;br&gt;But I do not think that type checking or type equality are decidable.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22889605.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22889473</id>
	<title>Motivations to embrace undecidable type systems</title>
	<published>2009-04-04T18:14:17Z</published>
	<updated>2009-04-04T18:14:17Z</updated>
	<author>
		<name>hallucious</name>
	</author>
	<content type="html">One motivation for this work was to broaden the range of functions
&lt;br&gt;which can be investigated by looking at their type, which can be
&lt;br&gt;useful to see their effect. Another was to allow the programmer to
&lt;br&gt;provide additional constraints. I also hoped that the type would form
&lt;br&gt;a basis for proving properties of any function, using denotation
&lt;br&gt;provided by the programmer. I did not want the type system to restrict
&lt;br&gt;which functions or algorithms could be considered. We should be free
&lt;br&gt;to get a function working empirically, then prove its correctness.
&lt;br&gt;&lt;br&gt;And another was to use inheritance polymorphism, mix in native objects
&lt;br&gt;from Java or C# and type their interfaces, and investigate uniqueness
&lt;br&gt;types in concatenative languages. Perhaps an undecidable type system
&lt;br&gt;is not really necessary for this. But I wanted a type system for
&lt;br&gt;experimental programs that might be rejected by conventional type
&lt;br&gt;systems.
&lt;br&gt;&lt;br&gt;I do not expect that there is any automated (unguided) procedure to
&lt;br&gt;check, for instance, whether two type formulas are equivalent in this
&lt;br&gt;system. Is this what decidable type inference means?
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22889473.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22889406</id>
	<title>Motivations to embrace decidable type systems</title>
	<published>2009-04-04T18:01:30Z</published>
	<updated>2009-04-04T18:01:30Z</updated>
	<author>
		<name>hallucious</name>
	</author>
	<content type="html">One motivation for this work was to broaden the range of functions which can be investigated by looking at their type, which can be useful to see their effect. Another was to allow the programmer to provide additional constraints. I also hoped that the type would form a basis for proving properties of any function, using denotation provided by the programmer. I did not want the type system to restrict which functions or algorithms could be considered. We should be free to get a function working empirically, then prove its correctness.
&lt;br&gt;&lt;br&gt;And another was to use inheritance polymorphism, mix in native objects from Java or C# and type their interfaces, and investigate uniqueness types in concatenative languages. Perhaps an undecidable type system is not really necessary for this. But I wanted a type system for experimental programs that might be rejected by conventional type systems.
&lt;br&gt;&lt;br&gt;I do not expect that there is any automated (unguided) procedure to check, for instance, whether two type formulas are equivalent in this system. (Is this what decidable type inference means?)
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22889406.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22888744</id>
	<title>Re: Type for row based languages</title>
	<published>2009-04-04T16:08:32Z</published>
	<updated>2009-04-04T16:08:32Z</updated>
	<author>
		<name>John Nowak</name>
	</author>
	<content type="html">One more thing I should've mentioned. You state that your type system &amp;nbsp;
&lt;br&gt;is compositional. I should note that you can get this quite easy by &amp;nbsp;
&lt;br&gt;extending HM with row types and omitting any equivalent to let &amp;nbsp;
&lt;br&gt;polymorphism. For example, 'dup apply' would fail to type:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A b -&amp;gt; A b b
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C &amp;nbsp; (C -&amp;gt; D) -&amp;gt; D
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A (C -&amp;gt; D) -&amp;gt; A (C -&amp;gt; D) (C -&amp;gt; D)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;C &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(C -&amp;gt; D) -&amp;gt; D
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;-- error: C occurs in A (C -&amp;gt; D)
&lt;br&gt;&lt;br&gt;Luckily (for some definition of &amp;quot;luck&amp;quot;), something like '[id] dup &amp;nbsp;
&lt;br&gt;apply' would fail as well:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (B -&amp;gt; B)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C d &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;gt; C d d
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (B -&amp;gt; B)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C (B -&amp;gt; B) -&amp;gt; C (B -&amp;gt; B) (B -&amp;gt; B)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (B -&amp;gt; B)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; A (B -&amp;gt; B) -&amp;gt; A (B -&amp;gt; B) (B -&amp;gt; B)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (B -&amp;gt; B) (B -&amp;gt; B)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (B -&amp;gt; B) (B -&amp;gt; B)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(C -&amp;gt; D) -&amp;gt; D
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (D -&amp;gt; D) (D -&amp;gt; D)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(C -&amp;gt; D) -&amp;gt; D
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (C -&amp;gt; C) (C -&amp;gt; C)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(C -&amp;gt; C) -&amp;gt; C
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;-- error: C occurs in A (C -&amp;gt; C)
&lt;br&gt;&lt;br&gt;For all expressions that do yield valid types, the order in which you &amp;nbsp;
&lt;br&gt;infer the type does not matter.
&lt;br&gt;&lt;br&gt;Apologies if I'm stating the obvious.
&lt;br&gt;&lt;br&gt;- John
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22888744.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22888664</id>
	<title>Re: Type for row based languages</title>
	<published>2009-04-04T15:54:54Z</published>
	<updated>2009-04-04T15:54:54Z</updated>
	<author>
		<name>John Nowak</name>
	</author>
	<content type="html">&lt;br&gt;On Apr 4, 2009, at 5:27 PM, hallucious wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Is there pre-existing work on this?
&lt;br&gt;&lt;br&gt;Nothing published that I'm aware of, no. Existing work on type systems &amp;nbsp;
&lt;br&gt;for concatenative languages (and there isn't much) has mostly focused &amp;nbsp;
&lt;br&gt;on systems with decidable type inference.
&lt;br&gt;&lt;br&gt;&amp;gt; Have I made a mistake? Missed something?
&lt;br&gt;&lt;br&gt;Not that i can see. Do you have any application in mind for it?
&lt;br&gt;&lt;br&gt;I suppose my only comment is that I'm not sure if your approach is &amp;nbsp;
&lt;br&gt;ideal for concatenative languages. In my personal experience, &amp;nbsp;
&lt;br&gt;intersection types seem to be a much better match. For example, the &amp;nbsp;
&lt;br&gt;type of 'dup apply' in a system with intersection types can be stated &amp;nbsp;
&lt;br&gt;rather simply:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A (b /\ (A b -&amp;gt; C)) -&amp;gt; C
&lt;br&gt;&lt;br&gt;If you assume 'dup' to have the type 'A (b /\ c) -&amp;gt; A b c', inference &amp;nbsp;
&lt;br&gt;is straightforward:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A (b /\ c) -&amp;gt; A b c
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;D &amp;nbsp; (D -&amp;gt; E) -&amp;gt; E
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A (b /\ (D -&amp;gt; E)) -&amp;gt; A b (D -&amp;gt; E)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; D &amp;nbsp; (D -&amp;gt; E) -&amp;gt; E
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A (b /\ (A b -&amp;gt; E)) -&amp;gt; A b (D -&amp;gt; E)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; A b (D -&amp;gt; E) -&amp;gt; E
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A (b /\ (A b -&amp;gt; E)) -&amp;gt; E
&lt;br&gt;&lt;br&gt;As for your '[id] dup' example:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (B -&amp;gt; B)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C (d /\ e) -&amp;gt; C d e
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;-- B free in B -&amp;gt; B, make fresh
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A ((B -&amp;gt; B) , (F -&amp;gt; F))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C (d &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, e &amp;nbsp; &amp;nbsp; &amp;nbsp; ) -&amp;gt; C d e
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A ((B -&amp;gt; B) , (F -&amp;gt; F))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C ((B -&amp;gt; B) , e &amp;nbsp; &amp;nbsp; &amp;nbsp; ) -&amp;gt; C (B -&amp;gt; B) e
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A ((B -&amp;gt; B) , (F -&amp;gt; F))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C ((B -&amp;gt; B) , (F -&amp;gt; F)) -&amp;gt; C (B -&amp;gt; B) (F -&amp;gt; F)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A ((B -&amp;gt; B) , (F -&amp;gt; F))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; A ((B -&amp;gt; B) , (F -&amp;gt; F)) -&amp;gt; A (B -&amp;gt; B) (F -&amp;gt; F)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A -&amp;gt; A (B -&amp;gt; B) (F -&amp;gt; F)
&lt;br&gt;&lt;br&gt;Apologies for not having anything more constructive for your system in &amp;nbsp;
&lt;br&gt;particular.
&lt;br&gt;&lt;br&gt;- John
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Type-for-row-based-languages-tp22887948p22888664.html" />
</entry>

</feed>
