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