Hi Neil,<br><br>Thanks for the pointer. From first skim-through at some PropLang library & example code, I'm not seeing much similarity between the two systems. GuiHaskell looks nifty. Cheers, - Conal<br><br><div>
<span class="gmail_quote">On 12/13/06, <b class="gmail_sendername">Neil Mitchell</b> <<a href="mailto:ndmitchell@gmail.com">ndmitchell@gmail.com</a>> 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>> Thanks for your comments, Steve. They're getting me closer to a clear<br>> 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> -- CREATE VARIABLES<br><br> -- is a document open<br> document <- newVar False
<br><br> -- is a document modified<br> modified <- newVar False<br><br> -- the filename of the document, if its been saved<br> filename <- newVar Nothing<br><br> -- SET UP RELATIONS BETWEEN PROPERTIES
<br> txt!enabled =<= document<br> new!enabled =< with1 document not<br> saveas!enabled =< with2 document modified (&&)<br> --save!enabled =< with2 document modified (&&)<br> save!enabled =< (&&) =$$= document =$= modified
<br> close!enabled =<= document<br> revert!enabled =<= modified<br><br> -- SUPPORTS EVENTS TOO<br> new!onClicked += newDocument gui<br> save!onClicked += saveDocument gui<br> saveas!onClicked += saveAsDocument gui
<br> close!onClicked += closeDocument gui<br> open!onClicked += openDocument gui<br><br> -- COOL AND SIMPLE UNDO<br> revert!onClicked += (txt!text -<- lasttxt)<br><br> modified =< with2 (txt!text) (lasttxt) (/=)
<br><br> let titleformat d m f = "TextEditor" ++<br> (if d then " - " ++ maybe "<untitled>" id<br>f else "") ++<br> (if m then " *" else "")
<br><br> -- REALLY COOL SETTING OF THE TITLE AUTOMATICALLY<br> window!text =< titleformat =$$= document =$= modified =$= filename<br><br> -- CREATE A STATUS BAR WITH THE WORD COUNT IN ONE LINE!<br> sb!text =< (\x -> "Word count: " ++ 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>