 	///
 	/// It may be dangerous to attempt to iterate over an infinite list of values because the loop
 	/// will never terminate.
-	public func isFinite() -> Bool {
+	public var isFinite : Bool {
 		return self.len != -1
 	}
 

	///
	/// If the receiver is infinite, the result of this function will be the receiver itself.
	public func append(rhs : List<A>) -> List<A> {
		switch self.match() {
		case .Nil:
			return rhs
		case let .Cons(x, xs):

	///
	/// Indexing into the empty list will throw an exception.
	public subscript(n : UInt) -> A {
		switch self.match {
		case .Nil:
			return error("Cannot extract an element from an empty list.")
		case let .Cons(x, _) where n == 0:
