Stream pipeline replacement: the pipeline version
The complete source of forAI_stream_replacement_after.ek9, compiled by the EK9 compiler. Shown on forAI.html.
#!ek9 defines module site.forAI.streamsafter defines class User name as String: String() active as Boolean: false recentLogin as Boolean: false User() -> name as String active as Boolean recentLogin as Boolean this.name :=: name this.active :=: active this.recentLogin :=: recentLogin isActive() as pure <- rtn as Boolean: active hasRecentLogin() as pure <- rtn as Boolean: recentLogin operator $ as pure <- rtn as String: name default operator ? defines function findActiveUsers() -> users as List of User <- active as List of User? active: cat users | filter by isActiveWithRecentLogin | collect as List of User isActiveWithRecentLogin() as pure -> user as User <- result as Boolean: user.isActive() and user.hasRecentLogin() defines program ActiveUsers() stdout <- Stdout() users <- [ User(name: "ada", active: true, recentLogin: true), User(name: "bob", active: true, recentLogin: false), User(name: "cy", active: false, recentLogin: true) ] stdout.println($findActiveUsers(users))
Download forAI_stream_replacement_after.ek9
Output
[ada]