Hi Neil,<br><br>Thanks for the pointer.&nbsp; From first skim-through at some PropLang library &amp; example code, I'm not seeing much similarity between the two systems.&nbsp; GuiHaskell looks nifty.&nbsp;&nbsp; Cheers,&nbsp; - Conal<br><br><div>
<span class="gmail_quote">On 12/13/06, <b class="gmail_sendername">Neil Mitchell</b> &lt;<a href="mailto:ndmitchell@gmail.com">ndmitchell@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br><br>&gt; Thanks for your comments, Steve.&nbsp;&nbsp;They're getting me closer to a clear<br>&gt; explanation, which will be helpful in the paper I'm writing.<br><br>I was going to polish up PropLang before releasing it, but if you're
<br>writing a paper, and I go and release PropLang just after you've put<br>the finishing touches on it, you'll hunt me down and kill me :)<br><br>As such, here is an announcement that PropLang exists, and is cool.<br><br>
See the darcs repo: <a href="http://www.cs.york.ac.uk/fp/darcs/proplang/">http://www.cs.york.ac.uk/fp/darcs/proplang/</a> - and<br>hopefully see some documentation in the future :)<br><br>No arrows, but seems to have the same underlying idea.
<br><br>The darcs repo has a text editor (it had another sample, I'm sure, but<br>I can't see it!)<br><br>Some selected hilights:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- CREATE VARIABLES<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- is a document open<br>&nbsp;&nbsp;&nbsp;&nbsp;document &lt;- newVar False
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- is a document modified<br>&nbsp;&nbsp;&nbsp;&nbsp;modified &lt;- newVar False<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- the filename of the document, if its been saved<br>&nbsp;&nbsp;&nbsp;&nbsp;filename &lt;- newVar Nothing<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- SET UP RELATIONS BETWEEN PROPERTIES
<br>&nbsp;&nbsp;&nbsp;&nbsp;txt!enabled =&lt;= document<br>&nbsp;&nbsp;&nbsp;&nbsp;new!enabled =&lt; with1 document not<br>&nbsp;&nbsp;&nbsp;&nbsp;saveas!enabled =&lt; with2 document modified (&amp;&amp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;--save!enabled =&lt; with2 document modified (&amp;&amp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;save!enabled =&lt; (&amp;&amp;) =$$= document =$= modified
<br>&nbsp;&nbsp;&nbsp;&nbsp;close!enabled =&lt;= document<br>&nbsp;&nbsp;&nbsp;&nbsp;revert!enabled =&lt;= modified<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- SUPPORTS EVENTS TOO<br>&nbsp;&nbsp;&nbsp;&nbsp;new!onClicked += newDocument gui<br>&nbsp;&nbsp;&nbsp;&nbsp;save!onClicked += saveDocument gui<br>&nbsp;&nbsp;&nbsp;&nbsp;saveas!onClicked += saveAsDocument gui
<br>&nbsp;&nbsp;&nbsp;&nbsp;close!onClicked += closeDocument gui<br>&nbsp;&nbsp;&nbsp;&nbsp;open!onClicked += openDocument gui<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- COOL AND SIMPLE UNDO<br>&nbsp;&nbsp;&nbsp;&nbsp;revert!onClicked += (txt!text -&lt;- lasttxt)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;modified =&lt; with2 (txt!text) (lasttxt) (/=)
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;let titleformat d m f = &quot;TextEditor&quot; ++<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if d then &quot; - &quot; ++ maybe &quot;&lt;untitled&gt;&quot; id<br>f else &quot;&quot;) ++<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if m then &quot; *&quot; else &quot;&quot;)
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- REALLY COOL SETTING OF THE TITLE AUTOMATICALLY<br>&nbsp;&nbsp;&nbsp;&nbsp;window!text =&lt; titleformat =$$= document =$= modified =$=&nbsp;&nbsp;filename<br><br>&nbsp;&nbsp;&nbsp;&nbsp;-- CREATE A STATUS BAR WITH THE WORD COUNT IN ONE LINE!<br>&nbsp;&nbsp;&nbsp;&nbsp;sb!text =&lt; (\x -&gt; &quot;Word count: &quot; ++ show (length $ words x)) =$$= txt!text
<br><br>I'll write up a tutorial or something at some point.<br><br>It's written using Gtk2Hs, and works fine on both Linux and Windows.<br>GuiHaskell is written using this:<br><a href="http://www-users.cs.york.ac.uk/~ndm/projects/guihaskell.php">
http://www-users.cs.york.ac.uk/~ndm/projects/guihaskell.php</a><br><br>Thanks<br><br>Neil<br></blockquote></div><br>