module Hat.Data.List ((!++),(+++),(*++),ghead,ahead,hhead,glast,alast,hlast,gtail,atail,htail,ginit ,ainit,hinit,gnull,anull,hnull,glength,alength,hlength,gmap,amap,hmap ,greverse,gintersperse,aintersperse,hintersperse,gintercalate,aintercalate ,hintercalate,gtranspose,atranspose,htranspose,gsubsequences,asubsequences ,hsubsequences,gpermutations,apermutations,hpermutations,gfoldl,afoldl ,hfoldl,gfoldl',afoldl',hfoldl',gfoldl1,afoldl1,hfoldl1,gfoldl1',afoldl1' ,hfoldl1',gfoldr,afoldr,hfoldr,gfoldr1,afoldr1,hfoldr1,gconcat,aconcat ,hconcat,gconcatMap,aconcatMap,hconcatMap,gand,gor,gany,aany,hany,gall,aall ,hall,gsum,gproduct,gmaximum,amaximum,hmaximum,gminimum,aminimum,hminimum ,gscanl,ascanl,hscanl,gscanl1,ascanl1,hscanl1,gscanr,ascanr,hscanr,gscanr1 ,ascanr1,hscanr1,gmapAccumL,amapAccumL,hmapAccumL,gmapAccumR,amapAccumR ,hmapAccumR,giterate,aiterate,hiterate,grepeat,arepeat,hrepeat,greplicate ,areplicate,hreplicate,gcycle,acycle,hcycle,gunfoldr,aunfoldr,hunfoldr,gtake ,atake,htake,gdrop,adrop,hdrop,gsplitAt,asplitAt,hsplitAt,gtakeWhile ,atakeWhile,htakeWhile,gdropWhile,adropWhile,hdropWhile,gspan,aspan,hspan ,gbreak,abreak,hbreak,gstripPrefix,astripPrefix,hstripPrefix,ggroup,ginits ,ainits,hinits,gtails,atails,htails,gisPrefixOf,aisPrefixOf,hisPrefixOf ,gisSuffixOf,aisSuffixOf,hisSuffixOf,gisInfixOf,aisInfixOf,hisInfixOf,gelem ,aelem,helem,gnotElem,anotElem,hnotElem,glookup,alookup,hlookup,gfind,afind ,hfind,gfilter,afilter,hfilter,gpartition,apartition,hpartition,(!!!),(+!!) ,(*!!),gelemIndex,aelemIndex,helemIndex,gelemIndices,aelemIndices ,helemIndices,gfindIndex,afindIndex,hfindIndex,gfindIndices,afindIndices ,hfindIndices,gzip,gzip3,gzip4,gzip5,gzip6,gzip7,gzipWith,azipWith,hzipWith ,gzipWith3,azipWith3,hzipWith3,gzipWith4,azipWith4,hzipWith4,gzipWith5 ,azipWith5,hzipWith5,gzipWith6,azipWith6,hzipWith6,gzipWith7,azipWith7 ,hzipWith7,gunzip,gunzip3,gunzip4,gunzip5,gunzip6,gunzip7,glines,alines ,hlines,gwords,awords,hwords,gunlines,gunwords,aunwords,hunwords,gnub ,gdelete,(!\\),gunion,gintersect,gsort,ginsert,gnubBy,anubBy,hnubBy ,gdeleteBy,adeleteBy,hdeleteBy,gdeleteFirstsBy,adeleteFirstsBy ,hdeleteFirstsBy,gunionBy,aunionBy,hunionBy,gintersectBy,aintersectBy ,hintersectBy,ggroupBy,agroupBy,hgroupBy,gsortBy,asortBy,hsortBy,ginsertBy ,ainsertBy,hinsertBy,gmaximumBy,amaximumBy,hmaximumBy,gminimumBy,aminimumBy ,hminimumBy,ggenericLength,agenericLength,hgenericLength,ggenericTake ,agenericTake,hgenericTake,ggenericDrop,agenericDrop,hgenericDrop ,ggenericSplitAt,agenericSplitAt,hgenericSplitAt,ggenericIndex,agenericIndex ,hgenericIndex,ggenericReplicate,agenericReplicate,hgenericReplicate) where import qualified Hat.PreludeBasic import qualified Prelude import Hat.Hack import qualified Hat.Hat as T import Hat.Hat (WrapVal(wrapVal)) import Hat.Prelude import Hat.List gintercalate :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List (T.List a)) (T.List a))) hintercalate :: (T.R (T.List a)) -> (T.R (T.List (T.List a))) -> T.RefExp -> T.R (T.List a) gintercalate pintercalate p = T.ufun2 aintercalate pintercalate p hintercalate hintercalate fxs fxss p = T.uwrapForward p (hconcat (T.uwrapForward p (hintersperse fxs fxss p)) p) gsubsequences :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a))) hsubsequences :: (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a)) gsubsequences psubsequences p = T.ufun1 asubsequences psubsequences p hsubsequences hsubsequences fxs p = T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.con0 T.mkNoSrcPos p T.List T.aList) (T.uwrapForward p (hnonEmptySubsequences fxs p)) gnonEmptySubsequences :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a))) hnonEmptySubsequences :: (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a)) gnonEmptySubsequences pnonEmptySubsequences p = T.ufun1 anonEmptySubsequences pnonEmptySubsequences p hnonEmptySubsequences hnonEmptySubsequences (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList hnonEmptySubsequences (T.R (T.Cons fx fxs) _) p = T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.fromExpList T.mkNoSrcPos p [fx]) (T.uwrapForward p (hfoldr (gf T.mkNoSrcPos p) (T.con0 T.mkNoSrcPos p T.List T.aList) (T.uwrapForward p (hnonEmptySubsequences fxs p)) p)) where gf pf p = T.ufun2 a42v9v42v34f pf p hf af = a42v9v42v34f hf fys fr p = T.con2 T.mkNoSrcPos p T.Cons T.aCons fys (T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx fys) fr) hnonEmptySubsequences _ p = T.fatal p gpermutations :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a))) hpermutations :: (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a)) gpermutations ppermutations p = T.ufun1 apermutations ppermutations p hpermutations hpermutations fxs0 p = T.con2 T.mkNoSrcPos p T.Cons T.aCons fxs0 (T.uwrapForward p (hperms fxs0 (T.con0 T.mkNoSrcPos p T.List T.aList) p)) where gperms pperms p = T.ufun2 a50v5v55v64perms pperms p hperms aperms = a50v5v55v64perms hperms (T.R T.List _) _ p = T.con0 T.mkNoSrcPos p T.List T.aList hperms (T.R (T.Cons ft fts) _) fis p = T.uwrapForward p (hfoldr (ginterleave T.mkNoSrcPos p) (T.uwrapForward p (hperms fts (T.con2 T.mkNoSrcPos p T.Cons T.aCons ft fis) p)) (T.uwrapForward p (hpermutations fis p)) p) where ginterleave pinterleave p = T.ufun2 a52v13v52v75interleave pinterleave p hinterleave ainterleave = a52v13v52v75interleave hinterleave fxs fr p = let gzs pzs p = T.uconstUse pzs p szs j52v42v52v47zs = case T.uwrapForward p (hinterleave' (gid T.mkNoSrcPos p) fxs fr p) of T.R (T.Tuple2 _ fzs) kzs -> (kzs,fzs) _ -> T.fatal p szs = T.uconstDef p a52v45v52v46zs (\ _ -> case j52v42v52v47zs of (kzs,fzs) -> fzs) in (gzs T.mkNoSrcPos p) ginterleave' pinterleave' p = T.ufun3 a53v13v55v64interleave' pinterleave' p hinterleave' ainterleave' = a53v13v55v64interleave' hinterleave' _ (T.R T.List _) fr p = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fts fr hinterleave' ff (T.R (T.Cons fy fys) _) fr p = let gus pus p = T.uconstUse pus p sus gzs pus p = T.uconstUse pus p szs j54v42v54v48us = case T.uwrapForward p (hinterleave' (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) ff (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fy)) fys fr p) of T.R (T.Tuple2 fus fzs) kus -> (kus,fus,fzs) _ -> T.fatal p sus = T.uconstDef p a54v43v54v44us (\ _ -> case j54v42v54v48us of (kus,fus,fzs) -> fus) szs = T.uconstDef p a54v46v54v47zs (\ _ -> case j54v42v54v48us of (kus,fus,fzs) -> fzs) in (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (T.con2 T.mkNoSrcPos p T.Cons T.aCons fy (gus T.mkNoSrcPos p)) (T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.uap1 T.mkNoSrcPos p ff (T.con2 T.mkNoSrcPos p T.Cons T.aCons ft (T.con2 T.mkNoSrcPos p T.Cons T.aCons fy (gus T.mkNoSrcPos p)))) (gzs T.mkNoSrcPos p))) hinterleave' _ _ _ p = T.fatal p hperms _ _ p = T.fatal p gfoldl' :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Fun a (T.Fun b a)) (T.Fun a (T.Fun (T.List b) a))) hfoldl' :: (T.R (T.Fun a (T.Fun b a))) -> (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R a gfoldl' pfoldl' p = T.ufun3 afoldl' pfoldl' p hfoldl' hfoldl' ff fa (T.R T.List _) p = T.projection T.mkNoSrcPos p fa hfoldl' ff fa (T.R (T.Cons fx fxs) _) p = let ga' pa' p = T.uconstUse pa' p sa' sa' = T.uconstDef p a60v25v60v34a' (\ p -> T.uap2 T.mkNoSrcPos p ff fa fx) in (T.uwrapForward p (hseq (ga' T.mkNoSrcPos p) (T.uwrapForward p (hfoldl' ff (ga' T.mkNoSrcPos p) fxs p)) p)) hfoldl' _ _ _ p = T.fatal p gfoldl1' :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Fun a (T.Fun a a)) (T.Fun (T.List a) a)) hfoldl1' :: (T.R (T.Fun a (T.Fun a a))) -> (T.R (T.List a)) -> T.RefExp -> T.R a gfoldl1' pfoldl1' p = T.ufun2 afoldl1' pfoldl1' p hfoldl1' hfoldl1' ff (T.R (T.Cons fx fxs) _) p = T.uwrapForward p (hfoldl' ff fx fxs p) hfoldl1' _ (T.R T.List _) p = T.uwrapForward p (herror (T.fromLitString T.mkNoSrcPos p "Prelude.foldl1': empty list") p) hfoldl1' _ _ p = T.fatal p gstripPrefix :: Eq a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) (Maybe (T.List a)))) hstripPrefix :: Eq a => (T.R (T.List a)) -> (T.R (T.List a)) -> T.RefExp -> T.R (Maybe (T.List a)) gstripPrefix pstripPrefix p = T.ufun2 astripPrefix pstripPrefix p hstripPrefix hstripPrefix (T.R T.List _) fys p = T.con1 T.mkNoSrcPos p Just aJust fys hstripPrefix (z1stripPrefix@(T.R (T.Cons fx fxs) _)) (z2stripPrefix@(T.R (T.Cons fy fys) _)) p = T.ucguard (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !== p) fx fy) (T.uwrapForward p (hstripPrefix fxs fys p)) (y1stripPrefix z1stripPrefix z2stripPrefix p) hstripPrefix z1stripPrefix z2stripPrefix p = y1stripPrefix z1stripPrefix z2stripPrefix p y1stripPrefix _ _ p = T.con0 T.mkNoSrcPos p Nothing aNothing gisInfixOf :: Eq a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) Bool)) hisInfixOf :: Eq a => (T.R (T.List a)) -> (T.R (T.List a)) -> T.RefExp -> T.R Bool gisInfixOf pisInfixOf p = T.ufun2 aisInfixOf pisInfixOf p hisInfixOf hisInfixOf fneedle fhaystack p = T.uap2 T.mkNoSrcPos p (gany T.mkNoSrcPos p) (T.uap1 T.mkNoSrcPos p (gisPrefixOf T.mkNoSrcPos p) fneedle) (T.uwrapForward p (htails fhaystack p)) tData_List = T.mkModule "Data.List" "Data/List.hs" Prelude.False aintercalate = T.mkVariable tData_List 270001 270047 3 2 "intercalate" Prelude.False asubsequences = T.mkVariable tData_List 330001 330055 3 1 "subsequences" Prelude.False anonEmptySubsequences = T.mkVariable tData_List 400001 420034 3 1 "nonEmptySubsequences" Prelude.False apermutations = T.mkVariable tData_List 480001 550064 3 1 "permutations" Prelude.False afoldl' = T.mkVariable tData_List 590001 600061 3 3 "foldl'" Prelude.False afoldl1' = T.mkVariable tData_List 640001 650063 3 2 "foldl1'" Prelude.False astripPrefix = T.mkVariable tData_List 760001 790025 3 2 "stripPrefix" Prelude.False aisInfixOf = T.mkVariable tData_List 900001 900067 3 2 "isInfixOf" Prelude.False a42v9v42v34f = T.mkVariable tData_List 420009 420034 3 2 "f" Prelude.True a50v5v55v64perms = T.mkVariable tData_List 500005 550064 3 2 "perms" Prelude.True a52v13v52v75interleave = T.mkVariable tData_List 520013 520075 3 2 "interleave" Prelude.True a53v13v55v64interleave' = T.mkVariable tData_List 530013 550064 3 3 "interleave'" Prelude.True a52v45v52v46zs = T.mkVariable tData_List 520045 520046 3 0 "zs" Prelude.True a54v43v54v44us = T.mkVariable tData_List 540043 540044 3 0 "us" Prelude.True a54v46v54v47zs = T.mkVariable tData_List 540046 540047 3 0 "zs" Prelude.True a60v25v60v34a' = T.mkVariable tData_List 600025 600034 3 0 "a'" Prelude.True