 
 
 extension Stream {
+	/// Initializes with a ReducibleType.
 	public init<R : ReducibleType where R.Element == T>(_ reducible: R) {
 		let recur: (R, Stream, (Stream, T) -> Either<Stream, Stream>) -> Stream = fix { recur in
 			{ reducible, initial, combine in

}


public func first<T>(stream: Stream<T>) -> T? {
	switch stream {
	case .Nil: return nil

	}
}

/// Drops the first element of `stream`.
public func dropFirst<T>(stream: Stream<T>) -> Stream<T> {
	switch stream {
	case .Nil: return .Nil
