scala - Make a recursive Stream from just 1 element? -
i've made stream gray codes using recursion follows:
val gray: stream[list[string]] = { list("") #:: list("0", "1") #:: gray.tail.map {gnext} }
where
val gnext = (i:list[string]) => i.map {"0" + _} ::: i.reverse.map {"1" + _}
so that, example
scala> gray(2) res17: list[string] = list(00, 01, 11, 10)
i don't need list("0", "1") in definition, because can produced element 0:
scala> gnext(list("")) res18: list[java.lang.string] = list(0, 1)
so there way / pattern can used produce stream first element?
val gray: stream[list[string]] = list("") #:: gray.map {gnext}
or, alternatively,
val gray = stream.iterate(list(""))(gnext)
Comments
Post a Comment