
I'm trying to write a simple timer application (mostly to learn gui programming), and I'd like it to display 1/100ths of a second. I know I can fake this with threadDelay, but I was wondering if there's a way to get current time to more precision than one second. -- Alex R

On Sat, 24 Jul 2010 22:09:15 +0200, Alex Rozenshteyn
I'm trying to write a simple timer application (mostly to learn gui programming), and I'd like it to display 1/100ths of a second. I know I can fake this with threadDelay, but I was wondering if there's a way to get current time to more precision than one second.
That depends on the type of GUI you are using, of course. If you use wxHaskell, you can do it like this:
t <- timer f [ interval := 10 , on command := repaint ]
where f is the frame handle; you don't need to use t anywhere. The interval is defined in milliseconds. Regards, Henk-Jan van Tuyl -- http://Van.Tuyl.eu/ http://members.chello.nl/hjgtuyl/tourdemonad.html --

I'm using gtk2hs (although I might try and see how wxHaskell compares when
I've got more working).
As for the repainting, I don't think I was clear enough in my initial post:
my problem isn't how to change the value every 1/100 of a second but how to
ensure that the value I write doesn't get hugely inaccurate. I was thinking
that I'd use the system time as the data and just draw when appropriate, but
I hadn't found something that was precise enough.
I ended up finding System.Posix.Clock, which does what I need, but I don't
know if there's something more standard.
On Sun, Jul 25, 2010 at 7:30 PM, Henk-Jan van Tuyl
On Sat, 24 Jul 2010 22:09:15 +0200, Alex Rozenshteyn
wrote: I'm trying to write a simple timer application (mostly to learn gui
programming), and I'd like it to display 1/100ths of a second. I know I can fake this with threadDelay, but I was wondering if there's a way to get current time to more precision than one second.
That depends on the type of GUI you are using, of course. If you use wxHaskell, you can do it like this:
t <- timer f [ interval := 10
, on command := repaint ]
where f is the frame handle; you don't need to use t anywhere. The interval is defined in milliseconds.
Regards, Henk-Jan van Tuyl
-- http://Van.Tuyl.eu/ http://members.chello.nl/hjgtuyl/tourdemonad.html --
-- Alex R
participants (2)
-
Alex Rozenshteyn
-
Henk-Jan van Tuyl