Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / models / Twitter.model
channel CIO1(myId:Str) {
	out accounts(ac:List, signup(name:Str)) == cons(tuple(name, nil, nil), t1)
}

channel CIO2(id:Str) {
	out accounts.{id}.tweets(t1:List, tweet(text:Str, time:Long)) == cons(tuple(time, text), t1)
}

channel C(myId:Str; m:Json) {
	in accounts.{myId}.tweets(t1:List, m) == m.myTweets
	sub C2(no:Int; flw:Json := m.followees.{no}) {
		in accounts.{myId}.followees.{no}(id:Str, flw) == flw.id
		in accounts.{flw.id}.tweets(t2:List, flw) == flw.tweets
	}
	out accounts.{myId}.timeline(l:List, m) == merge(m.myTweets, m.followees) 
}