Картоподобная функция для возврата нескольких значений на каждой итерации цикла - PullRequest
2 голосов
/ 23 марта 2012

Есть ли разумный способ преобразовать это:

(for ([cos-t (stream-map cos t-range)]
      [sin-t (stream-map sin t-range)])
  ...)

во что-то вроде этого:

(for ([(cos-t sin-t) (... t-range)]
  ...)

Это не совсем функция карты, так как вы не можете составить списоксюда.Я просто ищу лучший и простой способ сделать это выше.

1 Ответ

4 голосов
/ 23 марта 2012

То, что вы хотите, уже доступно с помощью формы for.Используйте функцию in-parallel для объединения двух последовательностей следующим образом:

(for ([(cos-t sin-t) (in-parallel (stream-map cos t-range)
                                  (stream-map sin t-range))])
  (displayln (+ cos-t sin-t)))
...