lens-accelerate (empty) → 0.1.0.0
raw patch · 9 files changed
+583/−0 lines, 9 filesdep +acceleratedep +basedep +lenssetup-changed
Dependencies added: accelerate, base, lens
Files
- CHANGELOG.markdown +4/−0
- LICENSE +30/−0
- README.markdown +10/−0
- Setup.hs +2/−0
- lens-accelerate.cabal +48/−0
- src/Data/Array/Accelerate/Control/Lens.hs +22/−0
- src/Data/Array/Accelerate/Control/Lens/Each.hs +80/−0
- src/Data/Array/Accelerate/Control/Lens/Lift.hs +51/−0
- src/Data/Array/Accelerate/Control/Lens/Tuple.hs +336/−0
+ CHANGELOG.markdown view
@@ -0,0 +1,4 @@+0.1.0.0++ * Initial release+
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2015, Trevor L. McDonell++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 Trevor L. McDonell 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.
+ README.markdown view
@@ -0,0 +1,10 @@+lens-accelerate+===============++[](https://travis-ci.org/tmcdonell/lens-accelerate)++Instances to mix [lens][lens] with [accelerate][accelerate].++ [lens]: https://github.com/ekmett/lens+ [accelerate]: https://github.com/AccelerateHS/accelerate+
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ lens-accelerate.cabal view
@@ -0,0 +1,48 @@+name: lens-accelerate+version: 0.1.0.0+synopsis: Instances to mix lens with accelerate+description: Instances to mix lens with accelerate+homepage: https://github.com/tmcdonell/lens-accelerate+license: BSD3+license-file: LICENSE+author: Trevor L. McDonell+maintainer: Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>+copyright: Trevor L. McDonell+category: Data, Lenses+build-type: Simple+cabal-version: >=1.10++extra-source-files:+ README.markdown+ CHANGELOG.markdown++library+ exposed-modules:+ Data.Array.Accelerate.Control.Lens+ Data.Array.Accelerate.Control.Lens.Each+ Data.Array.Accelerate.Control.Lens.Tuple++ other-modules:+ Data.Array.Accelerate.Control.Lens.Lift++ build-depends:+ base >= 4.7 && < 4.10+ , accelerate >= 0.15+ , lens == 4.*++ ghc-options: -Wall++ hs-source-dirs: src+ default-language: Haskell2010+++source-repository head+ Type: git+ Location: git://github.com/tmcdonell/lens-accelerate.git++source-repository this+ Type: git+ Tag: 0.1.0.0+ Location: git://github.com/tmcdonell/lens-accelerate.git++-- vim: nospell
+ src/Data/Array/Accelerate/Control/Lens.hs view
@@ -0,0 +1,22 @@+-----------------------------------------------------------------------------+-- |+-- Module : Data.Array.Accelerate.Control.Lens+-- Copyright : 2015 Trevor L. McDonell+-- License : BSD-style (see the file LICENSE)+--+-- Maintainer : Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>+-- Stability : experimental+-- Portability : non-portable+--+----------------------------------------------------------------------------++module Data.Array.Accelerate.Control.Lens (++ module Control.Lens++) where++import Control.Lens+import Data.Array.Accelerate.Control.Lens.Tuple ()+import Data.Array.Accelerate.Control.Lens.Each ()+
+ src/Data/Array/Accelerate/Control/Lens/Each.hs view
@@ -0,0 +1,80 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+-----------------------------------------------------------------------------+-- |+-- Module : Data.Array.Accelerate.Control.Lens.Each+-- Copyright : 2015 Trevor L. McDonell+-- License : BSD-style (see the file LICENSE)+--+-- Maintainer : Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>+-- Stability : experimental+-- Portability : non-portable+--+----------------------------------------------------------------------------++module Data.Array.Accelerate.Control.Lens.Each (++ module Control.Lens.Each++) where++import Control.Lens.Each+import Control.Lens.Traversal+import Data.Array.Accelerate+import Data.Array.Accelerate.Data.Complex+import Data.Array.Accelerate.Control.Lens.Lift+++instance (Elt a, Elt b) => Each (Exp (Complex a)) (Exp (Complex b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Complex (Exp a)) (Complex (Exp b)) (Exp a) (Exp b))++instance (Elt a, Elt b) => Each (Exp (a,a)) (Exp (b,b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Exp a, Exp a) (Exp b, Exp b) (Exp a) (Exp b))++instance (Elt a, Elt b) => Each (Exp (a,a,a)) (Exp (b,b,b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Exp a, Exp a, Exp a) (Exp b, Exp b, Exp b) (Exp a) (Exp b))++instance (Elt a, Elt b) => Each (Exp (a,a,a,a)) (Exp (b,b,b,b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Exp a, Exp a, Exp a, Exp a) (Exp b, Exp b, Exp b, Exp b) (Exp a) (Exp b))++instance (Elt a, Elt b) => Each (Exp (a,a,a,a,a)) (Exp (b,b,b,b,b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Exp a, Exp a, Exp a, Exp a, Exp a) (Exp b, Exp b, Exp b, Exp b, Exp b) (Exp a) (Exp b))++instance (Elt a, Elt b) => Each (Exp (a,a,a,a,a,a)) (Exp (b,b,b,b,b,b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Exp a, Exp a, Exp a, Exp a, Exp a, Exp a) (Exp b, Exp b, Exp b, Exp b, Exp b, Exp b) (Exp a) (Exp b))++instance (Elt a, Elt b) => Each (Exp (a,a,a,a,a,a,a)) (Exp (b,b,b,b,b,b,b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Exp a, Exp a, Exp a, Exp a, Exp a, Exp a, Exp a) (Exp b, Exp b, Exp b, Exp b, Exp b, Exp b, Exp b) (Exp a) (Exp b))++instance (Elt a, Elt b) => Each (Exp (a,a,a,a,a,a,a,a)) (Exp (b,b,b,b,b,b,b,b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Exp a, Exp a, Exp a, Exp a, Exp a, Exp a, Exp a, Exp a) (Exp b, Exp b, Exp b, Exp b, Exp b, Exp b, Exp b, Exp b) (Exp a) (Exp b))++instance (Elt a, Elt b) => Each (Exp (a,a,a,a,a,a,a,a,a)) (Exp (b,b,b,b,b,b,b,b,b)) (Exp a) (Exp b) where+ each = liftLens (each :: Traversal (Exp a, Exp a, Exp a, Exp a, Exp a, Exp a, Exp a, Exp a, Exp a) (Exp b, Exp b, Exp b, Exp b, Exp b, Exp b, Exp b, Exp b, Exp b) (Exp a) (Exp b))+++instance (Arrays a, Arrays b) => Each (Acc (a,a)) (Acc (b,b)) (Acc a) (Acc b) where+ each = liftLens (each :: Traversal (Acc a, Acc a) (Acc b, Acc b) (Acc a) (Acc b))++instance (Arrays a, Arrays b) => Each (Acc (a,a,a)) (Acc (b,b,b)) (Acc a) (Acc b) where+ each = liftLens (each :: Traversal (Acc a, Acc a, Acc a) (Acc b, Acc b, Acc b) (Acc a) (Acc b))++instance (Arrays a, Arrays b) => Each (Acc (a,a,a,a)) (Acc (b,b,b,b)) (Acc a) (Acc b) where+ each = liftLens (each :: Traversal (Acc a, Acc a, Acc a, Acc a) (Acc b, Acc b, Acc b, Acc b) (Acc a) (Acc b))++instance (Arrays a, Arrays b) => Each (Acc (a,a,a,a,a)) (Acc (b,b,b,b,b)) (Acc a) (Acc b) where+ each = liftLens (each :: Traversal (Acc a, Acc a, Acc a, Acc a, Acc a) (Acc b, Acc b, Acc b, Acc b, Acc b) (Acc a) (Acc b))++instance (Arrays a, Arrays b) => Each (Acc (a,a,a,a,a,a)) (Acc (b,b,b,b,b,b)) (Acc a) (Acc b) where+ each = liftLens (each :: Traversal (Acc a, Acc a, Acc a, Acc a, Acc a, Acc a) (Acc b, Acc b, Acc b, Acc b, Acc b, Acc b) (Acc a) (Acc b))++instance (Arrays a, Arrays b) => Each (Acc (a,a,a,a,a,a,a)) (Acc (b,b,b,b,b,b,b)) (Acc a) (Acc b) where+ each = liftLens (each :: Traversal (Acc a, Acc a, Acc a, Acc a, Acc a, Acc a, Acc a) (Acc b, Acc b, Acc b, Acc b, Acc b, Acc b, Acc b) (Acc a) (Acc b))++instance (Arrays a, Arrays b) => Each (Acc (a,a,a,a,a,a,a,a)) (Acc (b,b,b,b,b,b,b,b)) (Acc a) (Acc b) where+ each = liftLens (each :: Traversal (Acc a, Acc a, Acc a, Acc a, Acc a, Acc a, Acc a, Acc a) (Acc b, Acc b, Acc b, Acc b, Acc b, Acc b, Acc b, Acc b) (Acc a) (Acc b))++instance (Arrays a, Arrays b) => Each (Acc (a,a,a,a,a,a,a,a,a)) (Acc (b,b,b,b,b,b,b,b,b)) (Acc a) (Acc b) where+ each = liftLens (each :: Traversal (Acc a, Acc a, Acc a, Acc a, Acc a, Acc a, Acc a, Acc a, Acc a) (Acc b, Acc b, Acc b, Acc b, Acc b, Acc b, Acc b, Acc b, Acc b) (Acc a) (Acc b))+
+ src/Data/Array/Accelerate/Control/Lens/Lift.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE MultiParamTypeClasses #-}+-----------------------------------------------------------------------------+-- |+-- Module : Data.Array.Accelerate.Control.Lens.Lift+-- Copyright : 2015 Trevor L. McDonell+-- License : BSD-style (see the file LICENSE)+--+-- Maintainer : Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>+-- Stability : experimental+-- Portability : non-portable+--+----------------------------------------------------------------------------++module Data.Array.Accelerate.Control.Lens.Lift ( liftLens )+ where++import Data.Array.Accelerate+++#if defined(MIN_VERSION_accelerate)+#if !MIN_VERSION_accelerate(0,16,0)+-- Instances that missed the 0.15* Hackage release+instance Unlift Exp (Exp e) where+ unlift = id++instance Unlift Acc (Acc a) where+ unlift = id+#endif+#endif+++-- Lift a 'Lens' into Accelerate terms+--+liftLens+ :: (Functor f, Unlift box s, Unlift box t, Unlift box b, Lift box a)+ => ((a -> f b) -> s -> f t)+ -> (box (Plain a) -> f (box (Plain b)))+ -> box (Plain s)+ -> f (box (Plain t))+liftLens l f x = lift `fmap` l (fsink1 f) (unlift x)+++-- | Sink a unary functor from Accelerate terms+--+fsink1 :: (Functor f, Unlift box b, Lift box a)+ => (box (Plain a) -> f (box (Plain b)))+ -> a+ -> f b+fsink1 f = fmap unlift . f . lift+
+ src/Data/Array/Accelerate/Control/Lens/Tuple.hs view
@@ -0,0 +1,336 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+-----------------------------------------------------------------------------+-- |+-- Module : Data.Array.Accelerate.Control.Lens.Tuple+-- Copyright : 2015 Trevor L. McDonell+-- License : BSD-style (see the file LICENSE)+--+-- Maintainer : Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>+-- Stability : experimental+-- Portability : non-portable+--+----------------------------------------------------------------------------++module Data.Array.Accelerate.Control.Lens.Tuple (++ module Control.Lens.Tuple++) where++import Control.Lens+import Control.Lens.Tuple+import Data.Array.Accelerate+import Data.Array.Accelerate.Control.Lens.Lift+++-- Field1+-- ------++instance (Elt a, Elt a', Elt b) => Field1 (Exp (a,b)) (Exp (a',b)) (Exp a) (Exp a') where+ _1 = liftLens (_1 :: Lens (Exp a, Exp b) (Exp a', Exp b) (Exp a) (Exp a'))++instance (Elt a, Elt a', Elt b, Elt c) => Field1 (Exp (a,b,c)) (Exp (a',b,c)) (Exp a) (Exp a') where+ _1 = liftLens (_1 :: Lens (Exp a, Exp b, Exp c) (Exp a', Exp b, Exp c) (Exp a) (Exp a'))++instance (Elt a, Elt a', Elt b, Elt c, Elt d) => Field1 (Exp (a,b,c,d)) (Exp (a',b,c,d)) (Exp a) (Exp a') where+ _1 = liftLens (_1 :: Lens (Exp a, Exp b, Exp c, Exp d) (Exp a', Exp b, Exp c, Exp d) (Exp a) (Exp a'))++instance (Elt a, Elt a', Elt b, Elt c, Elt d, Elt e) => Field1 (Exp (a,b,c,d,e)) (Exp (a',b,c,d,e)) (Exp a) (Exp a') where+ _1 = liftLens (_1 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e) (Exp a', Exp b, Exp c, Exp d, Exp e) (Exp a) (Exp a'))++instance (Elt a, Elt a', Elt b, Elt c, Elt d, Elt e, Elt f) => Field1 (Exp (a,b,c,d,e,f)) (Exp (a',b,c,d,e,f)) (Exp a) (Exp a') where+ _1 = liftLens (_1 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f) (Exp a', Exp b, Exp c, Exp d, Exp e, Exp f) (Exp a) (Exp a'))++instance (Elt a, Elt a', Elt b, Elt c, Elt d, Elt e, Elt f, Elt g) => Field1 (Exp (a,b,c,d,e,f,g)) (Exp (a',b,c,d,e,f,g)) (Exp a) (Exp a') where+ _1 = liftLens (_1 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g) (Exp a', Exp b, Exp c, Exp d, Exp e, Exp f, Exp g) (Exp a) (Exp a'))++instance (Elt a, Elt a', Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h) => Field1 (Exp (a,b,c,d,e,f,g,h)) (Exp (a',b,c,d,e,f,g,h)) (Exp a) (Exp a') where+ _1 = liftLens (_1 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a', Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a) (Exp a'))++instance (Elt a, Elt a', Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i) => Field1 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a',b,c,d,e,f,g,h,i)) (Exp a) (Exp a') where+ _1 = liftLens (_1 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a', Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a) (Exp a'))+++instance (Arrays a, Arrays a', Arrays b) => Field1 (Acc (a,b)) (Acc (a',b)) (Acc a) (Acc a') where+ _1 = liftLens (_1 :: Lens (Acc a, Acc b) (Acc a', Acc b) (Acc a) (Acc a'))++instance (Arrays a, Arrays a', Arrays b, Arrays c) => Field1 (Acc (a,b,c)) (Acc (a',b,c)) (Acc a) (Acc a') where+ _1 = liftLens (_1 :: Lens (Acc a, Acc b, Acc c) (Acc a', Acc b, Acc c) (Acc a) (Acc a'))++instance (Arrays a, Arrays a', Arrays b, Arrays c, Arrays d) => Field1 (Acc (a,b,c,d)) (Acc (a',b,c,d)) (Acc a) (Acc a') where+ _1 = liftLens (_1 :: Lens (Acc a, Acc b, Acc c, Acc d) (Acc a', Acc b, Acc c, Acc d) (Acc a) (Acc a'))++instance (Arrays a, Arrays a', Arrays b, Arrays c, Arrays d, Arrays e) => Field1 (Acc (a,b,c,d,e)) (Acc (a',b,c,d,e)) (Acc a) (Acc a') where+ _1 = liftLens (_1 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e) (Acc a', Acc b, Acc c, Acc d, Acc e) (Acc a) (Acc a'))++instance (Arrays a, Arrays a', Arrays b, Arrays c, Arrays d, Arrays e, Arrays f) => Field1 (Acc (a,b,c,d,e,f)) (Acc (a',b,c,d,e,f)) (Acc a) (Acc a') where+ _1 = liftLens (_1 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f) (Acc a', Acc b, Acc c, Acc d, Acc e, Acc f) (Acc a) (Acc a'))++instance (Arrays a, Arrays a', Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g) => Field1 (Acc (a,b,c,d,e,f,g)) (Acc (a',b,c,d,e,f,g)) (Acc a) (Acc a') where+ _1 = liftLens (_1 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g) (Acc a', Acc b, Acc c, Acc d, Acc e, Acc f, Acc g) (Acc a) (Acc a'))++instance (Arrays a, Arrays a', Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays h) => Field1 (Acc (a,b,c,d,e,f,g,h)) (Acc (a',b,c,d,e,f,g,h)) (Acc a) (Acc a') where+ _1 = liftLens (_1 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a', Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a) (Acc a'))++instance (Arrays a, Arrays a', Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays h, Arrays i) => Field1 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a',b,c,d,e,f,g,h,i)) (Acc a) (Acc a') where+ _1 = liftLens (_1 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a', Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a) (Acc a'))++++-- Field2+-- ------++instance (Elt a, Elt b, Elt b') => Field2 (Exp (a,b)) (Exp (a,b')) (Exp b) (Exp b') where+ _2 = liftLens (_2 :: Lens (Exp a, Exp b) (Exp a, Exp b') (Exp b) (Exp b'))++instance (Elt a, Elt b, Elt b', Elt c) => Field2 (Exp (a,b,c)) (Exp (a,b',c)) (Exp b) (Exp b') where+ _2 = liftLens (_2 :: Lens (Exp a, Exp b, Exp c) (Exp a, Exp b', Exp c) (Exp b) (Exp b'))++instance (Elt a, Elt b, Elt b', Elt c, Elt d) => Field2 (Exp (a,b,c,d)) (Exp (a,b',c,d)) (Exp b) (Exp b') where+ _2 = liftLens (_2 :: Lens (Exp a, Exp b, Exp c, Exp d) (Exp a, Exp b', Exp c, Exp d) (Exp b) (Exp b'))++instance (Elt a, Elt b, Elt b', Elt c, Elt d, Elt e) => Field2 (Exp (a,b,c,d,e)) (Exp (a,b',c,d,e)) (Exp b) (Exp b') where+ _2 = liftLens (_2 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e) (Exp a, Exp b', Exp c, Exp d, Exp e) (Exp b) (Exp b'))++instance (Elt a, Elt b, Elt b', Elt c, Elt d, Elt e, Elt f) => Field2 (Exp (a,b,c,d,e,f)) (Exp (a,b',c,d,e,f)) (Exp b) (Exp b') where+ _2 = liftLens (_2 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f) (Exp a, Exp b', Exp c, Exp d, Exp e, Exp f) (Exp b) (Exp b'))++instance (Elt a, Elt b, Elt b', Elt c, Elt d, Elt e, Elt f, Elt g) => Field2 (Exp (a,b,c,d,e,f,g)) (Exp (a,b',c,d,e,f,g)) (Exp b) (Exp b') where+ _2 = liftLens (_2 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g) (Exp a, Exp b', Exp c, Exp d, Exp e, Exp f, Exp g) (Exp b) (Exp b'))++instance (Elt a, Elt b, Elt b', Elt c, Elt d, Elt e, Elt f, Elt g, Elt h) => Field2 (Exp (a,b,c,d,e,f,g,h)) (Exp (a,b',c,d,e,f,g,h)) (Exp b) (Exp b') where+ _2 = liftLens (_2 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a, Exp b', Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp b) (Exp b'))++instance (Elt a, Elt b, Elt b', Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i) => Field2 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a,b',c,d,e,f,g,h,i)) (Exp b) (Exp b') where+ _2 = liftLens (_2 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a, Exp b', Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp b) (Exp b'))+++instance (Arrays a, Arrays b, Arrays b') => Field2 (Acc (a,b)) (Acc (a,b')) (Acc b) (Acc b') where+ _2 = liftLens (_2 :: Lens (Acc a, Acc b) (Acc a, Acc b') (Acc b) (Acc b'))++instance (Arrays a, Arrays b, Arrays b', Arrays c) => Field2 (Acc (a,b,c)) (Acc (a,b',c)) (Acc b) (Acc b') where+ _2 = liftLens (_2 :: Lens (Acc a, Acc b, Acc c) (Acc a, Acc b', Acc c) (Acc b) (Acc b'))++instance (Arrays a, Arrays b, Arrays b', Arrays c, Arrays d) => Field2 (Acc (a,b,c,d)) (Acc (a,b',c,d)) (Acc b) (Acc b') where+ _2 = liftLens (_2 :: Lens (Acc a, Acc b, Acc c, Acc d) (Acc a, Acc b', Acc c, Acc d) (Acc b) (Acc b'))++instance (Arrays a, Arrays b, Arrays b', Arrays c, Arrays d, Arrays e) => Field2 (Acc (a,b,c,d,e)) (Acc (a,b',c,d,e)) (Acc b) (Acc b') where+ _2 = liftLens (_2 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e) (Acc a, Acc b', Acc c, Acc d, Acc e) (Acc b) (Acc b'))++instance (Arrays a, Arrays b, Arrays b', Arrays c, Arrays d, Arrays e, Arrays f) => Field2 (Acc (a,b,c,d,e,f)) (Acc (a,b',c,d,e,f)) (Acc b) (Acc b') where+ _2 = liftLens (_2 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f) (Acc a, Acc b', Acc c, Acc d, Acc e, Acc f) (Acc b) (Acc b'))++instance (Arrays a, Arrays b, Arrays b', Arrays c, Arrays d, Arrays e, Arrays f, Arrays g) => Field2 (Acc (a,b,c,d,e,f,g)) (Acc (a,b',c,d,e,f,g)) (Acc b) (Acc b') where+ _2 = liftLens (_2 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g) (Acc a, Acc b', Acc c, Acc d, Acc e, Acc f, Acc g) (Acc b) (Acc b'))++instance (Arrays a, Arrays b, Arrays b', Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays h) => Field2 (Acc (a,b,c,d,e,f,g,h)) (Acc (a,b',c,d,e,f,g,h)) (Acc b) (Acc b') where+ _2 = liftLens (_2 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a, Acc b', Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc b) (Acc b'))++instance (Arrays a, Arrays b, Arrays b', Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays h, Arrays i) => Field2 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a,b',c,d,e,f,g,h,i)) (Acc b) (Acc b') where+ _2 = liftLens (_2 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a, Acc b', Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc b) (Acc b'))+++-- Field3+-- ------++instance (Elt a, Elt b, Elt c, Elt c') => Field3 (Exp (a,b,c)) (Exp (a,b,c')) (Exp c) (Exp c') where+ _3 = liftLens (_3 :: Lens (Exp a, Exp b, Exp c) (Exp a, Exp b, Exp c') (Exp c) (Exp c'))++instance (Elt a, Elt b, Elt c, Elt c', Elt d) => Field3 (Exp (a,b,c,d)) (Exp (a,b,c',d)) (Exp c) (Exp c') where+ _3 = liftLens (_3 :: Lens (Exp a, Exp b, Exp c, Exp d) (Exp a, Exp b, Exp c', Exp d) (Exp c) (Exp c'))++instance (Elt a, Elt b, Elt c, Elt c', Elt d, Elt e) => Field3 (Exp (a,b,c,d,e)) (Exp (a,b,c',d,e)) (Exp c) (Exp c') where+ _3 = liftLens (_3 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e) (Exp a, Exp b, Exp c', Exp d, Exp e) (Exp c) (Exp c'))++instance (Elt a, Elt b, Elt c, Elt c', Elt d, Elt e, Elt f) => Field3 (Exp (a,b,c,d,e,f)) (Exp (a,b,c',d,e,f)) (Exp c) (Exp c') where+ _3 = liftLens (_3 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f) (Exp a, Exp b, Exp c', Exp d, Exp e, Exp f) (Exp c) (Exp c'))++instance (Elt a, Elt b, Elt c, Elt c', Elt d, Elt e, Elt f, Elt g) => Field3 (Exp (a,b,c,d,e,f,g)) (Exp (a,b,c',d,e,f,g)) (Exp c) (Exp c') where+ _3 = liftLens (_3 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g) (Exp a, Exp b, Exp c', Exp d, Exp e, Exp f, Exp g) (Exp c) (Exp c'))++instance (Elt a, Elt b, Elt c, Elt c', Elt d, Elt e, Elt f, Elt g, Elt h) => Field3 (Exp (a,b,c,d,e,f,g,h)) (Exp (a,b,c',d,e,f,g,h)) (Exp c) (Exp c') where+ _3 = liftLens (_3 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a, Exp b, Exp c', Exp d, Exp e, Exp f, Exp g, Exp h) (Exp c) (Exp c'))++instance (Elt a, Elt b, Elt c, Elt c', Elt d, Elt e, Elt f, Elt g, Elt h, Elt i) => Field3 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a,b,c',d,e,f,g,h,i)) (Exp c) (Exp c') where+ _3 = liftLens (_3 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a, Exp b, Exp c', Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp c) (Exp c'))+++instance (Arrays a, Arrays b, Arrays c, Arrays c') => Field3 (Acc (a,b,c)) (Acc (a,b,c')) (Acc c) (Acc c') where+ _3 = liftLens (_3 :: Lens (Acc a, Acc b, Acc c) (Acc a, Acc b, Acc c') (Acc c) (Acc c'))++instance (Arrays a, Arrays b, Arrays c, Arrays c', Arrays d) => Field3 (Acc (a,b,c,d)) (Acc (a,b,c',d)) (Acc c) (Acc c') where+ _3 = liftLens (_3 :: Lens (Acc a, Acc b, Acc c, Acc d) (Acc a, Acc b, Acc c', Acc d) (Acc c) (Acc c'))++instance (Arrays a, Arrays b, Arrays c, Arrays c', Arrays d, Arrays e) => Field3 (Acc (a,b,c,d,e)) (Acc (a,b,c',d,e)) (Acc c) (Acc c') where+ _3 = liftLens (_3 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e) (Acc a, Acc b, Acc c', Acc d, Acc e) (Acc c) (Acc c'))++instance (Arrays a, Arrays b, Arrays c, Arrays c', Arrays d, Arrays e, Arrays f) => Field3 (Acc (a,b,c,d,e,f)) (Acc (a,b,c',d,e,f)) (Acc c) (Acc c') where+ _3 = liftLens (_3 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f) (Acc a, Acc b, Acc c', Acc d, Acc e, Acc f) (Acc c) (Acc c'))++instance (Arrays a, Arrays b, Arrays c, Arrays c', Arrays d, Arrays e, Arrays f, Arrays g) => Field3 (Acc (a,b,c,d,e,f,g)) (Acc (a,b,c',d,e,f,g)) (Acc c) (Acc c') where+ _3 = liftLens (_3 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g) (Acc a, Acc b, Acc c', Acc d, Acc e, Acc f, Acc g) (Acc c) (Acc c'))++instance (Arrays a, Arrays b, Arrays c, Arrays c', Arrays d, Arrays e, Arrays f, Arrays g, Arrays h) => Field3 (Acc (a,b,c,d,e,f,g,h)) (Acc (a,b,c',d,e,f,g,h)) (Acc c) (Acc c') where+ _3 = liftLens (_3 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a, Acc b, Acc c', Acc d, Acc e, Acc f, Acc g, Acc h) (Acc c) (Acc c'))++instance (Arrays a, Arrays b, Arrays c, Arrays c', Arrays d, Arrays e, Arrays f, Arrays g, Arrays h, Arrays i) => Field3 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a,b,c',d,e,f,g,h,i)) (Acc c) (Acc c') where+ _3 = liftLens (_3 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a, Acc b, Acc c', Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc c) (Acc c'))+++-- Field4+-- ------++instance (Elt a, Elt b, Elt c, Elt d, Elt d') => Field4 (Exp (a,b,c,d)) (Exp (a,b,c,d')) (Exp d) (Exp d') where+ _4 = liftLens (_4 :: Lens (Exp a, Exp b, Exp c, Exp d) (Exp a, Exp b, Exp c, Exp d') (Exp d) (Exp d'))++instance (Elt a, Elt b, Elt c, Elt d, Elt d', Elt e) => Field4 (Exp (a,b,c,d,e)) (Exp (a,b,c,d',e)) (Exp d) (Exp d') where+ _4 = liftLens (_4 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e) (Exp a, Exp b, Exp c, Exp d', Exp e) (Exp d) (Exp d'))++instance (Elt a, Elt b, Elt c, Elt d, Elt d', Elt e, Elt f) => Field4 (Exp (a,b,c,d,e,f)) (Exp (a,b,c,d',e,f)) (Exp d) (Exp d') where+ _4 = liftLens (_4 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f) (Exp a, Exp b, Exp c, Exp d', Exp e, Exp f) (Exp d) (Exp d'))++instance (Elt a, Elt b, Elt c, Elt d, Elt d', Elt e, Elt f, Elt g) => Field4 (Exp (a,b,c,d,e,f,g)) (Exp (a,b,c,d',e,f,g)) (Exp d) (Exp d') where+ _4 = liftLens (_4 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g) (Exp a, Exp b, Exp c, Exp d', Exp e, Exp f, Exp g) (Exp d) (Exp d'))++instance (Elt a, Elt b, Elt c, Elt d, Elt d', Elt e, Elt f, Elt g, Elt h) => Field4 (Exp (a,b,c,d,e,f,g,h)) (Exp (a,b,c,d',e,f,g,h)) (Exp d) (Exp d') where+ _4 = liftLens (_4 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a, Exp b, Exp c, Exp d', Exp e, Exp f, Exp g, Exp h) (Exp d) (Exp d'))++instance (Elt a, Elt b, Elt c, Elt d, Elt d', Elt e, Elt f, Elt g, Elt h, Elt i) => Field4 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a,b,c,d',e,f,g,h,i)) (Exp d) (Exp d') where+ _4 = liftLens (_4 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a, Exp b, Exp c, Exp d', Exp e, Exp f, Exp g, Exp h, Exp i) (Exp d) (Exp d'))+++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays d') => Field4 (Acc (a,b,c,d)) (Acc (a,b,c,d')) (Acc d) (Acc d') where+ _4 = liftLens (_4 :: Lens (Acc a, Acc b, Acc c, Acc d) (Acc a, Acc b, Acc c, Acc d') (Acc d) (Acc d'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays d', Arrays e) => Field4 (Acc (a,b,c,d,e)) (Acc (a,b,c,d',e)) (Acc d) (Acc d') where+ _4 = liftLens (_4 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e) (Acc a, Acc b, Acc c, Acc d', Acc e) (Acc d) (Acc d'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays d', Arrays e, Arrays f) => Field4 (Acc (a,b,c,d,e,f)) (Acc (a,b,c,d',e,f)) (Acc d) (Acc d') where+ _4 = liftLens (_4 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f) (Acc a, Acc b, Acc c, Acc d', Acc e, Acc f) (Acc d) (Acc d'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays d', Arrays e, Arrays f, Arrays g) => Field4 (Acc (a,b,c,d,e,f,g)) (Acc (a,b,c,d',e,f,g)) (Acc d) (Acc d') where+ _4 = liftLens (_4 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g) (Acc a, Acc b, Acc c, Acc d', Acc e, Acc f, Acc g) (Acc d) (Acc d'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays d', Arrays e, Arrays f, Arrays g, Arrays h) => Field4 (Acc (a,b,c,d,e,f,g,h)) (Acc (a,b,c,d',e,f,g,h)) (Acc d) (Acc d') where+ _4 = liftLens (_4 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a, Acc b, Acc c, Acc d', Acc e, Acc f, Acc g, Acc h) (Acc d) (Acc d'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays d', Arrays e, Arrays f, Arrays g, Arrays h, Arrays i) => Field4 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a,b,c,d',e,f,g,h,i)) (Acc d) (Acc d') where+ _4 = liftLens (_4 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a, Acc b, Acc c, Acc d', Acc e, Acc f, Acc g, Acc h, Acc i) (Acc d) (Acc d'))+++-- Field5+-- ------++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt e') => Field5 (Exp (a,b,c,d,e)) (Exp (a,b,c,d,e')) (Exp e) (Exp e') where+ _5 = liftLens (_5 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e) (Exp a, Exp b, Exp c, Exp d, Exp e') (Exp e) (Exp e'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt e', Elt f) => Field5 (Exp (a,b,c,d,e,f)) (Exp (a,b,c,d,e',f)) (Exp e) (Exp e') where+ _5 = liftLens (_5 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f) (Exp a, Exp b, Exp c, Exp d, Exp e', Exp f) (Exp e) (Exp e'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt e', Elt f, Elt g) => Field5 (Exp (a,b,c,d,e,f,g)) (Exp (a,b,c,d,e',f,g)) (Exp e) (Exp e') where+ _5 = liftLens (_5 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g) (Exp a, Exp b, Exp c, Exp d, Exp e', Exp f, Exp g) (Exp e) (Exp e'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt e', Elt f, Elt g, Elt h) => Field5 (Exp (a,b,c,d,e,f,g,h)) (Exp (a,b,c,d,e',f,g,h)) (Exp e) (Exp e') where+ _5 = liftLens (_5 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a, Exp b, Exp c, Exp d, Exp e', Exp f, Exp g, Exp h) (Exp e) (Exp e'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt e', Elt f, Elt g, Elt h, Elt i) => Field5 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a,b,c,d,e',f,g,h,i)) (Exp e) (Exp e') where+ _5 = liftLens (_5 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a, Exp b, Exp c, Exp d, Exp e', Exp f, Exp g, Exp h, Exp i) (Exp e) (Exp e'))+++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays e') => Field5 (Acc (a,b,c,d,e)) (Acc (a,b,c,d,e')) (Acc e) (Acc e') where+ _5 = liftLens (_5 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e) (Acc a, Acc b, Acc c, Acc d, Acc e') (Acc e) (Acc e'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays e', Arrays f) => Field5 (Acc (a,b,c,d,e,f)) (Acc (a,b,c,d,e',f)) (Acc e) (Acc e') where+ _5 = liftLens (_5 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f) (Acc a, Acc b, Acc c, Acc d, Acc e', Acc f) (Acc e) (Acc e'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays e', Arrays f, Arrays g) => Field5 (Acc (a,b,c,d,e,f,g)) (Acc (a,b,c,d,e',f,g)) (Acc e) (Acc e') where+ _5 = liftLens (_5 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g) (Acc a, Acc b, Acc c, Acc d, Acc e', Acc f, Acc g) (Acc e) (Acc e'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays e', Arrays f, Arrays g, Arrays h) => Field5 (Acc (a,b,c,d,e,f,g,h)) (Acc (a,b,c,d,e',f,g,h)) (Acc e) (Acc e') where+ _5 = liftLens (_5 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a, Acc b, Acc c, Acc d, Acc e', Acc f, Acc g, Acc h) (Acc e) (Acc e'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays e', Arrays f, Arrays g, Arrays h, Arrays i) => Field5 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a,b,c,d,e',f,g,h,i)) (Acc e) (Acc e') where+ _5 = liftLens (_5 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a, Acc b, Acc c, Acc d, Acc e', Acc f, Acc g, Acc h, Acc i) (Acc e) (Acc e'))+++-- Field6+-- ------++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt f') => Field6 (Exp (a,b,c,d,e,f)) (Exp (a,b,c,d,e,f')) (Exp f) (Exp f') where+ _6 = liftLens (_6 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f') (Exp f) (Exp f'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt f', Elt g) => Field6 (Exp (a,b,c,d,e,f,g)) (Exp (a,b,c,d,e,f',g)) (Exp f) (Exp f') where+ _6 = liftLens (_6 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f', Exp g) (Exp f) (Exp f'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt f', Elt g, Elt h) => Field6 (Exp (a,b,c,d,e,f,g,h)) (Exp (a,b,c,d,e,f',g,h)) (Exp f) (Exp f') where+ _6 = liftLens (_6 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f', Exp g, Exp h) (Exp f) (Exp f'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt f', Elt g, Elt h, Elt i) => Field6 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a,b,c,d,e,f',g,h,i)) (Exp f) (Exp f') where+ _6 = liftLens (_6 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f', Exp g, Exp h, Exp i) (Exp f) (Exp f'))+++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays f') => Field6 (Acc (a,b,c,d,e,f)) (Acc (a,b,c,d,e,f')) (Acc f) (Acc f') where+ _6 = liftLens (_6 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f') (Acc f) (Acc f'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays f', Arrays g) => Field6 (Acc (a,b,c,d,e,f,g)) (Acc (a,b,c,d,e,f',g)) (Acc f) (Acc f') where+ _6 = liftLens (_6 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f', Acc g) (Acc f) (Acc f'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays f', Arrays g, Arrays h) => Field6 (Acc (a,b,c,d,e,f,g,h)) (Acc (a,b,c,d,e,f',g,h)) (Acc f) (Acc f') where+ _6 = liftLens (_6 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f', Acc g, Acc h) (Acc f) (Acc f'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays f', Arrays g, Arrays h, Arrays i) => Field6 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a,b,c,d,e,f',g,h,i)) (Acc f) (Acc f') where+ _6 = liftLens (_6 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f', Acc g, Acc h, Acc i) (Acc f) (Acc f'))+++-- Field7+-- ------++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt g') => Field7 (Exp (a,b,c,d,e,f,g)) (Exp (a,b,c,d,e,f,g')) (Exp g) (Exp g') where+ _7 = liftLens (_7 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g') (Exp g) (Exp g'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt g', Elt h) => Field7 (Exp (a,b,c,d,e,f,g,h)) (Exp (a,b,c,d,e,f,g',h)) (Exp g) (Exp g') where+ _7 = liftLens (_7 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g', Exp h) (Exp g) (Exp g'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt g', Elt h, Elt i) => Field7 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a,b,c,d,e,f,g',h,i)) (Exp g) (Exp g') where+ _7 = liftLens (_7 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g', Exp h, Exp i) (Exp g) (Exp g'))+++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays g') => Field7 (Acc (a,b,c,d,e,f,g)) (Acc (a,b,c,d,e,f,g')) (Acc g) (Acc g') where+ _7 = liftLens (_7 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g') (Acc g) (Acc g'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays g', Arrays h) => Field7 (Acc (a,b,c,d,e,f,g,h)) (Acc (a,b,c,d,e,f,g',h)) (Acc g) (Acc g') where+ _7 = liftLens (_7 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g', Acc h) (Acc g) (Acc g'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays g', Arrays h, Arrays i) => Field7 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a,b,c,d,e,f,g',h,i)) (Acc g) (Acc g') where+ _7 = liftLens (_7 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g', Acc h, Acc i) (Acc g) (Acc g'))+++-- Field8+-- ------++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt h') => Field8 (Exp (a,b,c,d,e,f,g,h)) (Exp (a,b,c,d,e,f,g,h')) (Exp h) (Exp h') where+ _8 = liftLens (_8 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h') (Exp h) (Exp h'))++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt h', Elt i) => Field8 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a,b,c,d,e,f,g,h',i)) (Exp h) (Exp h') where+ _8 = liftLens (_8 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h', Exp i) (Exp h) (Exp h'))+++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays h, Arrays h') => Field8 (Acc (a,b,c,d,e,f,g,h)) (Acc (a,b,c,d,e,f,g,h')) (Acc h) (Acc h') where+ _8 = liftLens (_8 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h') (Acc h) (Acc h'))++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays h, Arrays h', Arrays i) => Field8 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a,b,c,d,e,f,g,h',i)) (Acc h) (Acc h') where+ _8 = liftLens (_8 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h', Acc i) (Acc h) (Acc h'))+++-- Field9+-- ------++instance (Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i, Elt i') => Field9 (Exp (a,b,c,d,e,f,g,h,i)) (Exp (a,b,c,d,e,f,g,h,i')) (Exp i) (Exp i') where+ _9 = liftLens (_9 :: Lens (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i) (Exp a, Exp b, Exp c, Exp d, Exp e, Exp f, Exp g, Exp h, Exp i') (Exp i) (Exp i'))+++instance (Arrays a, Arrays b, Arrays c, Arrays d, Arrays e, Arrays f, Arrays g, Arrays h, Arrays i, Arrays i') => Field9 (Acc (a,b,c,d,e,f,g,h,i)) (Acc (a,b,c,d,e,f,g,h,i')) (Acc i) (Acc i') where+ _9 = liftLens (_9 :: Lens (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i) (Acc a, Acc b, Acc c, Acc d, Acc e, Acc f, Acc g, Acc h, Acc i') (Acc i) (Acc i'))+