Hi,

Thanks for your comments, Steve.  They're getting me closer to a clear
explanation, which will be helpful in the paper I'm writing.

I was going to polish up PropLang before releasing it, but if you're
writing a paper, and I go and release PropLang just after you've put
the finishing touches on it, you'll hunt me down and kill me :)

As such, here is an announcement that PropLang exists, and is cool.

See the darcs repo: http://www.cs.york.ac.uk/fp/darcs/proplang/ - and
hopefully see some documentation in the future :)

No arrows, but seems to have the same underlying idea.

The darcs repo has a text editor (it had another sample, I'm sure, but
I can't see it!)

Some selected hilights:

   -- CREATE VARIABLES

   -- is a document open
   document <- newVar False

   -- is a document modified
   modified <- newVar False

   -- the filename of the document, if its been saved
   filename <- newVar Nothing

   -- SET UP RELATIONS BETWEEN PROPERTIES
   txt!enabled =<= document
   new!enabled =< with1 document not
   saveas!enabled =< with2 document modified (&&)
   --save!enabled =< with2 document modified (&&)
   save!enabled =< (&&) =$$= document =$= modified
   close!enabled =<= document
   revert!enabled =<= modified

   -- SUPPORTS EVENTS TOO
   new!onClicked += newDocument gui
   save!onClicked += saveDocument gui
   saveas!onClicked += saveAsDocument gui
   close!onClicked += closeDocument gui
   open!onClicked += openDocument gui

   -- COOL AND SIMPLE UNDO
   revert!onClicked += (txt!text -<- lasttxt)

   modified =< with2 (txt!text) (lasttxt) (/=)

   let titleformat d m f = "TextEditor" ++
                           (if d then " - " ++ maybe "<untitled>" id
f else "") ++
                           (if m then " *" else "")

   -- REALLY COOL SETTING OF THE TITLE AUTOMATICALLY
   window!text =< titleformat =$$= document =$= modified =$=  filename

   -- CREATE A STATUS BAR WITH THE WORD COUNT IN ONE LINE!
   sb!text =< (\x -> "Word count: " ++ show (length $ words x)) =$$= txt!text

I'll write up a tutorial or something at some point.

It's written using Gtk2Hs, and works fine on both Linux and Windows.
GuiHaskell is written using this:
http://www-users.cs.york.ac.uk/~ndm/projects/guihaskell.php

Thanks

Neil
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to