diff --git a/src/Data/Tensor/Tensor.hs b/src/Data/Tensor/Tensor.hs
--- a/src/Data/Tensor/Tensor.hs
+++ b/src/Data/Tensor/Tensor.hs
@@ -149,9 +149,9 @@
       then error "length not match"
       else let vv = V.fromList v in Tensor $ \s' i -> vv V.! tiTovi s' i
   toList  t =
-    let n = rank t - 1
-        s = unShape (toShape :: SShape s)
-    in fmap (gx t s) [0..n]
+    let s = unShape (toShape :: SShape s)
+        l = product s
+    in fmap (gx t s) [0..pred l]
 
 -----------------------
 -- Tensor Shape
diff --git a/tensors.cabal b/tensors.cabal
--- a/tensors.cabal
+++ b/tensors.cabal
@@ -1,48 +1,49 @@
-cabal-version: 1.12
-name: tensors
-version: 0.1.4
-license: BSD3
-license-file: LICENSE
-copyright: (c) 2018 Daniel YU
-maintainer: Daniel YU <leptonyu@gmail.com>
-author: Daniel YU
-homepage: https://github.com/leptonyu/tensors#readme
-synopsis: Tensor in Haskell
-description:
-    Tensor use type level programming in haskell.
-category: Library
-build-type: Simple
-extra-source-files:
-    README.md
+cabal-version:      1.12
+name:               tensors
+version:            0.1.5
+license:            BSD3
+license-file:       LICENSE
+copyright:          (c) 2018 Daniel YU
+maintainer:         Daniel YU <leptonyu@gmail.com>
+author:             Daniel YU
+homepage:           https://github.com/leptonyu/tensors#readme
+synopsis:           Tensor in Haskell
+description:        Tensor use type level programming in haskell.
+category:           Library
+build-type:         Simple
+extra-source-files: README.md
 
 library
-    exposed-modules:
-        Data.Tensor
-    hs-source-dirs: src
+    exposed-modules:    Data.Tensor
+    hs-source-dirs:     src
     other-modules:
         Data.Tensor.Type
         Data.Tensor.Tensor
         Data.Tensor.Matrix
         Data.Tensor.Space
         Data.Tensor.Statistics
-    default-language: Haskell2010
-    default-extensions: AllowAmbiguousTypes DataKinds
-                        ExistentialQuantification FlexibleContexts FlexibleInstances
-                        FunctionalDependencies KindSignatures MultiParamTypeClasses
-                        PolyKinds RankNTypes ScopedTypeVariables TypeFamilies TypeOperators
-                        TypeSynonymInstances
-    ghc-options: -Wall -Wcompat -Wincomplete-record-updates
-                 -Wincomplete-uni-patterns -fno-warn-orphans
-                 -fno-warn-missing-signatures
+
+    default-language:   Haskell2010
+    default-extensions:
+        AllowAmbiguousTypes DataKinds ExistentialQuantification
+        FlexibleContexts FlexibleInstances FunctionalDependencies
+        KindSignatures MultiParamTypeClasses PolyKinds RankNTypes
+        ScopedTypeVariables TypeFamilies TypeOperators TypeSynonymInstances
+
+    ghc-options:
+        -Wall -Wcompat -Wincomplete-record-updates
+        -Wincomplete-uni-patterns -fno-warn-orphans
+        -fno-warn-missing-signatures
+
     build-depends:
         base >=4.9 && <5,
         deepseq >=1.4.4.0 && <1.5,
         vector >=0.12.0.2 && <0.13
 
 test-suite spec
-    type: exitcode-stdio-1.0
-    main-is: Spec.hs
-    hs-source-dirs: test src
+    type:               exitcode-stdio-1.0
+    main-is:            Spec.hs
+    hs-source-dirs:     test src
     other-modules:
         Data.Tensor
         Data.Tensor.Matrix
@@ -51,17 +52,21 @@
         Data.Tensor.Tensor
         Data.Tensor.Type
         Paths_tensors
-    default-language: Haskell2010
-    default-extensions: AllowAmbiguousTypes DataKinds
-                        ExistentialQuantification FlexibleContexts FlexibleInstances
-                        FunctionalDependencies KindSignatures MultiParamTypeClasses
-                        PolyKinds RankNTypes ScopedTypeVariables TypeFamilies TypeOperators
-                        TypeSynonymInstances
-    ghc-options: -Wall -Wcompat -Wincomplete-record-updates
-                 -Wincomplete-uni-patterns -fno-warn-orphans
-                 -fno-warn-missing-signatures
+
+    default-language:   Haskell2010
+    default-extensions:
+        AllowAmbiguousTypes DataKinds ExistentialQuantification
+        FlexibleContexts FlexibleInstances FunctionalDependencies
+        KindSignatures MultiParamTypeClasses PolyKinds RankNTypes
+        ScopedTypeVariables TypeFamilies TypeOperators TypeSynonymInstances
+
+    ghc-options:
+        -Wall -Wcompat -Wincomplete-record-updates
+        -Wincomplete-uni-patterns -fno-warn-orphans
+        -fno-warn-missing-signatures
+
     build-depends:
-        QuickCheck >=2.11.1 && <2.14,
+        QuickCheck >=2.11.1 && <2.15,
         base >=4.9 && <5,
         deepseq >=1.4.4.0 && <1.5,
         hspec ==2.*,
@@ -69,9 +74,9 @@
         vector >=0.12.0.2 && <0.13
 
 benchmark bm
-    type: exitcode-stdio-1.0
-    main-is: Bench.hs
-    hs-source-dirs: bench src
+    type:               exitcode-stdio-1.0
+    main-is:            Bench.hs
+    hs-source-dirs:     bench src
     other-modules:
         Data.Tensor
         Data.Tensor.Matrix
@@ -80,17 +85,21 @@
         Data.Tensor.Tensor
         Data.Tensor.Type
         Paths_tensors
-    default-language: Haskell2010
-    default-extensions: AllowAmbiguousTypes DataKinds
-                        ExistentialQuantification FlexibleContexts FlexibleInstances
-                        FunctionalDependencies KindSignatures MultiParamTypeClasses
-                        PolyKinds RankNTypes ScopedTypeVariables TypeFamilies TypeOperators
-                        TypeSynonymInstances
-    ghc-options: -Wall -Wcompat -Wincomplete-record-updates
-                 -Wincomplete-uni-patterns -fno-warn-orphans
-                 -fno-warn-missing-signatures
+
+    default-language:   Haskell2010
+    default-extensions:
+        AllowAmbiguousTypes DataKinds ExistentialQuantification
+        FlexibleContexts FlexibleInstances FunctionalDependencies
+        KindSignatures MultiParamTypeClasses PolyKinds RankNTypes
+        ScopedTypeVariables TypeFamilies TypeOperators TypeSynonymInstances
+
+    ghc-options:
+        -Wall -Wcompat -Wincomplete-record-updates
+        -Wincomplete-uni-patterns -fno-warn-orphans
+        -fno-warn-missing-signatures
+
     build-depends:
         base >=4.9 && <5,
-        criterion >=1.5.4.0 && <1.6,
+        criterion >=1.5.9.0 && <1.6,
         deepseq >=1.4.4.0 && <1.5,
         vector >=0.12.0.2 && <0.13
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -5,6 +5,7 @@
 {-# LANGUAGE RankNTypes          #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies        #-}
+{-# LANGUAGE OverloadedLists        #-}
 
 module Main where
 
@@ -17,6 +18,8 @@
 import           Test.Hspec
 import           Test.QuickCheck
 import           Unsafe.Coerce
+import qualified GHC.Exts
+import qualified Data.Foldable
 
 main = hspec spec
 
@@ -38,7 +41,7 @@
   context "viToti" $ do
     it "quickCheck" $ property $
       \s0 -> let s = normalize s0
-                 n = [0..product s - 1]
+                 n = [0..product s - 1] :: [Int]
             in fmap (tiTovi s . viToti s) n == n
     it "index" $ property $
       \i -> let i' = mod i 1000 + 1 :: Int
@@ -59,3 +62,7 @@
                          idt = identity :: Tensor '[n,n] Int
                      in a `dot` idt == idt `dot` a
                in reifyNat (toInteger n) (go s)
+  context "IsList" $ do
+    it "toList Equal" $ do
+      let t = [1..9] :: Tensor '[3,3] Int
+      Data.Foldable.toList t `shouldBe` GHC.Exts.toList t 
