1 2module Main where 3 4import Foreign 5 6-- simple test for building/dereferencing stable ptrs 7 8main 9 = do l <- mapM newStablePtr [1..100000] 10 sum <- stable_sum l 11 print sum 12 13stable_sum :: [StablePtr Integer] -> IO Integer 14stable_sum [] = return 0 15stable_sum (x:xs) 16 = do x' <- deRefStablePtr x 17 freeStablePtr x 18 xs' <- stable_sum xs 19 return (x' + xs') 20