import Foundation public func map(f: T -> R)(signal: Signal) -> Signal { return Signal { subscriber in return signal.start(next: { next in subscriber.putNext(f(next)) }, error: { error in subscriber.putError(error) }, completed: { subscriber.putCompletion() }) } } public func filter(f: T -> Bool)(signal: Signal) -> Signal { return Signal { subscriber in return signal.start(next: { next in if f(next) { subscriber.putNext(next) } }, error: { error in subscriber.putError(error) }, completed: { subscriber.putCompletion() }) } }