[Haskell-beginners] Randomness, lists, and unfoldr
Sriram Durbha
sriram.durbha at gmail.com
Mon Sep 13 15:24:06 EDT 2010
related question: is this also an example of para morphism?
here is my current understanding
cata morphism -> fold/reduce [ e.g. list of numbers -> sum of numbers]
ana morphism -> unfold/reproduce depending on input [ e.g. one number ->
list of reapeated instances of same number]
some functions like map can be written both as a cata and as an ana.
hylo morphism -> ana followed by cata [ e.g. recursion trees of function
calls are ana, and the return path to the final evaluation is cata]
para morphism -> kind of ana but depends on input and output generated so
far fib, fact etc?
Im not sure i understood the last one well.
Thanks
Cheers
Ram
On Mon, Sep 13, 2010 at 11:42 AM, Alex Rozenshteyn <rpglover64 at gmail.com>wrote:
> I'm trying to build a list where each entry depends on the previous one.
> Unfoldr seemed like a good idea at the time.
> Unfortunately, my values are monadic values (specifically RVars, from the
> random-fu package). Okay, shouldn't be a problem; I just monadic bind
> and...
>
> > -- example code
> > updateCell :: Bool -> RVar Bool
> > updateCell False = return False
> > updateCell True = bernoulli (0.9 :: Double)
>
> > sim = sequence $ take 20 $ unfoldr (\x -> Just (x, x >>= updateCell))
> (return True)
>
> > runRVar sim DevURandom
>
> [True,True,True,True,True,False,True,False,True,False,False,False,False,False,False,True,True,False,False,False]
>
> That output shouldn't be possible if I'm doing things right... It appears
> that each cell has an independent history. I'm stumped.
> Advice on threading monad input in general and random-fu in specific would
> be appreciated.
>
> --
> Alex R
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20100913/8522be0f/attachment.html
More information about the Beginners
mailing list