diff --git a/src/TypeUnary/Nat.hs b/src/TypeUnary/Nat.hs
--- a/src/TypeUnary/Nat.hs
+++ b/src/TypeUnary/Nat.hs
@@ -142,13 +142,13 @@
 
 -- | Index generation from integer. Can fail dynamically if the integer is
 -- too large.
-coerceToIndex :: (Integral i, IsNat m) => i -> Index m
+coerceToIndex :: (Show i, Integral i, IsNat m) => i -> Index m
 coerceToIndex = coerceToIndex' nat
 
-coerceToIndex' :: Integral i => Nat m -> i -> Index m
+coerceToIndex' :: (Show i, Integral i) => Nat m -> i -> Index m
 coerceToIndex' mOrig niOrig = loop mOrig niOrig
  where
-   loop :: Integral i => Nat m -> i -> Index m
+   loop :: (Show i, Integral i) => Nat m -> i -> Index m
    loop Zero _        = error $ "coerceToIndex: out of bounds: "
                                 ++ show niOrig ++ " should be less than "
                                 ++ show mOrig
diff --git a/src/TypeUnary/Vec.hs b/src/TypeUnary/Vec.hs
--- a/src/TypeUnary/Vec.hs
+++ b/src/TypeUnary/Vec.hs
@@ -358,12 +358,12 @@
 
 -- | Variant of 'get' in which the index size is checked at run-time
 -- instead of compile-time.
-getI :: (IsNat n, Integral i) => i -> Vec n a -> a
+getI :: (IsNat n, Show i, Integral i) => i -> Vec n a -> a
 getI = get . coerceToIndex
 
 -- | Variant of 'set' in which the index size is checked at run-time
 -- instead of compile-time.
-setI :: (IsNat n, Integral i) => i -> a -> Vec n a -> Vec n a
+setI :: (IsNat n, Show i, Integral i) => i -> a -> Vec n a -> Vec n a
 setI = set . coerceToIndex
 
 
diff --git a/type-unary.cabal b/type-unary.cabal
--- a/type-unary.cabal
+++ b/type-unary.cabal
@@ -1,5 +1,5 @@
 Name:                type-unary
-Version:             0.1.15
+Version:             0.1.16
 Cabal-Version:       >= 1.2
 Synopsis:            
   Type-level and typed unary natural numbers, inequality proofs, vectors
