jw
01/02/2016, 5:44 AMfun <T> Sequence<T>.defaultIfEmpty(value: T): Sequence<T> {
val upstream = this;
return object : Sequence<T> {
private val delegate: Iterator<T> by lazy {
val first = upstream.iterator()
if (first.hasNext()) first else listOf(value).iterator()
}
override fun iterator() = object: Iterator<T> by delegate {}
}
}