main
 1package domain
 2
 3type Predicate func(Movie) bool
 4
 5func (self Predicate) Or(other Predicate) Predicate {
 6	return func(m Movie) bool {
 7		return self(m) || other(m)
 8	}
 9}
10
11func (self Predicate) And(other Predicate) Predicate {
12	return func(m Movie) bool {
13		return self(m) && other(m)
14	}
15}
16
17func (self Predicate) Not() Predicate {
18	return func(m Movie) bool {
19		return !self(m)
20	}
21}