public static <A> F0<A> repeat(final Collection<A> col) {
		final AtomicReference<Iterator<A>> iterRef = new AtomicReference<Iterator<A>>();
		return new F0<A>() {public A e() {
			if (iterRef.get() == null || !iterRef.get().hasNext()) {
				iterRef.set(col.iterator());
			}
			return iterRef.get().next();
		}};
	}