diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+Changes in 1.2.0.0
+
+  * `Show` instance for data type now respect precedence.
+
 Changes in 1.1.0.0
 
   * GHC8.4 compatibility release. Semigroup instances added and
diff --git a/Data/Vector/Fixed/Boxed.hs b/Data/Vector/Fixed/Boxed.hs
--- a/Data/Vector/Fixed/Boxed.hs
+++ b/Data/Vector/Fixed/Boxed.hs
@@ -32,11 +32,12 @@
 import Foreign.Storable (Storable(..))
 import GHC.TypeLits
 import Prelude ( Show(..),Eq(..),Ord(..),Functor(..),Monad(..)
-               , (++),($),($!),error,seq)
+               , ($),($!),error,seq)
 
 import Data.Vector.Fixed hiding (index)
 import Data.Vector.Fixed.Mutable
-import qualified Data.Vector.Fixed.Cont as C
+import qualified Data.Vector.Fixed.Cont     as C
+import qualified Data.Vector.Fixed.Internal as I
 
 
 
@@ -90,7 +91,7 @@
 ----------------------------------------------------------------
 
 instance (Arity n, Show a) => Show (Vec n a) where
-  show v = "fromList " ++ show (toList v)
+  showsPrec = I.showsPrec
 
 instance (Arity n, NFData a) => NFData (Vec n a) where
   rnf = foldl (\r a -> r `seq` rnf a) ()
diff --git a/Data/Vector/Fixed/Internal.hs b/Data/Vector/Fixed/Internal.hs
--- a/Data/Vector/Fixed/Internal.hs
+++ b/Data/Vector/Fixed/Internal.hs
@@ -61,9 +61,13 @@
 --   function with additional type parameter which is used to fix type
 --   of vector being constructed. It could be used as:
 --
+--   > v = mkN (Proxy :: Proxy (Int,Int,Int)) 1 2 3
+--
+--   or using @TypeApplications@ syntax:
+--
 --   > v = mkN (Proxy @ (Int,Int,Int)) 1 2 3
 --
---   Or if type of @r@ is fixed elsewhere
+--   or if type of @v@ is fixed elsewhere
 --
 --   > v = mkN [v] 1 2 3
 mkN :: forall proxy v a. (Vector v a)
@@ -100,7 +104,7 @@
 --
 --   >>> import Data.Vector.Fixed.Boxed (Vec2,Vec3)
 --   >>> replicateM (Just 3) :: Maybe (Vec3 Int)
---   Just fromList [3,3,3]
+--   Just (fromList [3,3,3])
 --   >>> replicateM (putStrLn "Hi!") :: IO (Vec2 ())
 --   Hi!
 --   Hi!
@@ -657,3 +661,8 @@
 fromFoldable :: (Vector v a, T.Foldable f) => f a -> Maybe (v a)
 {-# INLINE fromFoldable #-}
 fromFoldable = fromListM . T.toList
+
+-- | Generic definition of 'Prelude.showsPrec'
+showsPrec :: (Vector v a, Show a) => Int -> v a -> ShowS
+showsPrec d v = showParen (d > 10) $ showString "fromList " . Prelude.showsPrec 11 (toList v)
+{-# INLINE showsPrec #-}
diff --git a/Data/Vector/Fixed/Primitive.hs b/Data/Vector/Fixed/Primitive.hs
--- a/Data/Vector/Fixed/Primitive.hs
+++ b/Data/Vector/Fixed/Primitive.hs
@@ -35,12 +35,13 @@
 import qualified Foreign.Storable as Foreign (Storable(..))
 import GHC.TypeLits
 import Prelude (Show(..),Eq(..),Ord(..),Num(..))
-import Prelude ((++),($),($!),undefined,seq)
+import Prelude (($),($!),undefined,seq)
 
 
 import Data.Vector.Fixed hiding (index)
 import Data.Vector.Fixed.Mutable
-import qualified Data.Vector.Fixed.Cont as C
+import qualified Data.Vector.Fixed.Cont     as C
+import qualified Data.Vector.Fixed.Internal as I
 
 
 
@@ -70,7 +71,7 @@
 ----------------------------------------------------------------
 
 instance (Arity n, Prim a, Show a) => Show (Vec n a) where
-  show v = "fromList " ++ show (toList v)
+  showsPrec = I.showsPrec
 
 instance (Arity n, Prim a, NFData a) => NFData (Vec n a) where
   rnf = foldl (\r a -> r `seq` rnf a) ()
diff --git a/Data/Vector/Fixed/Storable.hs b/Data/Vector/Fixed/Storable.hs
--- a/Data/Vector/Fixed/Storable.hs
+++ b/Data/Vector/Fixed/Storable.hs
@@ -40,11 +40,12 @@
 import GHC.Ptr               ( Ptr(..) )
 import GHC.TypeLits
 import Prelude ( Show(..),Eq(..),Ord(..),Num(..),Monad(..),IO,Int
-               , (++),($),undefined,seq)
+               , ($),undefined,seq)
 
 import Data.Vector.Fixed hiding (index)
 import Data.Vector.Fixed.Mutable
-import qualified Data.Vector.Fixed.Cont as C
+import qualified Data.Vector.Fixed.Cont     as C
+import qualified Data.Vector.Fixed.Internal as I
 
 
 
@@ -94,7 +95,7 @@
 ----------------------------------------------------------------
 
 instance (Arity n, Storable a, Show a) => Show (Vec n a) where
-  show v = "fromList " ++ show (toList v)
+  showsPrec = I.showsPrec
 
 instance (Arity n, Storable a, NFData a) => NFData (Vec n a) where
   rnf = foldl (\r a -> r `seq` rnf a) ()
diff --git a/Data/Vector/Fixed/Unboxed.hs b/Data/Vector/Fixed/Unboxed.hs
--- a/Data/Vector/Fixed/Unboxed.hs
+++ b/Data/Vector/Fixed/Unboxed.hs
@@ -39,14 +39,15 @@
 import Foreign.Storable      (Storable(..))
 import GHC.TypeLits
 import Prelude               ( Show(..),Eq(..),Ord(..),Int,Double,Float,Char,Bool(..)
-                             , (++),($),(.),seq)
+                             , ($),(.),seq)
 
-import Data.Vector.Fixed (Dim,Vector(..),VectorN,toList,eq,ord,replicate,zipWith,foldl,
+import Data.Vector.Fixed (Dim,Vector(..),VectorN,eq,ord,replicate,zipWith,foldl,
                           defaultSizeOf,defaultAlignemnt,defaultPeek,defaultPoke
                          )
 import Data.Vector.Fixed.Mutable
 import qualified Data.Vector.Fixed.Cont      as C
 import qualified Data.Vector.Fixed.Primitive as P
+import qualified Data.Vector.Fixed.Internal  as I
 
 
 
@@ -74,7 +75,7 @@
 ----------------------------------------------------------------
 
 instance (Arity n, Show a, Unbox n a) => Show (Vec n a) where
-  show v = "fromList " ++ show (toList v)
+  showsPrec = I.showsPrec
 
 instance (Arity n, Unbox n a, NFData a) => NFData (Vec n a) where
   rnf = foldl (\r a -> r `seq` rnf a) ()
diff --git a/fixed-vector.cabal b/fixed-vector.cabal
--- a/fixed-vector.cabal
+++ b/fixed-vector.cabal
@@ -1,5 +1,5 @@
 Name:           fixed-vector
-Version:        1.1.0.0
+Version:        1.2.0.0
 Synopsis:       Generic vectors with statically known size.
 Description:
   Generic library for vectors with statically known
