Fork me on GitHub
#missionary
<
2024-01-10
>
joshcho00:01:30

I am trying to add noised delays, but having trouble:

(defn delayed-seed 
 [d r xs]
 (m/ap (m/? (m/sleep
             (+ d
                (m/?> (repeat (rand-int r))))
             (m/?> (m/seed xs))))))
p.s. maybe it's the lack of m/seed, sleep solves bugs

Dustin Getz00:01:12

repeat doesn’t return a flow, does it? i think you need sleep :)

1
joshcho23:01:33

still having some issues, this leads to too many values (i want just length of xs number of values returned)

(defn random-delayed-seed
  [fixed-delay variable-delay xs]
  (m/ap
    (m/?
     (m/sleep
      (m/?> (m/seed
             (map #(+ fixed-delay %)
                  (repeatedly (count xs)
                              #(rand-int variable-delay)))))
      (m/?> (m/seed xs))))))

Dustin Getz23:01:22

on mobile but do you want ‘repeat not repeatedly?

❤️ 1
joshcho23:01:01

repeat leads to fixed values

joshcho23:01:20

(repeat (rand-int 10)) will lead to sth like '(2 2 2 2 2 ...)

joshcho23:01:26

running some tests rn, this doesn't work either

(letfn [(random-delayed-seed [fixed-delay variable-delay xs]
          (m/ap
            (m/?
             (m/sleep
              (m/?> (m/seed [10 20]))
              (m/?> (m/seed xs))))))]
  (->> "htnhnt"
    (random-delayed-seed 50 150)
    (m/reductions str)
    (m/reduce (fn [_ m]
                (prn m))
              nil)
    m/?))

joshcho23:01:37

essentially sleep is called 2 * (count xs) rn

xificurC23:01:00

(m/ap 
  (m/? (m/sleep (+ fixed-delay (rand-int variable-delay))
         (m/?> xs))))

joshcho23:01:09

@U09FL65DK this leads to fixed amount of variable-delay

joshcho23:01:29

assuming (m/seed xs)

xificurC23:01:58

Then (let [x (m/?> (m/seed xs))] (m/? (m/sleep ...

joshcho23:01:53

oh interesting, what's the difference?

joshcho23:01:56

that seems to work!

joshcho23:01:11

is it the ordering?