On Fri, 2008-09-19 at 23:16 +0200, Daniel Fischer wrote:
> Yes. What's IO gotta do with it?

I did it because of randomIO :(

> (or what about StateT (Graph a b) (State StdGen) ?).

Now there's something I wouldn't have thought of... I changed the
RandomGraph type to

  type RandomGraph a b = StateT (Graph a b) (State StdGen) ()

and randomFloat to

  randomDouble :: State StdGen Double
  randomDouble = State random

and randomGraph to

  randomGraph :: StdGen -> Int -> Double -> Graph Int Int
  randomGraph gen n p = evalState (execStateT create Graph.empty) gen
    where create = mapM_ (uncurry $ createVertex p) vls
          vls    = zip [1..n] (repeat 42)

However, when I try to create a graph with 1000 vertices I get a stack
overflow, which didn't happen in the IO version. Any idea why that happens?

Thanks,
Andre

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

Reply via email to