class Sequencer {
private collection = []
def seq(list) {
collection = list
this
}
def yield(c) { collection.collect c }
def call(obj) { obj }
}
def sequencer = new Sequencer()
def seq = sequencer.&seq
def yield = sequencer.&yield
seq(1..10) yield { it ** 2 }
// equivalent to
// seq(1..10).call(yield { it ** 2 })