summaryrefslogtreecommitdiff
path: root/libraries/base/tests/stableptr001.hs
blob: f66a616e11a329b740abee63239e2ce5f36426b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

module Main where

import Foreign

-- simple test for building/dereferencing stable ptrs

main
  = do  l <- mapM newStablePtr [1..100000]
        sum <- stable_sum l
        print sum

stable_sum :: [StablePtr Integer] -> IO Integer
stable_sum [] = return 0
stable_sum (x:xs)
  = do  x'  <- deRefStablePtr x
        freeStablePtr x
        xs' <- stable_sum xs
        return (x' + xs')