Use Debug.Trace.
It does not make sense to declare that heap is a monad, as a monad is an 
abstraction of sequencing computations, and a heap is not an abstraction of 
sequencing computations at all. You don't make your String class implement the 
"rendering engine" interface just because you want to use it in a computer game 
program, equally you dont pretend that a heap is a way of sequencing 
computations just because you want to sequence computations related to heaps.

The actual computation in your case is the heapsort function, not the heap. If 
you absolutely must use IO, add IO to the functions type.

11.07.2012, в 15:19, Qi Qi <qiqi...@gmail.com> написал(а):

> Hi,
> 
> I was wondering about creating an instance of MonadIO for a heap data.
> Any hints?
> 
> data Heap a = E | T Int a (Heap a) (Heap a)
>     deriving (Eq, Ord, Read, Show)
> 
> The reason is that I want to use liftIO during a heapsort to print out
> intermediate results.
> 
> Thanks.
> 
> Qi Qi
> 
> 
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to