diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright Andrew Martin (c) 2016
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Andrew Martin nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/container-builder.cabal b/container-builder.cabal
new file mode 100644
--- /dev/null
+++ b/container-builder.cabal
@@ -0,0 +1,27 @@
+name:                container-builder
+version:             0.1
+synopsis:            Functions for building containers from a known number of elements
+description:         Please see README.md
+homepage:            https://github.com/andrewthad/container-builder#readme
+license:             BSD3
+license-file:        LICENSE
+author:              Andrew Martin
+maintainer:          andrew.thaddeus@gmail.com
+copyright:           2016 Andrew Martin
+category:            Web
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  hs-source-dirs:      src
+  exposed-modules:
+    Data.List.From
+    Data.Vector.From
+  build-depends:       
+      base >= 4.7 && < 5
+    , vector
+  default-language:    Haskell2010
+
+source-repository head
+  type:     git
+  location: https://github.com/andrewthad/container-builder
diff --git a/src/Data/List/From.hs b/src/Data/List/From.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/List/From.hs
@@ -0,0 +1,98 @@
+module Data.List.From where
+
+from1 :: a -> [a]
+from1 _1 = [_1]
+
+from2 :: a -> a -> [a]
+from2 _1 _2 = [_1,_2]
+
+from3 :: a -> a -> a -> [a]
+from3 _1 _2 _3 = [_1,_2,_3]
+
+from4 :: a -> a -> a -> a -> [a]
+from4 _1 _2 _3 _4 = [_1,_2,_3,_4]
+
+from5 :: a -> a -> a -> a -> a -> [a]
+from5 _1 _2 _3 _4 _5 = [_1,_2,_3,_4,_5]
+
+from6 :: a -> a -> a -> a -> a -> a -> [a]
+from6 _1 _2 _3 _4 _5 _6 = [_1,_2,_3,_4,_5,_6]
+
+from7 :: a -> a -> a -> a -> a -> a -> a -> [a]
+from7 _1 _2 _3 _4 _5 _6 _7 = [_1,_2,_3,_4,_5,_6,_7]
+
+from8 :: a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from8 _1 _2 _3 _4 _5 _6 _7 _8 = [_1,_2,_3,_4,_5,_6,_7,_8]
+
+from9 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from9 _1 _2 _3 _4 _5 _6 _7 _8 _9 = [_1,_2,_3,_4,_5,_6,_7,_8,_9]
+
+from10 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from10 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10]
+
+from11 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from11 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11]
+
+from12 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from12 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12]
+
+from13 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from13 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13]
+
+from14 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from14 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14]
+
+from15 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from15 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15]
+
+from16 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from16 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16]
+
+from17 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from17 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17]
+
+from18 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from18 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18]
+
+from19 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from19 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19]
+
+from20 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from20 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20]
+
+from21 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from21 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21]
+
+from22 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from22 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22]
+
+from23 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from23 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23]
+
+from24 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from24 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24]
+
+from25 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from25 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25]
+
+from26 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from26 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26]
+
+from27 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from27 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27]
+
+from28 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from28 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28]
+
+from29 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from29 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29]
+
+from30 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from30 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30]
+
+from31 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from31 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 _31 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31]
+
+from32 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> [a]
+from32 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 _31 _32 = [_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32]
+
diff --git a/src/Data/Vector/From.hs b/src/Data/Vector/From.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Vector/From.hs
@@ -0,0 +1,695 @@
+module Data.Vector.From where
+
+import Prelude (($))
+import Data.Vector
+import Data.Vector.Mutable
+import Control.Monad.ST
+
+from1 :: a -> Vector a
+from1 _0 = runST $ do
+  v <- unsafeNew 1
+  unsafeWrite v 0 _0
+  unsafeFreeze v
+
+from2 :: a -> a -> Vector a
+from2 _0 _1 = runST $ do
+  v <- unsafeNew 2
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeFreeze v
+
+from3 :: a -> a -> a -> Vector a
+from3 _0 _1 _2 = runST $ do
+  v <- unsafeNew 3
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeFreeze v
+
+from4 :: a -> a -> a -> a -> Vector a
+from4 _0 _1 _2 _3 = runST $ do
+  v <- unsafeNew 4
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeFreeze v
+
+from5 :: a -> a -> a -> a -> a -> Vector a
+from5 _0 _1 _2 _3 _4 = runST $ do
+  v <- unsafeNew 5
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeFreeze v
+
+from6 :: a -> a -> a -> a -> a -> a -> Vector a
+from6 _0 _1 _2 _3 _4 _5 = runST $ do
+  v <- unsafeNew 6
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeFreeze v
+
+from7 :: a -> a -> a -> a -> a -> a -> a -> Vector a
+from7 _0 _1 _2 _3 _4 _5 _6 = runST $ do
+  v <- unsafeNew 7
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeFreeze v
+
+from8 :: a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from8 _0 _1 _2 _3 _4 _5 _6 _7 = runST $ do
+  v <- unsafeNew 8
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeFreeze v
+
+from9 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from9 _0 _1 _2 _3 _4 _5 _6 _7 _8 = runST $ do
+  v <- unsafeNew 9
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeFreeze v
+
+from10 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from10 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 = runST $ do
+  v <- unsafeNew 10
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeFreeze v
+
+from11 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from11 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 = runST $ do
+  v <- unsafeNew 11
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeFreeze v
+
+from12 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from12 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 = runST $ do
+  v <- unsafeNew 12
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeFreeze v
+
+from13 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from13 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 = runST $ do
+  v <- unsafeNew 13
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeFreeze v
+
+from14 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from14 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 = runST $ do
+  v <- unsafeNew 14
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeFreeze v
+
+from15 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from15 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 = runST $ do
+  v <- unsafeNew 15
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeFreeze v
+
+from16 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from16 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 = runST $ do
+  v <- unsafeNew 16
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeFreeze v
+
+from17 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from17 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 = runST $ do
+  v <- unsafeNew 17
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeFreeze v
+
+from18 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from18 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 = runST $ do
+  v <- unsafeNew 18
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeFreeze v
+
+from19 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from19 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 = runST $ do
+  v <- unsafeNew 19
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeFreeze v
+
+from20 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from20 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 = runST $ do
+  v <- unsafeNew 20
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeFreeze v
+
+from21 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from21 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 = runST $ do
+  v <- unsafeNew 21
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeFreeze v
+
+from22 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from22 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 = runST $ do
+  v <- unsafeNew 22
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeFreeze v
+
+from23 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from23 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 = runST $ do
+  v <- unsafeNew 23
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeFreeze v
+
+from24 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from24 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 = runST $ do
+  v <- unsafeNew 24
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeFreeze v
+
+from25 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from25 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 = runST $ do
+  v <- unsafeNew 25
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeWrite v 24 _24
+  unsafeFreeze v
+
+from26 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from26 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 = runST $ do
+  v <- unsafeNew 26
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeWrite v 24 _24
+  unsafeWrite v 25 _25
+  unsafeFreeze v
+
+from27 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from27 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 = runST $ do
+  v <- unsafeNew 27
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeWrite v 24 _24
+  unsafeWrite v 25 _25
+  unsafeWrite v 26 _26
+  unsafeFreeze v
+
+from28 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from28 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 = runST $ do
+  v <- unsafeNew 28
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeWrite v 24 _24
+  unsafeWrite v 25 _25
+  unsafeWrite v 26 _26
+  unsafeWrite v 27 _27
+  unsafeFreeze v
+
+from29 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from29 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 = runST $ do
+  v <- unsafeNew 29
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeWrite v 24 _24
+  unsafeWrite v 25 _25
+  unsafeWrite v 26 _26
+  unsafeWrite v 27 _27
+  unsafeWrite v 28 _28
+  unsafeFreeze v
+
+from30 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from30 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 = runST $ do
+  v <- unsafeNew 30
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeWrite v 24 _24
+  unsafeWrite v 25 _25
+  unsafeWrite v 26 _26
+  unsafeWrite v 27 _27
+  unsafeWrite v 28 _28
+  unsafeWrite v 29 _29
+  unsafeFreeze v
+
+from31 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from31 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 = runST $ do
+  v <- unsafeNew 31
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeWrite v 24 _24
+  unsafeWrite v 25 _25
+  unsafeWrite v 26 _26
+  unsafeWrite v 27 _27
+  unsafeWrite v 28 _28
+  unsafeWrite v 29 _29
+  unsafeWrite v 30 _30
+  unsafeFreeze v
+
+from32 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Vector a
+from32 _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 _31 = runST $ do
+  v <- unsafeNew 32
+  unsafeWrite v 0 _0
+  unsafeWrite v 1 _1
+  unsafeWrite v 2 _2
+  unsafeWrite v 3 _3
+  unsafeWrite v 4 _4
+  unsafeWrite v 5 _5
+  unsafeWrite v 6 _6
+  unsafeWrite v 7 _7
+  unsafeWrite v 8 _8
+  unsafeWrite v 9 _9
+  unsafeWrite v 10 _10
+  unsafeWrite v 11 _11
+  unsafeWrite v 12 _12
+  unsafeWrite v 13 _13
+  unsafeWrite v 14 _14
+  unsafeWrite v 15 _15
+  unsafeWrite v 16 _16
+  unsafeWrite v 17 _17
+  unsafeWrite v 18 _18
+  unsafeWrite v 19 _19
+  unsafeWrite v 20 _20
+  unsafeWrite v 21 _21
+  unsafeWrite v 22 _22
+  unsafeWrite v 23 _23
+  unsafeWrite v 24 _24
+  unsafeWrite v 25 _25
+  unsafeWrite v 26 _26
+  unsafeWrite v 27 _27
+  unsafeWrite v 28 _28
+  unsafeWrite v 29 _29
+  unsafeWrite v 30 _30
+  unsafeWrite v 31 _31
+  unsafeFreeze v
+
