Чан чарс чан слов - PullRequest
       1

Чан чарс чан слов

1 голос
/ 08 марта 2020

Как я могу сделать слова чан из символов чан?

У меня есть чан c, который читает все символы из файла. И мне нужны слова (str) chan из c chan. (Слова должны быть сделаны из с, а не из файла)

  (def file-as-str (slurp "src/clojure2/text.txt"))
    (def read (str/split file-as-str #""))

(defn ch
  [c]
  (go
    (doseq [o read]
      (>! c o)
      ))
  )

(defn word
  [c]
  (let [k (chan)]
    (go-loop []
      (let [o (<! c)]
        (when (not= " " o)
          (>! k o)
          (recur))))
    k))

(defn -main
  [& args]

  (let [c (chan)
        words (chan)]

    ;(go-loop []
    ;  (let [o (<! c)]
    ;    (println o))
    ;  (recur))

    (ch c)
    (word c)
    )
  )

UPDATE И поэтому я сделал функцию который возвращает чан символов для 1 слова. Но я не понимаю, как объединить это в 1 слово

1 Ответ

3 голосов
/ 09 марта 2020

Вы можете создать chan с преобразователем, который преобразует входящие символы в исходящие слова.

  (let [ch (async/chan 100 (comp
                             (partition-by (complement #{\space}))
                             (map #(apply str %))
                             (remove #{" "})))]
    (doseq [c "Hello, world! "]
      (async/>!! ch c))

    (async/<!! (async/into [] (async/take 2 ch))))

=> ["Hello," "world!"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...