<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>An eclectic-pencil blog &#187; Oz-Mozart</title>
	<atom:link href="http://plymouthreliable.com/blog/index.php/category/software-development/oz-mozart/feed/" rel="self" type="application/rss+xml" />
	<link>http://plymouthreliable.com/blog</link>
	<description>A software developer&#039;s blog on all things Curl Surge RTE, Smalltalk Seaside, ICON UNICON, ObjectIcon, Rebol, Logtalk</description>
	<lastBuildDate>Mon, 10 May 2010 17:29:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Falcon Programming Language advancing</title>
		<link>http://plymouthreliable.com/blog/2009/06/27/falcon-programming-language-advancing/</link>
		<comments>http://plymouthreliable.com/blog/2009/06/27/falcon-programming-language-advancing/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 15:50:00 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Falcon]]></category>
		<category><![CDATA[Io]]></category>
		<category><![CDATA[Io language]]></category>
		<category><![CDATA[Oz]]></category>
		<category><![CDATA[Oz-Mozart]]></category>
		<category><![CDATA[Software development]]></category>

		<guid isPermaLink="false">http://plymouthreliable.com/blog/2009/06/27/falcon-programming-language-advancing/</guid>
		<description><![CDATA[I had a note from Giancarlo Niccolai bring me up-to-date on Falcon which has now reached version 0.9.2
Falcon is a multi-paradigm language &#8211; not yet as multiply gifted as Oz, but on its way.
The plans for Falcon from here to 1.0 are very ambitious: like Io, it is a language to keep an eye on. [...]]]></description>
			<content:encoded><![CDATA[<p>I had a note from <a href="http://falconpl.org/index.ftd?page_id=member_home&#038;member_id=jonnymind">Giancarlo Niccolai</a> bring me up-to-date on <a href="http://falconpl.org/">Falcon</a> which has now reached version 0.9.2</p>
<p>Falcon is a multi-paradigm language &#8211; not yet as multiply gifted as <a href="http://www.mozart-oz.org/">Oz</a>, but on its way.</p>
<p>The plans for Falcon from here to 1.0 are very ambitious: like <a href="http://www.iolanguage.com/">Io</a>, it is a language to keep an eye on. Are you coming with?</p>
]]></content:encoded>
			<wfw:commentRss>http://plymouthreliable.com/blog/2009/06/27/falcon-programming-language-advancing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oz 1.4.0 released at mozart-oz.org</title>
		<link>http://plymouthreliable.com/blog/2008/08/10/oz-140-released-at-mozart-ozorg/</link>
		<comments>http://plymouthreliable.com/blog/2008/08/10/oz-140-released-at-mozart-ozorg/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 00:28:06 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Oz-Mozart]]></category>

		<guid isPermaLink="false">http://plymouthreliable.com/blog/2008/08/10/oz-140-released-at-mozart-ozorg/</guid>
		<description><![CDATA[Oz 1.4.0 was released about a month ago at mozart-oz.org but there are as yet few changes evident at the web site.
For example, the documentation still discusses enabling Oz applets for Netscape &#8230; with no mention of any other browser.
The Oz team has been working on enhancing Oz as a language for distributed systems. Here [...]]]></description>
			<content:encoded><![CDATA[<p>Oz 1.4.0 was released about a month ago at mozart-oz.org but there are as yet few changes evident at the web site.<br />
For example, the documentation still discusses enabling Oz applets for Netscape &#8230; with no mention of any other browser.<br />
The Oz team has been working on enhancing Oz as a language for distributed systems. Here is a quote from mozart-oz.org:</p>
<blockquote><p>The Mozart system provides state-of-the-art support in two areas: open distributed computing and constraint-based inference. Mozart implements Oz, a concurrent object-oriented language with dataflow synchronization. Oz combines concurrent and distributed programming with logical constraint-based inference, making it a unique choice for developing multi-agent systems. Mozart is an ideal platform for both general-purpose distributed applications as well as for hard problems requiring sophisticated optimization and inferencing abilities.</p></blockquote>
<p>Oz may be best-known through the MIT Press book by Peter van Roy, known on lambda-the-ultimate as <a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&#038;tid=10142">CTM</a>.  You can find a list of related papers on Oz at http://www.ps.uni-sb.de/Papers/ among other work of his colleagues.  If you have Joe Armstrong&#8217;s book on Erlang or remember any Prolog, you might like this book on Oz as a multiparadigm language.</p>
<p>The programming interface of Mozart remains Emacs. After installing Oz,  the Oz menu on your Emacs toolbar will now include a Distribution Panel in addition to the debugger and profiler.</p>
<p>O&#8217;Reilly has a book coming on real-world Haskell: a book on real-world Oz is over-due.</p>
<p>The next major Oz event will be the (eventual) release of Oz 1.5.0 by which time we should have Rebol 3.0 and a new version of dataflow for Rebol from <a href="http://www.pointillistic.com/open-REBOL/moa/steel/liquid/index.html">Liquid</a> Steel tools.</p>
]]></content:encoded>
			<wfw:commentRss>http://plymouthreliable.com/blog/2008/08/10/oz-140-released-at-mozart-ozorg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oz, Ocaml, Alice and Fsharp</title>
		<link>http://plymouthreliable.com/blog/2007/07/09/oz-ocaml-alice-and-f/</link>
		<comments>http://plymouthreliable.com/blog/2007/07/09/oz-ocaml-alice-and-f/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 23:39:12 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Oz-Mozart]]></category>
		<category><![CDATA[Software development]]></category>

		<guid isPermaLink="false">http://plymouthreliable.com/blog/2007/07/09/oz-ocaml-alice-and-f/</guid>
		<description><![CDATA[The availability of F# for VisualStudio.net (for now only available in the VS tool window) raises the prospect of multi-paradigm programming on the CLR.
We already have a Haskell for VS and now a variant of Ocaml. There are prolog implementations, a Smalltalk+Lisp, a pascal and so the possibility of a new edition of the CTM [...]]]></description>
			<content:encoded><![CDATA[<p>The availability of <a href="http://research.microsoft.com/fsharp/fsharp.aspx">F#</a> for VisualStudio.net (for now only available in the VS tool window) raises the prospect of multi-paradigm programming on the CLR.</p>
<p>We already have a <a href="http://www.haskell.org/visualhaskell/">Haskell for VS</a> and now a variant of <a href="http://caml.inria.fr/">Ocaml</a>. There are <a href="http://prolog.hodroj.net/">prolog</a> <a href="http://www.dcs.ed.ac.uk/home/stg/Psharp/">implementations</a>, a <a href="http://www.vistascript.net">Smalltalk+Lisp</a>, a <a href="http://plas2003.fit.qut.edu.au/gpcp/NET.aspx">pascal</a> and so the possibility of a new edition of the <a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&#038;tid=10142">CTM</a> book.</p>
<p>In 2004, <a href="http://www.info.ucl.ac.be/~pvr/cvvanroy.html">Peter Van Roy&#8217;s </a>excellent, balanced text was only missing C# delegates and attention to Javascript as prototype-based programming.  With a few additions it would be an easy re-write for .NET &#8211; once there is a version of <a href="http://www.ps.uni-sb.de/alice/">Alice</a>.NET to stand in for <a href="http://www.mozart-oz.org">Mozart-Oz</a>.</p>
<p>CTM systematically covers the design decisions that went into multi-paradigm programming in Oz.  Along the way there are sections on prolog, pascal, java, C++ and Erlang.  But Mozart-Oz has never had an IDE beyond emacs+Tk ( and even without linking in QTk on windows XP, the Oz interactive programming environment sometimes allows a mouse click on the Browser window to send either tk.exe or ozengine.exe into chewing up all the cycles of my CPU.) In fairness, Alice is Gtk.  And not to knock Tcl/Tk which I just love regardless.  And there is no chapter section on <a href="http://www.rebol.com">Rebol</a> or domain-specific languages (SQL, XSLT) and no index entry for ISAM.  Or M.I.T&#8217;s own <a href="http://www.cag.lcs.mit.edu/curl/">Curl</a>. Or <a href="http://citeseer.ist.psu.edu/245657.html">CLU</a>.</p>
<p>It is just that CTM is not a language book: it is about Concepts, Techniques and Models.  There is likely no more even-handed treatment of declarative, imperative and object-oriented programming.  And what you get is a thorough introduction to a concurrent form of data-flow programming.  The sections on topics such as composition versus inheritance are very fair.  Even then, the <a href="http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_BETA_hovedside.html">Beta</a> inheritors of Simula will feel neglected. But they have their own <a href="http://www.daimi.au.dk/~beta/Books/index.html">books</a>.  As do Scheme and LISP, whose followers might also feel slighted.  But Oz flows from <a href="http://www.cs.mu.oz.au/research/mercury/information/features.html">Mercury</a> which was pure prolog.</p>
<p>CTM for Alice-on-CLR could also use a chapter or section on <a href="http://prog.vub.ac.be/SOUL/index.html">Smalltalk/SOUL</a>, <a href="http://www.jot.fm/issues/issue_2002_05/article1">SmallInterfaces</a>, <a href="http://www.strongtalk.org/">Strongtalk</a>, <a href="http://research.sun.com/self/">Self</a> and <a href="http://slate.tunes.org/">Slate</a> to fill the gap in its benign neglect of Javascript.  After all, what&#8217;s a thousand pages once you are over the 900 mark &#8230; by adding a bit on <a href="http://www.latrobe.edu.au/philosophy/phimvt/joy.html">Joy</a>, the language and <a href="http://www.iolanguage.com">Io</a>, the language, and Cecil/Diesel.  Oh, not to forget <a href="http://www.iam.unibe.ch/~scg/Research/Traits/">Squeak/Traits</a> and <a href="http://www.croquetconsortium.org">Croquet, the OS</a>.</p>
<p>The only other thing to make me happier would be to see Pragmatic Programmer have an Oz book to match the <a href="http://www.pragmaticprogrammer.com/titles/jaerlang/">Erlang</a> book.</p>
<p>Btw, the Prentice-Hall India version of CTM is on thin paper in mimeo quality (very transparent) but also very affordable.</p>
<p>But the worst of it will be google: just try a search on <a href="http://www.google.com/search?q=F%23+Alice&#038;rls=com.microsoft:en-us:IE-SearchBox&#038;ie=UTF-8&#038;oe=UTF-8&#038;sourceid=ie7&#038;rlz=1I7SUNA">F# and Alice</a>.  Arghhh&#8230;</p>
<p>A second edition of CTM will be welcome given the number of relevant developments since its publication by MIT Press (when in Boston, do visit the MIT Press <a href="http://mitpress.mit.edu/bookstore/">bookstore</a>: it is a treat.)</p>
<p>And if we can not get another edition of CTM, then perhaps a <a href="http://www.futureofthebook.org/">future-of-the-book</a> project would be to have CTM, well, not evolve, but adapt over time &#8230; well, <a href="http://www.sophieproject.org/">Sophie</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://plymouthreliable.com/blog/2007/07/09/oz-ocaml-alice-and-f/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scaling the outer walls:  Oz/Mozart, osc and ozengine</title>
		<link>http://plymouthreliable.com/blog/2007/06/13/scaling-the-outer-walls-ozmozart-osc-and-ozengine/</link>
		<comments>http://plymouthreliable.com/blog/2007/06/13/scaling-the-outer-walls-ozmozart-osc-and-ozengine/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 20:40:19 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Oz-Mozart]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Tool tip]]></category>
		<category><![CDATA[programming tip]]></category>

		<guid isPermaLink="false">http://plymouthreliable.com/blog/2007/06/13/scaling-the-outer-walls-ozmozart-osc-and-ozengine/</guid>
		<description><![CDATA[Positive: There is an Oz tutorial started at eclectic
Warning: since Unicode there is no longer a single quote and a dbl-quote character: just as the left-Alt key was never the same scan code as the right-Alt key.  In all that follows, copy the code into a reliable ANSI code editor and flip all &#8217;single&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Positive: There is an Oz tutorial started at <a href="http://www.plymouthreliable.com/blog/ozmozart-tutorial">eclectic</a><br/><br />
Warning: since Unicode there is no longer a single quote and a dbl-quote character: just as the left-Alt key was never the same scan code as the right-Alt key.  In all that follows, copy the code into a reliable ANSI code editor and flip all &#8217;single&#8217; quotes to an ANSI apostrophe as on an American ASCII QWERTY keyboard and all dbl quotes to a SHIFT-apostrophe.  Otherwise you are left with left single quotes, right-single quotes, left-dbl-quotes and right-dbl-quotes which will cause errors in Mozart.  Do not use &#8216;back-tick&#8217; (unshifted-~) as your apostrophe character.</p>
<p>You should not have to be a Prolog programmer to learn Oz, but short of being one already, what sense could you make of the errors you will encounter trying to follow the introduction to compiling an Oz application?  The &#8216;Aufhebung&#8217; issue again.  Or you must almost know it just to learn it.</p>
<p>Here goes.</p>
<p>In Rebol you would just script it so:<br />
<blockquote>write %dump.txt read http://localhost:8080/perl/get_env.prl</p></blockquote>
<p>But in Oz you will need to compile to a functor, so let&#8217;s get started on the tutorial&#8217;s Webget.oz</p>
<p>You will need to wrap the file as a functor, so we start with<br />
<blockquote>functor</p>
<p>end</p></blockquote>
<p>We will open STDIN and STDOUT so we need Open and this will be an Application so we will import both:<br />
<blockquote>functor<br />
import<br />
&nbsp;&nbsp;&nbsp;Application<br />
&nbsp;&nbsp;&nbsp;Open<br />
end
</p></blockquote>
<p>What follows is the code from the tutorial which will <strong>not</strong> compile (<strong>not</strong> in OPI, <strong>not</strong> on a cmd line):<br />
<blockquote>
<pre><code>
functor
import
  Application
  Open
define
   Args = {Application.getArgs record('in'(single type:string)
                                  'out'(single type:string))}
   Status = try
	I={New Open.file init(url:  Args.'in')}
	O={New Open.file init(name: Args.'out'
        flags:[write create truncate])}
	in
	  local
	      proc { Copy}
	          S={I read(list:$)}
	       in
	          if S=="" then
	             {O write(vs:S)} { Copy}
	          end
	       end
	    in
	{ Copy}
    end
	catch _ then 1
	end
{Application.exit Status}
end</code></pre>
</blockquote>
<p>The warning we will receive will be an <strong>arity mismatch</strong> for <em>Copy</em>.<br />
I experimented with {CopyWWW _} and with {CopyWWW X} in place of {Copy}<br />
Running <em>ozc -c</em> in <strong>TextPad</strong> compiles succesfully by using <em>{Copy _}</em> in the first 2 occurences of <em>{Copy}</em>.  Ditto for selecting &#8216;Compile File&#8217; on the emacs <em>oz</em> menu.<br />
Now on to compiling that <em>oza</em> file.<br />
To get the <em>oza</em> file I had to use a cmd session: </p>
<blockquote><p>ozc -c Webget.oz -o Webget.oza</p></blockquote>
<p>Otherwise compiling (in TextPad or emacs) gave me just Webget.ozf<br />
Now I could run the ozengine against a web page: </p>
<blockquote><p><code>ozengine Webget.oza --in http://localhost:8080/perl/get_env.prl --out dump.txt</code></p></blockquote>
<p>The program will only exit with CTRL-C CTRL-C and leaves file handles open but if you are content to run it just once </p>
<blockquote><p>type dump.txt</p></blockquote>
<p>Oops&#8230; no file?</p>
<p>We back track by revisiting the code.</p>
<blockquote><pre><code>
functor
import
  Application
  Open
  Show           ; we will try to Show Status
define
   Args = {Application.getArgs record(
                'in'(single type:string)
                'out'(single type:string))}  ;; variable names are words
   Status = try
	In={New Open.file init(url:  Args.'in')}
	Out={New Open.file init(name: Args.'out'
        flags:[write create truncate])}
	in
	  local
	      proc { Copy}
	          Str={In read(list:$)}   ;; lhs var name is now a word
	       in
	          if Str=="" then
	             {Out write(vs:Str)} { Copy}
	          end
                     {In close}
                     {Out close}
	       end
	    in
	{ Copy}
    end
               0   ;; this was a missing ZERO as in 'success' ?
                    ;; (given that a ONE follows next on error)
	catch _ then
                    {Show Status}
                    1   ;; any exception is failure -
                        ;; was the file readonly?
	end
{Application.exit Status}     ;; Status remains unknown
end</code></pre>
</blockquote>
<p>Now we compile without ARITY issues &#8230; but still fail to write a file &#8230;</p>
<p>So now to look at <a href="http://www.info.ucl.ac.be/~pvr/ds/mitbook.html">file IO</a>.</p>
<p>Hmm.  The file io.oz offered for our edification has no error handling.</p>
<p>We try Webget2.oz for local disk files as follows:
<pre><code>
<blockquote>functor
import
   Application Open
define
   Args = {Application.getArgs record('in' (single type:string)
                                                'out' (single type:string))}
   Status = try
	In={New Open.file init(name: Args.'in')}
	Out={New Open.file init(name: Args.'out'
        flags:[write create truncate])}
	in
	  local
	      proc { Copy }
	          Str={In read(list:$)}
	       in
	          if Str=="" then
	             {Out write(vs:Str)}
	             { Copy }
	          end
	          {In close}
	          {Out close}
	       end
	    in
	{ Copy }
    end
    0
	catch _ then
		1
	end
{Application.exit Status}
end</code></pre>
</blockquote>
<p>Which works great so the issue is reading the URL &#8230; It comes up in the browser and Rebol reads it fine as follows:</p>
<blockquote><p>write %dump.txt &#8220;&#8221; ; we nix that file<br />
write %dump.txt read http://localhost:8080/perl/get_env.prl</p></blockquote>
<p>in a Rebol shell. So   </p>
<blockquote><p>if Str\=&#8221;" then</p></blockquote>
<p> must be non-terminating for some URL&#8217;s on Win32.  So we will read the whole URL first.<br />
Now, <a href="http://www.mozart-oz.org/documentation/loop/node1.html#label1">how to iterate over a list</a> &#8230; and then we start back at <a href="http://www.mozart-oz.org/documentation/base/index.html">Lists</a> and progress to the list <a href="http://www.mozart-oz.org/documentation/base/index.html">module</a></p>
]]></content:encoded>
			<wfw:commentRss>http://plymouthreliable.com/blog/2007/06/13/scaling-the-outer-walls-ozmozart-osc-and-ozengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.489 seconds -->
