Advertisement
Guest User

Untitled

a guest
Jan 26th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (defonce c2 (chan))
  2.  
  3. (defn vec-to-chan[vec]
  4.   (let [c (a/chan)]
  5.     (a/go (doseq [x vec]
  6.             (>! c x))
  7.       (a/close! c))
  8.     c))
  9.  
  10. (defn prn1 [c1]
  11.   (go-loop []
  12.     (let [msg (<! c1)]
  13.       (if (not= msg nil) (println msg))
  14.       (recur))))
  15.  
  16. (def c1 (vec-to-chan [0 1 2 0 1 2 0 :reset 0 1 2 3 0 1 2 0 1 2 :reset 1]))
  17. (prn1 c2)   ; ЧТОБЫ СРАЗУ ВЫВОДИТЬ СООБЩЕНИЯ ПОСЛАННЫЕ В КАНАЛ с2
  18.  
  19. ;ЗАДАНИЕ НАЧИНАЕТСЯ ЗДЕСЬ
  20.  
  21. (defn mefun1 [c1 c2]
  22.   (go-loop [v[]]
  23.     (if-let [msg (<! c1)]
  24.       (if (not= msg :reset)
  25.         (if (.contains v msg)
  26.           (do
  27.             (recur v))  
  28.           (do
  29.             (>! c2 msg)
  30.             (recur (conj v msg))))
  31.         (recur (subvec v 0 0))))))    
  32.  
  33. (mefun1 c1 c2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement