<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2003/10/a24e55f813003425848ab701e4e4741d"
  from="Jacques Garrigue &lt;garrigue@k...&gt;"
  author="Jacques Garrigue"
  date="2003-10-22T00:59:50"
  subject="Re: [Caml-list] OCaml wishlist"
  prev="2003/10/36ad1eb7cafe994a34e3761a559f87ee"
  next="2003/10/2c38ef89fcee5bfcb051460d8e0d485f"
  prev-in-thread="2003/10/f4aa63fac624d2412ec939b942d8eb7d"
  next-in-thread="2003/10/0387387ca1566a60c7eb714103fcafca"
  prev-thread="2003/10/486acf652571889eddb2bd9834f62d74"
  next-thread="2003/10/36ad1eb7cafe994a34e3761a559f87ee"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] OCaml wishlist">
<msg 
  url="2003/10/08bd0ecfdca5cc2e49c8e01b5c9d4507"
  from="Richard Jones &lt;rich@a...&gt;"
  author="Richard Jones"
  date="2003-10-21T14:29:23"
  subject="[Caml-list] OCaml wishlist">
<msg 
  url="2003/10/cb6d61f43e94f4bec873d3522da4dfad"
  from="Michal Moskal &lt;malekith@p...&gt;"
  author="Michal Moskal"
  date="2003-10-21T15:00:19"
  subject="Re: [Caml-list] OCaml wishlist">
<msg 
  url="2003/10/5dd71e02247c880498f410c239374234"
  from="Richard Jones &lt;rich@a...&gt;"
  author="Richard Jones"
  date="2003-10-21T17:17:16"
  subject="Re: [Caml-list] OCaml wishlist">
</msg>
<msg 
  url="2003/10/2452fac51ab932ac2bd176e8183a524f"
  from="William Lovas &lt;wlovas@s...&gt;"
  author="William Lovas"
  date="2003-10-21T19:01:56"
  subject="Re: [Caml-list] OCaml wishlist">
<msg 
  url="2003/10/a1b78b7694f2d67a6e6b7db51de25f98"
  from="Alain.Frisch@e..."
  author="Alain.Frisch@e..."
  date="2003-10-21T19:46:45"
  subject="Re: [Caml-list] OCaml wishlist">
</msg>
<msg 
  url="2003/10/7497ee1b70d6745da11d738b9572fbe3"
  from="Richard Jones &lt;rich@a...&gt;"
  author="Richard Jones"
  date="2003-10-21T19:54:09"
  subject="Re: [Caml-list] OCaml wishlist">
<msg 
  url="2003/10/5ad948ee2283f3ece3b1bc3cf4238ccb"
  from="Yaron Minsky &lt;yminsky@c...&gt;"
  author="Yaron Minsky"
  date="2003-10-21T20:27:09"
  subject="Re: [Caml-list] OCaml wishlist">
</msg>
<msg 
  url="2003/10/528446ab0441688dd60d9d0c2ad9a9d3"
  from="Yaron Minsky &lt;yminsky@c...&gt;"
  author="Yaron Minsky"
  date="2003-10-21T20:53:04"
  subject="Re: [Caml-list] OCaml wishlist">
<msg 
  url="2003/10/f4aa63fac624d2412ec939b942d8eb7d"
  from="Alain.Frisch@e..."
  author="Alain.Frisch@e..."
  date="2003-10-21T21:46:42"
  subject="Re: [Caml-list] OCaml wishlist">
</msg>
</msg>
<msg 
  url="2003/10/a24e55f813003425848ab701e4e4741d"
  from="Jacques Garrigue &lt;garrigue@k...&gt;"
  author="Jacques Garrigue"
  date="2003-10-22T00:59:50"
  subject="Re: [Caml-list] OCaml wishlist">
<msg 
  url="2003/10/0387387ca1566a60c7eb714103fcafca"
  from="Brian Hurt &lt;bhurt@s...&gt;"
  author="Brian Hurt"
  date="2003-10-22T02:52:43"
  subject="Re: [Caml-list] OCaml wishlist">
<msg 
  url="2003/10/e051e894779e1d750dc514438ac003da"
  from="Michal Moskal &lt;malekith@p...&gt;"
  author="Michal Moskal"
  date="2003-10-22T15:30:15"
  subject="Re: [Caml-list] OCaml wishlist">
</msg>
</msg>
</msg>
</msg>
</msg>
</msg>
<msg 
  url="2003/10/fe6b3048ed9db4da74f54d088173989d"
  from="David Brown &lt;caml-list@d...&gt;"
  author="David Brown"
  date="2003-10-21T19:08:05"
  subject="Re: [Caml-list] OCaml wishlist">
</msg>
<msg 
  url="2003/10/23b761709f504ab6af2a1f09d8d07c5a"
  from="Alain.Frisch@e..."
  author="Alain.Frisch@e..."
  date="2003-10-21T19:18:33"
  subject="Re: [Caml-list] OCaml wishlist">
</msg>
</msg>
</thread>

<contents>
From: Richard Jones &lt;rich@annexia.org&gt;

&gt; I'm really looking for help on this! My working theory at the moment
&gt; though is that writing UIs involves writing essentially imperative
&gt; code. One small example from some real code:
&gt; 
&gt;   let quit _ =
&gt;     if !test_id = 0 then (
&gt;       GMain.Main.quit (); false
&gt;     ) else (
&gt;       let icon = GMisc.image () in
&gt;       icon#set_stock `DIALOG_QUESTION;
&gt;       icon#set_icon_size `DIALOG;
&gt;       let buttons = [ "Quit"; "Cancel" ] in
&gt;       let ans = GToolbox.question_box ~title:"Quit" ~icon ~buttons
&gt;           ("Are you sure you want to quit? This may lose any\n" ^
&gt;            "results from this assessment.") in
&gt;       if ans = 1 then (
&gt;         GMain.Main.quit (); false       (* User requested quit. *)
&gt;        )
&gt;       else
&gt;         true                            (* Don't close the window. *)
&gt;      )

This is only a problem of indentation:

  let quit _ =
    if !test_id = 0 then (GMain.Main.quit (); false) else
    let icon = GMisc.image () in
    icon#set_stock `DIALOG_QUESTION;
    icon#set_icon_size `DIALOG;
    let buttons = [ "Quit"; "Cancel" ] in
    let ans = GToolbox.question_box ~title:"Quit" ~icon ~buttons
        ("Are you sure you want to quit? This may lose any\n" ^
         "results from this assessment.") in
    ans &lt;&gt; 1 || (GMain.Main.quit (); false)

Of course you have to be careful: you can shoot yourself in the foot
with wrong indentation:

  let quit _ =
    let icon = GMisc.image () in
    if !test_id = 0 then (GMain.Main.quit (); false) else
    icon#set_stock `DIALOG_QUESTION;
    icon#set_icon_size `DIALOG;
    [...]

In this case you're just going to jump over icon#set_stock...

Jacques

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners

</contents>

</message>

