 		var list = self
 		return GeneratorOf {
 			switch list {
-			case .Nil: return nil
-			case let .Node(x, _): return x
+			case let .Node(x, next):
+				list = next[0]
+				return x
+			case .Nil:
+				return nil
 			}
 		}
 	}

/// A singly-linked lazy list.
enum List<Element> {
	case Nil
	case Node(Element, List<Element>[]?)
	
	/// Nil case.
	init() {

	
	/// List of one element.
	init(_ element: Element) {
		self = .Node(element, [ List.Nil ])
	}
	
	/// Prepending.
	init(_ element: Element, rest: List<Element>) {
		self = .Node(element, [ rest ])
	}
	
	/// N-ary list from a generator.
