úÎG=ąc      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abNone&'+-;<=>?AFQSTV:~DConverts a function that works on n-ary tuples to a curried function/curryT (\(a,b,c) -> a + b + c) 1 2 3 :: Integer6?Currently, type inference is partially broken for this functionDConverts a curried function to a function that works on n-ary tuples&uncurryT (\a b c -> a + b + c) (1,2,3)6-Appends two n-ary tuple into one larger tupleappendT (5,'c') ('d',False)(5,'c','d',False)c-Compresses sub-tuples into their paren-tuplesflattenT (5,6,(1,2,(3,4))):Deletes an element specified by an index in an n-ary tuple%delN ('c',False,5) (Proxy :: Proxy 1)('c',5)XDeletes the first element in an n-ary tuple whose type does not exist in the target type del ('c',False,5) :: (Char,Bool) ('c',False)-Adds an element to the back of an n-ary tuplesnocT 5 (True,'c') (True,'c',5)-Adds an element to the head of an n-ary tupleconsT 5 (True,'c') (5,True,'c')uMaps a monomorphic function over each element in an n-ary tuple that matches the type of the argument of the functionmap not (True,5,'c',False)(False,5,'c',True)5Sometimes it is necessary to specify the result type.8map (+1) (5,6,7,False) :: (Integer,Integer,Integer,Bool) (6,7,8,False)Using $9 this is not necessary, but this comes with a limitation.+Applies a function to the element at index n in an n-ary tuple.%appN not (Proxy 2) (False,True,False)(False,True,True)% also works for polymorphic functions*appN show (5,'c',False) (Proxy :: Proxy 2)(5,'c',"False") |Applies a monomorphic function to the first element of an n-ary tuple that matches the type of the argument of the function.app not ('d',True) ('d',False)“Sometimes it is necessary to specify the result type, such that the function becomes monomorphic >>> app (+1) (True,5) :: (Bool,Integer) (True,6)One may also use §, which doesn't require specifying the result type. However it can only apply functions to the first element of an n-ary tuple. For application to other elements use appPolyN or one of its derivatives. HTakes an n-ary tuple and returns the same tuple minus the first element.initT (1,2,3,4)(1,2,3))Works only only tuples of size at least 3 initT (1,2).Couldn't match type `2 ':<= 3' with `2 ':>= 3' HTakes an n-ary tuple and returns the same tuple minus the first element.tailT (1,2,3,4)(2,3,4))Works only only tuples of size at least 3 tailT (1,2).Couldn't match type `2 ':<= 3' with `2 ':>= 3' Takes an n-ary tuple and a d carrying a e6, returns the element with the index specified by the Nat)selN (1,'d',False,'c') (Proxy :: Proxy 2)False HTakes an n-ary tuple and returns the first element of the requested typesel (1,'d','c') :: Char'd'+Selects the first element in an n-ary tuplesel1 (0,'d','c')0+Selects the last element of any n-ary tuplelastT (1,2,3,4)4 lastT (1,2,3)3˛Applies a polymorphic function to the first element of an n-ary tuple. Since the function is polymorphic in its argument it can always be applied to the first element of a tuple.appPoly show (5,False) ("5",False)9Applies a function to the first element of an n-ary tupleapp1 (+1) (5,6,7)(6,6,7)$|Applies a polymorphic function to each element in an n-ary tuple. Requires all elements in the tuple to be of the same type.mapPolyT (+1) (5,6,7,8) (6,7,8,9)mapPolyT (+1) (5,6,7,False)7No instance for (Num Bool) arising from the literal `5'%+Deletes the first element of an n-ary tupledel1 ('c',False,5) (False,5)/  !"#$%&'()*+,-./  $ !"# %&'()*+,-.$fghijklmnopqrstuvwxyz{|}~€c‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•– —˜™ š›œ žŸ  Ą˘ Safe=Š٤ĽŚ§¨ŠŞŤ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoppqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą(tuple-sop-0.2.0.0-F9KJ9mtvjUHL1OXwbzFCYrData.Tuple.OpsPaths_tuple_sopcurryTuncurryTappendTdelNdelsnocTconsTmapTappNappinitTtailTselNselsel1sel2sel3sel4sel5sel6sel7sel8sel9sel10lastTappPolyapp1app2app3app4app5app6app7app8app9app10mapPolyTdel1del2del3del4del5del6del7del8del9del10 $fGSelectNPt $fGSelectNPt0 $fGTailTNPNP $fGInitTNPNP $fGInitTNPNP0 $fGAppf:NPNP$fGApp(->):NPNP $fGMapTf:NPNP$fGMapT(->):NPNP$fGMapTf[]NPNP $fGConsTaNPNP $fGSnocTaNPNP$fGSnocTaNPNP0 $fGDeleteNPNP$fGDeleteNPNP0$fGFlattenT:NPNP$fGFlattenT[]NPNP$fGAppendTNPysNP$fGAppendTNPysys$fGUnCurryT(->)NPb'$fGUnCurryTbNPb' $fUnCurryTstb $fAppendTsrt $fSnocTast $fConsTast $fSelectst$fFuncToGen(->)(->)$fFuncToGenbb'$fGReverseNPNPt$fGReverseNPNPNP$fGDeleteNNPS'NP$fGDeleteNNPZ'NP$fGAppNfNPS'NP$fGSelectNNPS't$fGSelectNNPZ't $fSelectNsnt$fGFlattenT:NPNP0 $fFlattenTst$fGMapTPoly:NPNP$fGAppNPolyNPZ'NP $fAppN(->)snt$fGAppPoly:NPNP $fMapTfst$fAppfst$fGCurryT(->)NP[]b'$fGCurryTfNP:(->) $fCurryTst $fDeleteNsnt $fDeletest $fInitTst $fTailTst $fGenericNPsflattenTbase Data.ProxyProxyghc-prim GHC.TypesNatRel:<=:>=PolyNat'Z'S'GReversegreverse FuncToGen funcToGen GenericNPRepNPfrom_npto_npGCurryTgcurryTCurryT GUnCurryT guncurryTUnCurryTGAppendTgappendTAppendT GFlattenT gflattenTFlattenTGDeleteNgdelNDeleteNGDeletegdelDeleteGSnocTgsnocTSnocTGConsTgconsTConsTGMapTgmapTMapTGAppNgappNAppNGAppgappAppGInitTginitTInitTGTailTgtailTTailTGSelectNgselNSelectNGSelectgselSelectversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName