// retoor import "scheduler" for Scheduler, Future class DataProcessor { static parse { async { |text| text.split(",") } } static filter { async { |list, fn| var result = [] for (item in list) { if (fn.call(item)) result.add(item) } return result }} static transform { async { |list, fn| var result = [] for (item in list) { result.add(fn.call(item)) } return result }} static join { async { |list, sep| list.join(sep) } } static pipeline(data) { var parse = DataProcessor.parse var filter = DataProcessor.filter var transform = DataProcessor.transform var join = DataProcessor.join var parsed = await parse(data) var filtered = await filter(parsed) { |s| s.count > 4 } var transformed = await transform(filtered) { |s| s.toList[0] } return await join(transformed, "-") } } var data = "apple,banana,cherry,date" var parse = DataProcessor.parse var parsed = await parse(data) System.print(parsed) // expect: [apple, banana, cherry, date] var filter = DataProcessor.filter var filtered = await filter(parsed) { |s| s.count > 5 } System.print(filtered) // expect: [banana, cherry] var transform = DataProcessor.transform var transformed = await transform(filtered) { |s| s.toList[0] } System.print(transformed) // expect: [b, c] var join = DataProcessor.join var joined = await join(transformed, "-") System.print(joined) // expect: b-c var result = DataProcessor.pipeline("one,two,three,four,five") System.print(result) // expect: t