diff options
| author | Justin Bedo <cu@cua0.org> | 2026-01-13 14:12:54 +1100 |
|---|---|---|
| committer | Justin Bedo <cu@cua0.org> | 2026-01-13 14:12:54 +1100 |
| commit | 6d55adfed12df75a09dfd9aaf275b36151d77104 (patch) | |
| tree | 29d8e29f6d6fcb81528f228584bbb52d68a0689e /src/PPL/Sampling.hs | |
| parent | 5cdb9b15563786195cc98cd87e7eb64151a519fc (diff) | |
increase lazyness and add probilistic memoisation
Diffstat (limited to 'src/PPL/Sampling.hs')
| -rw-r--r-- | src/PPL/Sampling.hs | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/PPL/Sampling.hs b/src/PPL/Sampling.hs index 256e67b..8a74854 100644 --- a/src/PPL/Sampling.hs +++ b/src/PPL/Sampling.hs @@ -15,7 +15,6 @@ import Control.Monad.IO.Class import Data.IORef import Data.Vector qualified as V import Data.Vector.Hashtables qualified as H -import Data.Word import Numeric.Log import PPL.Internal import Streaming.Prelude (Of, Stream, yield) @@ -49,5 +48,5 @@ mh g p m = do ks <- H.keys m let (rs, qs) = splitAt (1 + floor (p * (n - 1))) (R.randoms g) n = fromIntegral (V.length ks) - void $ zipWithM (\r q -> H.insert m' (ks V.! floor (r * n)) q) rs qs + when (n > 0) $ void $ zipWithM (\r q -> H.insert m' (ks V.! floor (r * n)) q) rs qs newIORef (m', g0) |
