 		}
 	}
 
-	/// Reverse the list
+	/// Returns the elements of the reciever in reverse order.
+	///
+	/// For infinite lists this function will diverge.
 	public func reverse() -> List<A> {
 		return self.reduce(flip(List.cons), initial: [])
 	}
 
 	/// Given a predicate, searches the list until it find the first match, and returns that,
 	/// or None if no match was found.
+	///
+	/// For infinite lists this function will diverge.
 	public func find(pred: A -> Bool) -> Optional<A> {
 		for x in self {
 			if pred(x) {

		return UInt(self.len)
	}

	/// Maps a function over the list.
	public func map<B>(f : A -> B) -> List<B> {
		switch self.match() {
		case .Nil:

		}
	}

	/// Like scanl but draws its initial value from the first element of the reciever itself.
	public func scanl1(f : A -> A -> A) -> List<A> {
		switch self.match() {
		case .Nil:
