diff --git a/pyrsistent/_checked_types.py b/pyrsistent/_checked_types.py
index <HASH>..<HASH> 100644
--- a/pyrsistent/_checked_types.py
+++ b/pyrsistent/_checked_types.py
@@ -263,6 +263,7 @@ class CheckedPVector(PythonPVector, CheckedType):
             return super(CheckedPVector.Evolver, self).append(elem)
 
         def extend(self, it):
+            it = list(it)
             self._check(it)
             return super(CheckedPVector.Evolver, self).extend(it)
 
diff --git a/tests/checked_vector_test.py b/tests/checked_vector_test.py
index <HASH>..<HASH> 100644
--- a/tests/checked_vector_test.py
+++ b/tests/checked_vector_test.py
@@ -201,4 +201,13 @@ def test_create_with_string_specification():
 
 def test_supports_weakref():
     import weakref
-    weakref.ref(Naturals([]))
\ No newline at end of file
+    weakref.ref(Naturals([]))
+
+
+def test_create_with_generator_iterator():
+    # See issue #97
+    class Numbers(CheckedPVector):
+        __type__ = int
+
+    n = Numbers(i for i in [1, 2, 3])
+    assert n == Numbers([1, 2, 3])
\ No newline at end of file
Fix #<I> Create list from iterator to avoid exhausting it when checking elements