home *** CD-ROM | disk | FTP | other *** search
/ PSION CD 2 / PsionCDVol2.iso / Programs / 876 / hugs.sis / OldWeak.hs < prev    next >
Encoding:
Text File  |  2000-09-21  |  1.0 KB  |  41 lines

  1. -----------------------------------------------------------------------------
  2. -- Weak.hs:    Weak Pointers
  3. --
  4. -- This library provides support for weak pointers.
  5. --
  6. -- Suitable for use with Hugs 98
  7. -----------------------------------------------------------------------------
  8.  
  9. module Weak(Weak, makeWeakPtr, derefWeakPtr) where
  10.  
  11. data Weak a
  12.  
  13. primitive makeWeakPtr  :: a -> IO (Weak a)
  14. primitive derefWeakPtr :: Weak a -> IO (Maybe a)
  15.  
  16. {-
  17. -- for testing purposes 
  18. primitive gc "primGC" :: IO ()
  19.  
  20. -- not a CAF!
  21. test z = do
  22.   { let x = [z]  -- use a list so we're sure it's heap allocated
  23.   ; print x -- this makes sure x is in whnf
  24.   ; w <- makeWeakPtr x
  25.   ; showWeakPtr w
  26.   ; gc
  27.   ; print x -- this makes sure x is still alive after the GC
  28.   ; showWeakPtr w  -- so it's probably still alive here
  29.   ; gc
  30.   ; showWeakPtr w  -- but ought to be dead by here
  31.   }
  32.  
  33. showWeakPtr :: Show a => Weak a -> IO ()
  34. showWeakPtr w = do
  35.   { x <- derefWeakPtr w
  36.   ; print x
  37.   }
  38. -}
  39.  
  40. -----------------------------------------------------------------------------
  41.