--- /dev/null
+(* $Id$ *)
+
+open GMain
+
+let rec fix ~f ~eq x =
+ let x' = f x in
+ if eq x x' then x
+ else fix ~f ~eq x'
+
+let eq_float x y = abs_float (x -. y) < 1e-13
+
+let _ =
+ let top = GWindow.window () in
+ top#connect#destroy ~callback:Main.quit;
+ let vbox = GPack.vbox ~packing: top#add () in
+ let entry = GEdit.entry ~max_length: 20 ~packing: vbox#add () in
+ let tips = GData.tooltips () in
+ tips#set_tip entry#coerce ~text:"Initial value for fix-point";
+ let result =
+ GEdit.entry ~max_length: 20 ~editable: false ~packing: vbox#add () in
+
+ entry#connect#activate ~callback:
+ begin fun () ->
+ let x = try float_of_string entry#text with _ -> 0.0 in
+ entry#set_text (string_of_float (cos x));
+ let res = fix ~f:cos ~eq:eq_float x in
+ result#set_text (string_of_float res)
+ end;
+ top#show ();
+ Main.main ()