116 self.components.iter() |
116 self.components.iter() |
117 } |
117 } |
118 } |
118 } |
119 |
119 |
120 |
120 |
121 impl<Domain : Copy, M> Apply<Domain> for Sum<Domain, M> |
121 impl<Domain, M> Apply<Domain> for Sum<Domain, M> |
122 where M : Mapping<Domain>, |
122 where M : Mapping<Domain>, |
123 M::Codomain : std::iter::Sum { |
123 M::Codomain : std::iter::Sum { |
124 type Output = M::Codomain; |
124 type Output = M::Codomain; |
125 |
125 |
126 fn apply(&self, x : Domain) -> Self::Output { |
126 fn apply(&self, x : Domain) -> Self::Output { |
|
127 self.components.iter().map(|c| c.apply(&x)).sum() |
|
128 } |
|
129 } |
|
130 |
|
131 impl<'a, Domain, M> Apply<&'a Domain> for Sum<Domain, M> |
|
132 where M : Mapping<Domain>, |
|
133 M::Codomain : std::iter::Sum { |
|
134 type Output = M::Codomain; |
|
135 |
|
136 fn apply(&self, x : &'a Domain) -> Self::Output { |
127 self.components.iter().map(|c| c.apply(x)).sum() |
137 self.components.iter().map(|c| c.apply(x)).sum() |
128 } |
138 } |
129 } |
139 } |
130 |
140 |
131 impl<Domain, M> Differentiable<Domain> for Sum<Domain, M> |
141 impl<Domain, M> Differentiable<Domain> for Sum<Domain, M> |