[Haskell-cafe] Markov Text Generator & Randomness

Ben Gamari ben at smart-cactus.org
Thu Jul 24 13:55:42 UTC 2014

Charles-Pierre Astolfi <cpa at crans.org> writes:

>>     "The old man looked from his glass across the square, then over at the waiters."
> You're embarrassingly right! But then, "those the" definitely never
> appears, altough it does in my generated text.
>> Otherwise my cursory look turned up no bugs.
> Unfortunately there is :(

Ahh yes, looking a bit more closely now I have a few points:

  1. In `draw`: The first argument is an action which will return a new
     word. Instead of passing `rword :: RVar Word`, you presumably rather want to
     pass `word :: Word`. This is likely the cause of your bug.
  2. In `draw`: Instead of `weightedSample` which produces a random shuffling of
     the entire list,  you really just want to draw a single word. This
     is a categorical distribution; use `Data.Random.Categorical.fromList`
     to construct the distribution and `R.rvar` to draw a variate. Note
     that you may only want to avoid doing the former more than once as
     construction of the distribution requires sorting and normalizing.

  3. `map (\(x,y)->(y,x))` is just `map swap` where `swap` is provided
     by `Data.Tuple`.

My quick rework of your code can be found here [1].


- Ben

[1] http://lpaste.net/108025
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 472 bytes
Desc: not available
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140724/e1b556b6/attachment.sig>

More information about the Haskell-Cafe mailing list