unfold
object Collection {
def unfold[A, S](s: S)(f: (S) => Option[(A, S)]): Collection[A]
}
unfold
cria uma coleção pegando cada par de valores retornados pela função f
para obter o item atual e calcular o próximo, enquanto a função os devolve envolvidos com Some
.
Pare de criar a coleção assim que f
retornar None
.
A primeira vez que f
é aplicado, ele é alimentado com o valor inicial s
.