 	}
 	
 	/// Returns the first n elements of a `Stream`.
-	public func take(n : UInt) -> [T] {
+	public func take(n : UInt) -> [Element] {
 		if n == 0 {
 			return []
 		}

	}
	
	/// Returns the longest suffix remaining after a predicate holds.
	public func dropWhile(p : T -> Bool) -> Stream<T> {
		if p(self.step().head) {
			return self.step().tail.dropWhile(p)
		}

}

extension Stream : ArrayLiteralConvertible {
	public init(fromArray arr : [Element]) {
		self = Stream.cycle(arr)
	}
	
	public init(arrayLiteral s : Element...) {
		self.init(fromArray: s)
	}
}
