[Haskell-cafe] Trapped by the Monads
Piyush P Kurur
ppk at imsc.res.in
Tue Sep 20 11:44:14 EDT 2005
On Tue, Sep 20, 2005 at 04:30:25PM +0100, Neil Mitchell wrote:
> Take a look at unsafePerformIO, it is of type IO a -> a. Its not
> particularly "safe" (the name gives a clue), but it does what you
> want.
>
I dont think you would ever need to do unsafePerformIO unless
you are writing some lib calls or some such thing
> > onMouse w streams isEditChecked mouse
> > = case mouse of
> > MouseLeftDown pt mods ->
> > if isEditChecked then
> > findStream w streams pt
> > else
> > addStream w streams pt
> > other -> skipCurrentEvent --
In your case the approach should be some thing along these lines
onMouse w streams isEditChecked mouse
= do
ischecked <- isEditChecked
case mouse of
if ischecked then
findStream w streams pt
...
I am assuming that findStream w streams pt is of type IO a for
some a. otherwise you might have to use something like
return $ findStream w streams pt
Also the function onMouse will return some IO something. Remember there is
no real reason to use unsafePerformIO unless you are writing some new
IO library call.
ppk
More information about the Haskell-Cafe
mailing list