     case .Nil:
       return List()
     case let .Cons(head, tail):
-      return List(f(head), ListF(l: tail.value).fmap(f))
+      return List(f(head()), ListF(l: tail.value).fmap(f))
     }
   }
 }

    self = l
  }
}


public class ListGenerator<A> : GeneratorType {
  var l : Box<List<A>?>

/// This is not currently possible with a bit of misdirection, hence the Box class.
public enum List<A> {
  case Nil
  case Cons(@autoclosure() -> A, Box<List<A>>)

  public init() {
    self = .Nil
