Я работаю с некоторыми вложенными Stream
с и хотели бы использовать синтаксис понимания с ними:Работа с Streams завернутые в Параметрах
def handleNestedStream(as : Stream[A]) : Stream[(A, B)] = {
a <- as
b <- makeBs(a)
} yield (a, b)
Однако функция makeBs
возвращает Option[Stream[B]]
. Я бы хотел, чтобы Option
был развернут автоматически. Кроме того, я хотел бы, чтобы вся функция возвращала None
, если makeBs
терпит неудачу. Таким образом, новая функция будет выглядеть примерно так:
def makeBs(a : A) : Option[Stream[B]] = { ... }
def handleNestedStream(as : Stream[A]) : Option[Stream[(A, B)]] = {
a <- as
b <- makeBs(a)
} yield (a, b)
Единственное изменение - это тип функции.
Как я могу выполнить что-то подобное? Может ли StreamingT
от кошек или StreamT
от скаляса помочь здесь?
Некоторые из типов являются гибкими. makeBs
может быть сделано для возврата Stream[Option[B]]
вместо Option[Stream[B]]
, если это упростит ситуацию.
Мне нужно использовать стандарт scala lib Stream
.