public Value Next(int index) { if (generator.IsNone) { generator = value.Evaluate().IfCast <IGenerator>(); } return(generator.FlatMap(generator => generator.Next(index), () => NilValue)); }