 
 /// Takes, at most, a specified number of elements from a list and returns that sublist.
 ///
-///     take(5)("Hello World!") == "Hello"
-///     take(3([1,2]) == [1,2]
-///     take(-1)([1,2]) == []
-///     take(0)([1,2]) == []
+///     take(3,  from: [1,2]) == [1,2]
+///     take(-1, from: [1,2]) == []
+///     take(0,  from: [1,2]) == []
 public func take<A>(n : Int, from list : [A]) -> [A] {
 	if n <= 0 {
 		return []


/// Drops, at most, a specified number of elements from a list and returns that sublist.
///
///     drop 6 "Hello World!" == "World!"
///     drop 3 [1,2] == []
///     drop (-1) [1,2] == [1,2]
///     drop 0 [1,2] == [1,2]
public func drop<A>(n : Int, from list : [A]) -> [A] {
	if n <= 0 {
		return list

/// Returns a list of the first elements that satisfy a predicate until that predicate returns
/// false.
///
///     takeWhile([1, 2, 3, 4, 1, 2, 3, 4], <3)  == [1, 2]
///     takeWhile([1,2,3], <9)                  == [1, 2, 3]
///     takeWhile([1,2,3], <0)                  == []
public func takeWhile<A>(list : [A], p : A -> Bool) -> [A] {
	switch match(list) {
	case .Nil:
