caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Attila Kondacs <attila@zurich.ai.mit.edu>
To: caml-list@inria.fr
Subject: [Caml-list] native-code and byte-code compiler differences
Date: Fri, 29 Mar 2002 16:00:41 -0500 (EST)	[thread overview]
Message-ID: <Pine.LNX.4.21.0203291538590.19082-100000@neuchatel.ai.mit.edu> (raw)

the following is a code segment that opens a window and if 'q' is
pressed  on the keyboard it closes it. It works with the byte code
compiler fine but does not react to pressed keys when compiled with the
native code compiler (using ocaml 3.04 for debian - from the unstable
distribution).

According to the ocaml manual this may happen if there is devision by 0
caught as an exception, or stack overflow, or if signal handling is
involved. The first two cases are out of question here, and as far as I
know reading mouse and keyboard events do not involve signals. So what's
wrong here? and how can it be put right?

here is the code:


open Graphics;;
let rec find_char_action_pair = fun pairlist (a:char) ->
  match pairlist with
    | hd::tl -> if (fst hd) = a then (snd hd) else find_char_action_pair
tl a
    | [] -> (fun () -> ());;
	
let map_keyboard = fun  ?(mouse_action = (fun () -> ())) charactionlist ->
  let st = ref true in
    while !st = true do
      if mouse_action != (fun () -> ())
      then (if (try button_down() with Graphic_failure _
	      -> (open_graph ""; button_down ()))
	    then mouse_action ());
      if key_pressed()
      then (match read_key() with
	      | 'q' -> 
		  begin
		    ((find_char_action_pair charactionlist 'q' )());
		    st := false 
		  end
	      | a -> ((find_char_action_pair charactionlist a )()));
    done;;

open_graph "";;

map_keyboard
  [ ' ' , (fun () -> print_string "\n yes, it works!!")];;

close_graph();;	

 
-------------------
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


             reply	other threads:[~2002-03-31 18:04 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-29 21:00 Attila Kondacs [this message]
2002-03-31 18:59 ` Michel Quercia
2002-03-31 19:09 ` Sylvain LE GALL
2002-03-31 19:32 ` Tim Freeman
2002-04-02 17:14 ` Andrej Bauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.21.0203291538590.19082-100000@neuchatel.ai.mit.edu \
    --to=attila@zurich.ai.mit.edu \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).