Parametric polymorphism: Difference between revisions

(Omit Axe)
Line 969:
left?.replaceAll(value)
right?.replaceAll(value)
}
}</lang>
 
Another version based on Algebraic Data Types:
{{works with|Swift|2+}}
<lang swift>enum Tree<T> {
case Empty
indirect case Node(T, Tree<T>, Tree<T>)
func map<U>(f : T -> U) -> Tree<U> {
switch(self) {
case .Empty : return .Empty
case let .Node(x, l, r): return .Node(f(x), l.map(f), r.map(f))
}
}
}</lang>
Anonymous user