{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances, FlexibleContexts #-} -- | Functions to write imperative style csound code module CsoundExpr.Base.Imperative ( outList, ar, kr, ir, gar, gkr, gir, Assign(..)) where import CsoundExpr.Translator.Types import CsoundExpr.Translator.Cs.IM import CsoundExpr.Translator.Cs.CsTree import CsoundExpr.Translator.ExprTree.ExprTree ar :: Name -> Arate ar = argIn A kr :: Name -> Krate kr = argIn K ir :: Name -> Irate ir = argIn I gar :: Name -> Arate gar = argIn GA gkr :: Name -> Krate gkr = argIn GK gir :: Name -> Irate gir = argIn GI fromArgIn :: (IM CsTree a) => a -> (Rate, Name) fromArgIn a | isArg e = (argRate e, argName e) | otherwise = error "left hand side of <=> should be named expression" where e = exprOp $ exprTreeTag t t = to a :: CsTree -- Assign Class infixr 0 <=> class Assign a where (<=>) :: a -> a -> SignalOut instance Assign Arate where sig <=> expr = let (rate, name) = fromArgIn sig in SignalOut $ return $ argOut rate name expr instance Assign Krate where sig <=> expr = let (rate, name) = fromArgIn sig in SignalOut $ return $ argOut rate name expr instance Assign Irate where sig <=> expr = let (rate, name) = fromArgIn sig in SignalOut $ return $ argOut rate name expr instance (Assign a) => Assign [a] where sigs <=> exprs = outList $ zipWith (<=>) sigs exprs instance (Assign a0, Assign a1) => Assign (a0, a1) where (sig0, sig1) <=> (exprs0, exprs1) = outList [sig0 <=> exprs0, sig1 <=> exprs1] instance (Assign a0, Assign a1, Assign a2) => Assign (a0, a1, a2) where (sig0, sig1, sig2) <=> (exprs0, exprs1, exprs2) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2] instance (Assign a0, Assign a1, Assign a2, Assign a3) => Assign (a0, a1, a2, a3) where (sig0, sig1, sig2, sig3) <=> (exprs0, exprs1, exprs2, exprs3) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4) => Assign (a0, a1, a2, a3, a4) where (sig0, sig1, sig2, sig3, sig4) <=> (exprs0, exprs1, exprs2, exprs3, exprs4) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5) => Assign (a0, a1, a2, a3, a4, a5) where (sig0, sig1, sig2, sig3, sig4, sig5) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6) => Assign (a0, a1, a2, a3, a4, a5, a6) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7) => Assign (a0, a1, a2, a3, a4, a5, a6, a7) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23, sig24) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23, exprs24) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23, sig24, sig25) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23, exprs24, exprs25) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24, sig25 <=> exprs25] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23, sig24, sig25, sig26) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23, exprs24, exprs25, exprs26) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24, sig25 <=> exprs25, sig26 <=> exprs26] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23, exprs24, exprs25, exprs26, exprs27) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24, sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27, Assign a28) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27, sig28) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23, exprs24, exprs25, exprs26, exprs27, exprs28) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24, sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27, sig28 <=> exprs28] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27, Assign a28, Assign a29) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27, sig28, sig29) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23, exprs24, exprs25, exprs26, exprs27, exprs28, exprs29) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24, sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27, sig28 <=> exprs28, sig29 <=> exprs29] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27, Assign a28, Assign a29, Assign a30) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27, sig28, sig29, sig30) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23, exprs24, exprs25, exprs26, exprs27, exprs28, exprs29, exprs30) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24, sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27, sig28 <=> exprs28, sig29 <=> exprs29, sig30 <=> exprs30] instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27, Assign a28, Assign a29, Assign a30, Assign a31) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31) where (sig0, sig1, sig2, sig3, sig4, sig5, sig6, sig7, sig8, sig9, sig10, sig11, sig12, sig13, sig14, sig15, sig16, sig17, sig18, sig19, sig20, sig21, sig22, sig23, sig24, sig25, sig26, sig27, sig28, sig29, sig30, sig31) <=> (exprs0, exprs1, exprs2, exprs3, exprs4, exprs5, exprs6, exprs7, exprs8, exprs9, exprs10, exprs11, exprs12, exprs13, exprs14, exprs15, exprs16, exprs17, exprs18, exprs19, exprs20, exprs21, exprs22, exprs23, exprs24, exprs25, exprs26, exprs27, exprs28, exprs29, exprs30, exprs31) = outList [sig0 <=> exprs0, sig1 <=> exprs1, sig2 <=> exprs2, sig3 <=> exprs3, sig4 <=> exprs4, sig5 <=> exprs5, sig6 <=> exprs6, sig7 <=> exprs7, sig8 <=> exprs8, sig9 <=> exprs9, sig10 <=> exprs10, sig11 <=> exprs11, sig12 <=> exprs12, sig13 <=> exprs13, sig14 <=> exprs14, sig15 <=> exprs15, sig16 <=> exprs16, sig17 <=> exprs17, sig18 <=> exprs18, sig19 <=> exprs19, sig20 <=> exprs20, sig21 <=> exprs21, sig22 <=> exprs22, sig23 <=> exprs23, sig24 <=> exprs24, sig25 <=> exprs25, sig26 <=> exprs26, sig27 <=> exprs27, sig28 <=> exprs28, sig29 <=> exprs29, sig30 <=> exprs30, sig31 <=> exprs31]