hat 2.7.0.12 → 2.8.0.0
raw patch · 110 files changed
+32336/−35510 lines, 110 filesdep +filepathdep +haskell-src-extsdep ~containers
Dependencies added: filepath, haskell-src-exts
Dependency ranges changed: containers
Files
- Hat/Array.hs +579/−549
- Hat/CPUTime.hs +36/−34
- Hat/Char.hs +22/−18
- Hat/Complex.hs +1095/−1038
- Hat/Control/Monad.hs +208/−163
- Hat/Data/Char.hs +3250/−2492
- Hat/Data/List.hs +360/−272
- Hat/Data/Maybe.hs +18/−15
- Hat/Directory.hs +380/−319
- Hat/DirectoryBuiltinTypes.hs +77/−63
- Hat/Hat.hs +7/−7
- Hat/IO.hs +814/−656
- Hat/IOBuiltinTypes.hs +1205/−1119
- Hat/Ix.hs +7138/−6996
- Hat/List.hs +1903/−1722
- Hat/Locale.hs +814/−438
- Hat/Maybe.hs +156/−116
- Hat/Monad.hs +474/−391
- Hat/Numeric.hs +20/−17
- Hat/Prelude.hs +104/−64
- Hat/PreludeBasic.hs too large to diff
- Hat/PreludeBuiltin.hs +1988/−1733
- Hat/PreludeBuiltinTypes.hs +6/−5
- Hat/Random.hs +931/−854
- Hat/Ratio.hs +12/−12
- Hat/System.hs +85/−74
- Hat/System/Environment.hs +53/−45
- Hat/System/Exit.hs +50/−45
- Hat/System/IO.hs +159/−124
- Hat/SystemBuiltinTypes.hs +168/−164
- Hat/Time.hs +268/−214
- Hat/TimeBuiltinTypes.hs +4405/−3405
- compiler98/AssocTree.hs +0/−58
- compiler98/Error.hs +0/−42
- compiler98/Extra.hs +0/−294
- compiler98/HbcOnly.hs +0/−12
- compiler98/Id.hs +0/−12
- compiler98/IdKind.hs +0/−60
- compiler98/Info.hs +0/−498
- compiler98/IntState.hs +0/−266
- compiler98/Lex.hs +0/−231
- compiler98/LexLow.hs +0/−311
- compiler98/LexPre.hs +0/−161
- compiler98/LexStr.hs +0/−119
- compiler98/Lexical.hs +0/−95
- compiler98/MergeSort.hs +0/−16
- compiler98/MkSyntax.hs +0/−200
- compiler98/NT.hs +0/−181
- compiler98/Nice.hs +0/−130
- compiler98/OsOnly.hs +0/−121
- compiler98/Parse.hs +0/−428
- compiler98/Parse2.hs +0/−258
- compiler98/ParseCore.hs +0/−86
- compiler98/ParseLex.hs +0/−160
- compiler98/ParseLib.hs +0/−165
- compiler98/PrettyLib.hs +0/−450
- compiler98/PrettySyntax.hs +0/−796
- compiler98/Reduce.hs +0/−15
- compiler98/Syntax.hs +0/−378
- compiler98/SyntaxPos.hs +0/−121
- compiler98/SyntaxUtil.hs +0/−47
- compiler98/SysDeps.hs +0/−40
- compiler98/TokenId.hs +0/−384
- compiler98/Tree234.hs +0/−95
- compiler98/Unlit.hs +0/−68
- hat.cabal +28/−26
- libraries/Array.hs +8/−2
- libraries/Array.hx +2/−6
- libraries/CPUTime.hs +2/−2
- libraries/Char.hx +1/−1
- libraries/Control/Monad.hx +4/−4
- libraries/Data/Char.hs +12/−12
- libraries/Data/Char.hx +1/−1
- libraries/Directory.hs +22/−22
- libraries/IO.hs +42/−42
- libraries/IO.hx +4/−4
- libraries/IOBuiltinTypes.hx +3/−3
- libraries/Ix.hx +1/−1
- libraries/Monad.hx +4/−4
- libraries/Prelude.hx +80/−114
- libraries/PreludeBasic.hs +7/−1
- libraries/PreludeBasic.hx +83/−264
- libraries/PreludeBuiltin.hs +140/−139
- libraries/PreludeBuiltin.hx +1/−35
- libraries/PreludeBuiltinTypes.hx +1/−35
- libraries/Random.hs +12/−12
- libraries/Random.hx +4/−4
- libraries/System.hs +9/−9
- libraries/System.hx +2/−2
- libraries/SystemBuiltinTypes.hx +2/−2
- libraries/Time.hs +13/−13
- libraries/Time.hx +8/−8
- libraries/TimeBuiltinTypes.hx +8/−8
- trans/AuxFile.hs +65/−552
- trans/AuxFixity.hs +0/−224
- trans/AuxLabelAST.hs +0/−405
- trans/AuxTypes.hs +0/−175
- trans/Derive.hs +428/−0
- trans/Environment.hs +804/−0
- trans/Flags.hs +67/−138
- trans/HatTrans.hs +108/−148
- trans/PrettyTraceId.hs +0/−45
- trans/Relation.hs +83/−0
- trans/SynHelp.hs +334/−0
- trans/TraceDerive.hs +0/−522
- trans/TraceId.hs +0/−316
- trans/TraceTrans.hs +2722/−2643
- trans/Wired.hs +323/−0
- trans/Wrap.hs +113/−0
- trans/Wrapper.hs +0/−104
Hat/Array.hs view
@@ -1,550 +1,580 @@ module Hat.Array- (module Hat.Ix,Array(),garray,aarray,harray,glistArray,alistArray,hlistArray- ,(!!),(+!),(*!),gbounds,abounds,hbounds,gindices,gelems,aelems,helems- ,gassocs,aassocs,hassocs,gaccumArray,aaccumArray,haccumArray,(!//),(+//)- ,(*//),gaccum,aaccum,haccum,gixmap,aixmap,hixmap) 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.Ix -import Hat.List ((!\\))--data Array a b = MkArray (T.R (T.Tuple2 a a)) (T.R (T.Fun a b))--instance T.WrapVal ((Array a b))- where- - wrapVal pwrapVal (kwrapVal@(MkArray (T.R _ z1wrapVal) (T.R _ z2wrapVal))) p =- T.R kwrapVal (T.mkValueApp2 p pwrapVal aMkArray z1wrapVal z2wrapVal)- --garray ::- Ix a =>- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (T.Tuple2 a a) (T.Fun (T.List (T.Tuple2 a b)) (Array a b)))--harray ::- Ix a =>- (T.R (T.Tuple2 a a)) ->- (T.R (T.List (T.Tuple2 a b))) -> T.RefExp -> T.R (Array a b)--garray parray p = T.ufun2 aarray parray p harray--harray fb fivs p =- T.ucif p- (T.uap1 T.mkNoSrcPos p (gand T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 (T.R (T.Tuple2 fi _) _) p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons- (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb fi))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x)) fivs) (T.fromExpList T.mkNoSrcPos p [])))- (T.con2 T.mkNoSrcPos p MkArray aMkArray fb- (T.ufun1 T.mkLambda T.mkNoSrcPos p- (\ fj p ->- T.uccase T.mkNoSrcPos p- (let- v18v29v23v75v1 (T.R (T.Cons fv (T.R T.List _)) _) p =- T.projection T.mkNoSrcPos p fv- v18v29v23v75v1 (T.R T.List _) p =- T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p- "Array.!: undefined array element") p)- v18v29v23v75v1 _ p =- T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p- "Array.!: multiply defined array element") p) in- (v18v29v23v75v1))- (T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 (T.R (T.Tuple2 fi fv) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_filter T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !== p) fi fj)- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fv))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x)) fivs)- (T.fromExpList T.mkNoSrcPos p [])))))- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p- "Array.array: out-of-range array association") p))--glistArray ::- Ix a =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun (T.List b) (Array a b)))--hlistArray ::- Ix a =>- (T.R (T.Tuple2 a a)) -> (T.R (T.List b)) -> T.RefExp -> T.R (Array a b)--glistArray plistArray p = T.ufun2 alistArray plistArray p hlistArray--hlistArray fb fvs p =- T.uwrapForward p- (harray fb- (T.uwrapForward p- (hzipWith- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ fa fb p -> T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fa fb))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p) fb) fvs p)) p)--(!!) :: Ix a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Array a b) (T.Fun a b))--(*!) :: Ix a => (T.R (Array a b)) -> T.RefExp -> T.R (T.Fun a b)--(!!) (%!) p = T.ufun1 (+!) (%!) p (*!)--(*!) (T.R (MkArray _ ff) _) p = T.projection T.mkNoSrcPos p ff-(*!) _ p = T.fatal p--gbounds ::- Ix a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Array a b) (T.Tuple2 a a))--hbounds :: Ix a => (T.R (Array a b)) -> T.RefExp -> T.R (T.Tuple2 a a)--gbounds pbounds p = T.ufun1 abounds pbounds p hbounds--hbounds (T.R (MkArray fb _) _) p = T.projection T.mkNoSrcPos p fb-hbounds _ p = T.fatal p--gindices ::- Ix a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Array a b) (T.List a))--sindices :: Ix a => T.R (T.Fun (Array a b) (T.List a))--gindices pindices p = T.uconstUse pindices p sindices--sindices =- T.uconstDef T.mkRoot aindices- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (grange T.mkNoSrcPos p)- (gbounds T.mkNoSrcPos p))--gelems :: Ix a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Array a b) (T.List b))--helems :: Ix a => (T.R (Array a b)) -> T.RefExp -> T.R (T.List b)--gelems pelems p = T.ufun1 aelems pelems p helems--helems fa p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !! p) fa fi)) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in (v0v0v0v0v1))- f_x)) (T.uap1 T.mkNoSrcPos p (gindices T.mkNoSrcPos p) fa))- (T.fromExpList T.mkNoSrcPos p [])--gassocs ::- Ix a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Array a b) (T.List (T.Tuple2 a b)))--hassocs :: Ix a => (T.R (Array a b)) -> T.RefExp -> T.R (T.List (T.Tuple2 a b))--gassocs passocs p = T.ufun1 aassocs passocs p hassocs--hassocs fa p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !! p) fa fi))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in (v0v0v0v0v1))- f_x)) (T.uap1 T.mkNoSrcPos p (gindices T.mkNoSrcPos p) fa))- (T.fromExpList T.mkNoSrcPos p [])--(!//) ::- Ix a =>- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (Array a b) (T.Fun (T.List (T.Tuple2 a b)) (Array a b)))--(*//) ::- Ix a =>- (T.R (Array a b)) ->- (T.R (T.List (T.Tuple2 a b))) -> T.RefExp -> T.R (Array a b)--(!//) (%//) p = T.ufun2 (+//) (%//) p (*//)--(*//) fa fnew_ivs p =- T.uwrapForward p- (harray (T.uwrapForward p (hbounds fa p))- (T.uwrapForward p (((gold_ivs T.mkNoSrcPos p) *++ fnew_ivs) p)) p)- where- - gold_ivs pold_ivs p = T.uconstUse pold_ivs p sold_ivs- - sold_ivs =- T.uconstDef p a47v20v47v26old_ivs- (\ p ->- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_filter T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (gnotElem T.mkNoSrcPos p) fi- (gnew_is T.mkNoSrcPos p))- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !! p) fa- fi)))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (gindices T.mkNoSrcPos p) fa))- (T.fromExpList T.mkNoSrcPos p []))- - gnew_is pnew_is p = T.uconstUse pnew_is p snew_is- - snew_is =- T.uconstDef p a49v20v49v25new_is- (\ p ->- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 (T.R (T.Tuple2 fi _) _) p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fi) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x)) fnew_ivs)- (T.fromExpList T.mkNoSrcPos p []))- --gaccum ::- Ix a =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun b (T.Fun c b))- (T.Fun (Array a b) (T.Fun (T.List (T.Tuple2 a c)) (Array a b))))--haccum ::- Ix a =>- (T.R (T.Fun b (T.Fun c b))) ->- T.RefExp ->- T.R (T.Fun (Array a b) (T.Fun (T.List (T.Tuple2 a c)) (Array a b)))--gaccum paccum p = T.ufun1 aaccum paccum p haccum--haccum ff p =- T.uap1 T.mkNoSrcPos p (gfoldl T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ v53v33v53v64v1 v53v33v53v64v2 p ->- case (v53v33v53v64v1,v53v33v53v64v2) of- (fa,T.R (T.Tuple2 fi fv) _) ->- T.uwrapForward p- ((fa- *//- (T.fromExpList T.mkNoSrcPos p- [T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi- (T.uap2 T.mkNoSrcPos p ff- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !! p) fa fi)- fv)])) p)- _ -> T.fatal p))--gaccumArray ::- Ix a =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun b (T.Fun c b))- (T.Fun b- (T.Fun (T.Tuple2 a a) (T.Fun (T.List (T.Tuple2 a c)) (Array a b)))))--haccumArray ::- Ix a =>- (T.R (T.Fun b (T.Fun c b))) ->- (T.R b) ->- (T.R (T.Tuple2 a a)) ->- T.RefExp -> T.R (T.Fun (T.List (T.Tuple2 a c)) (Array a b))--gaccumArray paccumArray p = T.ufun3 aaccumArray paccumArray p haccumArray--haccumArray ff fz fb p =- T.uap2 T.mkNoSrcPos p (gaccum T.mkNoSrcPos p) ff- (T.uwrapForward p- (harray fb- (T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi fz)) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p) fb))- (T.fromExpList T.mkNoSrcPos p [])) p))--gixmap ::- (Ix a,Ix b) =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Tuple2 a a)- (T.Fun (T.Fun a b) (T.Fun (Array b c) (Array a c))))--hixmap ::- (Ix a,Ix b) =>- (T.R (T.Tuple2 a a)) ->- (T.R (T.Fun a b)) -> (T.R (Array b c)) -> T.RefExp -> T.R (Array a c)--gixmap pixmap p = T.ufun3 aixmap pixmap p hixmap--hixmap fb ff fa p =- T.uwrapForward p- (harray fb- (T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !! p) fa- (T.uap1 T.mkNoSrcPos p ff fi)))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p) fb))- (T.fromExpList T.mkNoSrcPos p [])) p)--instance Ix a => Functor ((Array a))- where- - gfmap pfmap p =- T.ufun2 a64v5v64v46fmap pfmap p hfmap- where- - hfmap ffn (T.R (MkArray fb ff) _) p =- T.con2 T.mkNoSrcPos p MkArray aMkArray fb- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) ffn ff)- hfmap _ _ p = T.fatal p- - --instance (Ix a,Eq b) => Eq ((Array a b))- where- - (!==) (%==) p =- T.ufun2 (++^=^=+^=@==) (%==) p (*==)- where- - (*==) fa fa' p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !== p)- (T.uwrapForward p (hassocs fa p)) (T.uwrapForward p (hassocs fa' p))- - --instance (Ix a,Ord b) => Ord ((Array a b))- where- - (!<=) (%<=) p =- T.ufun2 (+^!=^=^!=@<=) (%<=) p (*<=)- where- - (*<=) fa fa' p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p)- (T.uwrapForward p (hassocs fa p)) (T.uwrapForward p (hassocs fa' p))- - --instance (Ix a,Show a,Show b) => Show ((Array a b))- where- - gshowsPrec pshowsPrec p =- T.ufun2 a73v5v76v35showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fp fa p =- T.uwrapForward p- (hshowParen- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fp- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p)- (T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "array "))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p)- (T.uap1 T.mkNoSrcPos p (gshows T.mkNoSrcPos p)- (T.uwrapForward p (hbounds fa p)))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p)- (T.uap1 T.mkNoSrcPos p (gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ' '))- (T.uap1 T.mkNoSrcPos p (gshows T.mkNoSrcPos p)- (T.uwrapForward p (hassocs fa p)))))) p)- - --instance (Ix a,Read a,Read b) => Read ((Array a b))- where- - greadsPrec preadsPrec p =- T.ufun1 a79v5v80v13readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fp p =- T.uwrapForward p- (hreadParen- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fp- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)))- (T.ufun1 T.mkLambda T.mkNoSrcPos p- (\ fr p ->- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1- (T.R- (T.Tuple2- (T.R- (T.Cons (T.R 'a' _)- (T.R- (T.Cons (T.R 'r' _)- (T.R- (T.Cons (T.R 'r' _)- (T.R- (T.Cons (T.R 'a' _)- (T.R- (T.Cons (T.R 'y' _)- (T.R T.List _)) _)) _)) _))- _)) _) fs) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 (T.R (T.Tuple2 fb ft) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos- p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1- (T.R (T.Tuple2 fas fu)- _) p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1- T.mkNoSrcPos p- T.aCons- (T.con2 T.mkNoSrcPos- p T.Tuple2- T.aTuple2- (T.uwrapForward p- (harray fb fas- p)) fu)) f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (greads T.mkNoSrcPos p) ft)) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (greads T.mkNoSrcPos p)- fs)) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x)) (T.uwrapForward p (hlex fr p)))- (T.fromExpList T.mkNoSrcPos p []))) p)- - --tArray = T.mkModule "Array" "Array.hs" Prelude.False--aMkArray = T.mkConstructor tArray 120018 120024 3 2 "MkArray"--aarray = T.mkVariable tArray 150001 240064 3 2 "array" Prelude.False--alistArray = T.mkVariable tArray 270001 270071 3 2 "listArray" Prelude.False--(+!) = T.mkVariable tArray 300002 300026 38 1 "!" Prelude.False--abounds = T.mkVariable tArray 330001 330026 3 1 "bounds" Prelude.False--aindices = T.mkVariable tArray 360001 360039 3 0 "indices" Prelude.False--aelems = T.mkVariable tArray 390001 390005 3 1 "elems" Prelude.False--aassocs = T.mkVariable tArray 420001 420006 3 1 "assocs" Prelude.False--(+//) = T.mkVariable tArray 450003 450004 38 2 "//" Prelude.False--aaccum = T.mkVariable tArray 530001 530064 3 1 "accum" Prelude.False--aaccumArray = T.mkVariable tArray 570001 570039 3 3 "accumArray" Prelude.False--aixmap = T.mkVariable tArray 610001 610029 3 3 "ixmap" Prelude.False--a64v5v64v46fmap = T.mkVariable tArray 640005 640046 3 2 "fmap" Prelude.False--(++^=^=+^=@==) = T.mkVariable tArray 670007 670008 16 2 "==" Prelude.False--(+^!=^=^!=@<=) = T.mkVariable tArray 700007 700008 16 2 "<=" Prelude.False--a73v5v76v35showsPrec =- T.mkVariable tArray 730005 760035 3 2 "showsPrec" Prelude.False--a79v5v80v13readsPrec =- T.mkVariable tArray 790005 800013 3 1 "readsPrec" Prelude.False--a47v20v47v26old_ivs =- T.mkVariable tArray 470020 470026 3 0 "old_ivs" Prelude.True--a49v20v49v25new_is = T.mkVariable tArray 490020 490025 3 0 "new_is" Prelude.True+ (module Hat.Ix, Array, garray, aarray, harray,+ glistArray, alistArray, hlistArray, (!!), (+!), (*!),+ gbounds, abounds, hbounds, gindices, gelems, aelems,+ helems, gassocs, aassocs, hassocs, gaccumArray,+ aaccumArray, haccumArray, (!//), (+//), (*//),+ gaccum, aaccum, haccum, gixmap, aixmap, hixmap)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.Ix+import Hat.List ((!\\))+ +data Array a b = MkArray (T.R (T.Tuple2 a a))+ (T.R (T.Fun a b))+ +instance T.WrapVal (Array a b) where+ wrapVal pwrapVal+ kwrapVal@(MkArray (T.R _ z1wrapVal)+ (T.R _ z2wrapVal))+ p+ = T.R kwrapVal+ (T.mkValueApp2 p pwrapVal aMkArray z1wrapVal+ z2wrapVal)+ +garray ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Tuple2 a a)+ (T.Fun (T.List (T.Tuple2 a b)) (Array a b)))+ +harray ::+ (Ix a) =>+ T.R (T.Tuple2 a a) ->+ T.R (T.List (T.Tuple2 a b)) ->+ T.RefExp -> T.R (Array a b)+garray parray p = T.ufun2 aarray parray p harray+harray fb fivs p+ = T.ucif p+ (T.uap1 T.mkNoSrcPos p (gand T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fivs+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ (T.R (T.Tuple2 fi _) _) p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb+ fi)))))+ (T.con2 T.mkNoSrcPos p MkArray aMkArray fb+ (T.ufun1 T.mkLambda T.mkNoSrcPos p+ (\ fj p ->+ T.uccase T.mkNoSrcPos p+ (let v20v29v26v0v1 (T.R (T.Cons fv (T.R T.Nil _)) _)+ p = T.projection T.mkNoSrcPos p fv+ v20v29v26v0v1 (T.R T.Nil _) p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Array.!: undefined array element")+ p)+ v20v29v26v0v1 _ p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Array.!: multiply defined array element")+ p)+ in v20v29v26v0v1)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fivs+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ (T.R (T.Tuple2 fi fv) _) p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>) T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hguard+ (T.uap2 T.mkNoSrcPos p ((!==) T.mkNoSrcPos p)+ fi+ fj)+ p))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ fv)))))))+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Array.array: out-of-range array association")+ p))+ +glistArray ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Tuple2 a a) (T.Fun (T.List b) (Array a b)))+ +hlistArray ::+ (Ix a) =>+ T.R (T.Tuple2 a a) ->+ T.R (T.List b) -> T.RefExp -> T.R (Array a b)+glistArray plistArray p+ = T.ufun2 alistArray plistArray p hlistArray+hlistArray fb fvs p+ = T.uwrapForward p+ (harray fb+ (T.uwrapForward p+ (hzipWith+ (T.ufun2 T.mkLambda T.mkNoSrcPos p+ (\ fa fb p ->+ T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fa fb))+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p) fb)+ fvs+ p))+ p)+ +(!!) ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (Array a b) (T.Fun a b))+ +(*!) ::+ (Ix a) =>+ T.R (Array a b) -> T.RefExp -> T.R (T.Fun a b)+(%!) !! p = T.ufun1 (+!) (%!) p (*!)+(T.R (MkArray _ ff) _) *! p+ = T.projection T.mkNoSrcPos p ff+_ *! p = T.fatal p+ +gbounds ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (Array a b) (T.Tuple2 a a))+ +hbounds ::+ (Ix a) =>+ T.R (Array a b) -> T.RefExp -> T.R (T.Tuple2 a a)+gbounds pbounds p = T.ufun1 abounds pbounds p hbounds+hbounds (T.R (MkArray fb _) _) p+ = T.projection T.mkNoSrcPos p fb+hbounds _ p = T.fatal p+ +gindices ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (Array a b) (T.List a))+ +sindices ::+ (Ix a) => T.R (T.Fun (Array a b) (T.List a))+gindices pindices p = T.uconstUse pindices p sindices+sindices+ = T.uconstDef p aindices+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (grange T.mkNoSrcPos p)+ (gbounds T.mkNoSrcPos p))+ +gelems ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (Array a b) (T.List b))+ +helems ::+ (Ix a) =>+ T.R (Array a b) -> T.RefExp -> T.R (T.List b)+gelems pelems p = T.ufun1 aelems pelems p helems+helems fa p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gindices T.mkNoSrcPos p) fa)+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (T.uwrapForward p ((*!) fa p))+ fi)))+ +gassocs ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (Array a b) (T.List (T.Tuple2 a b)))+ +hassocs ::+ (Ix a) =>+ T.R (Array a b) ->+ T.RefExp -> T.R (T.List (T.Tuple2 a b))+gassocs passocs p = T.ufun1 aassocs passocs p hassocs+hassocs fa p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gindices T.mkNoSrcPos p) fa)+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi+ (T.uap1 T.mkNoSrcPos p (T.uwrapForward p ((*!) fa p))+ fi))))+ +(!//) ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (Array a b)+ (T.Fun (T.List (T.Tuple2 a b)) (Array a b)))+ +(*//) ::+ (Ix a) =>+ T.R (Array a b) ->+ T.R (T.List (T.Tuple2 a b)) ->+ T.RefExp -> T.R (Array a b)+(%//) !// p = T.ufun2 (+//) (%//) p (*//)+(fa *// fnew_ivs) p+ = T.uwrapForward p+ (harray (T.uwrapForward p (hbounds fa p))+ (T.uwrapForward p+ ((*++) (gold_ivs T.mkNoSrcPos p) fnew_ivs p))+ p)+ where gold_ivs pold_ivs p+ = T.uconstUse pold_ivs p sold_ivs+ sold_ivs+ = T.uconstDef p c53v20v54v64old_ivs+ (\ p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gindices T.mkNoSrcPos p) fa)+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>) T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hguard+ (T.uap1 T.mkNoSrcPos p+ (T.uwrapForward p (hnotElem fi p))+ (gnew_is T.mkNoSrcPos p))+ p))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi+ (T.uap1 T.mkNoSrcPos p+ (T.uwrapForward p ((*!) fa p))+ fi))))))+ gnew_is pnew_is p = T.uconstUse pnew_is p snew_is+ snew_is+ = T.uconstDef p c55v20v55v51new_is+ (\ p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fnew_ivs+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ (T.R (T.Tuple2 fi _) _) p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ fi)))+ +gaccum ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun b (T.Fun c b))+ (T.Fun (Array a b)+ (T.Fun (T.List (T.Tuple2 a c)) (Array a b))))+ +haccum ::+ (Ix a) =>+ T.R (T.Fun b (T.Fun c b)) ->+ T.RefExp ->+ T.R+ (T.Fun (Array a b)+ (T.Fun (T.List (T.Tuple2 a c)) (Array a b)))+gaccum paccum p = T.ufun1 aaccum paccum p haccum+haccum ff p+ = T.uap1 T.mkNoSrcPos p (gfoldl T.mkNoSrcPos p)+ (T.ufun2 T.mkLambda T.mkNoSrcPos p+ (\ fa (T.R (T.Tuple2 fi fv) _) p ->+ T.uwrapForward p+ ((*//) fa+ (T.fromExpList T.mkNoSrcPos p+ [T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi+ (T.uap2 T.mkNoSrcPos p ff+ (T.uap1 T.mkNoSrcPos p (T.uwrapForward p ((*!) fa p))+ fi)+ fv)])+ p)))+ +gaccumArray ::+ (Ix a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun b (T.Fun c b))+ (T.Fun b+ (T.Fun (T.Tuple2 a a)+ (T.Fun (T.List (T.Tuple2 a c)) (Array a b)))))+ +haccumArray ::+ (Ix a) =>+ T.R (T.Fun b (T.Fun c b)) ->+ T.R b ->+ T.R (T.Tuple2 a a) ->+ T.RefExp ->+ T.R (T.Fun (T.List (T.Tuple2 a c)) (Array a b))+gaccumArray paccumArray p+ = T.ufun3 aaccumArray paccumArray p haccumArray+haccumArray ff fz fb p+ = T.uap1 T.mkNoSrcPos p+ (T.uwrapForward p (haccum ff p))+ (T.uwrapForward p+ (harray fb+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p) fb)+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi fz))))+ p))+ +gixmap ::+ (Ix a, Ix b) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Tuple2 a a)+ (T.Fun (T.Fun a b) (T.Fun (Array b c) (Array a c))))+ +hixmap ::+ (Ix a, Ix b) =>+ T.R (T.Tuple2 a a) ->+ T.R (T.Fun a b) ->+ T.R (Array b c) -> T.RefExp -> T.R (Array a c)+gixmap pixmap p = T.ufun3 aixmap pixmap p hixmap+hixmap fb ff fa p+ = T.uwrapForward p+ (harray fb+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p) fb)+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fi+ (T.uap1 T.mkNoSrcPos p (T.uwrapForward p ((*!) fa p))+ (T.uap1 T.mkNoSrcPos p ff fi))))))+ p)+ +instance (Ix a) => Functor (Array a) where+ gfmap pfmap p = T.ufun2 c70v5v70v47fmap pfmap p hfmap+ where hfmap ffn (T.R (MkArray fb ff) _) p+ = T.con2 T.mkNoSrcPos p MkArray aMkArray fb+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p) ffn ff)+ hfmap _ _ p = T.fatal p+ +instance (Ix a, Eq b) => Eq (Array a b) where+ (%==) !== p = T.ufun2 (+^%=*=^%=%+==) (%==) p (*==)+ where (fa *== fa') p+ = T.uap2 T.mkNoSrcPos p ((!==) T.mkNoSrcPos p)+ (T.uwrapForward p (hassocs fa p))+ (T.uwrapForward p (hassocs fa' p))+ +instance (Ix a, Ord b) => Ord (Array a b) where+ (%<=) !<= p = T.ufun2 (+^+=*=^+=%+<=) (%<=) p (*<=)+ where (fa *<= fa') p+ = T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p)+ (T.uwrapForward p (hassocs fa p))+ (T.uwrapForward p (hassocs fa' p))+ +instance (Ix a, Show a, Show b) => Show (Array a b)+ where+ gshowsPrec pshowsPrec p+ = T.ufun2 c79v5v82v55showsPrec pshowsPrec p+ hshowsPrec+ where hshowsPrec fp fa p+ = T.uwrapForward p+ (hshowParen+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fp+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "array "))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gshows T.mkNoSrcPos p)+ (T.uwrapForward p (hbounds fa p)))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ' '))+ (T.uap1 T.mkNoSrcPos p (gshows T.mkNoSrcPos p)+ (T.uwrapForward p (hassocs fa p))))))+ p)+ +instance (Ix a, Read a, Read b) => Read (Array a b)+ where+ greadsPrec preadsPrec p+ = T.ufun1 c85v5v88v64readsPrec preadsPrec p+ hreadsPrec+ where hreadsPrec fp p+ = T.uwrapForward p+ (hreadParen+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fp+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (T.ufun1 T.mkLambda T.mkNoSrcPos p+ (\ fr p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uwrapForward p (hlex fr p))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fv86v38v86v51v1 p ->+ T.uccase T.mkNoSrcPos p+ (let v86v38v86v51v1+ (T.R+ (T.Tuple2+ (T.R+ (T.Cons (T.R 'a' _)+ (T.R+ (T.Cons+ (T.R 'r' _)+ (T.R+ (T.Cons+ (T.R 'r'+ _)+ (T.R+ (T.Cons+ (T.R+ 'a'+ _)+ (T.R+ (T.Cons+ (T.R+ 'y'+ _)+ (T.R+ T.Nil+ _))+ _))+ _))+ _))+ _))+ _)+ fs)+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (greads T.mkNoSrcPos p)+ fs)+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ (T.R (T.Tuple2 fb ft)+ _)+ p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos+ p+ (greads+ T.mkNoSrcPos+ p)+ ft)+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ (T.R+ (T.Tuple2+ fas fu)+ _)+ p ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.uwrapForward+ p+ (harray+ fb+ fas+ p))+ fu)))))+ v86v38v86v51v1 _ p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfail+ T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "pattern-match failure in do-expression")+ in v86v38v86v51v1)+ fv86v38v86v51v1))))+ p)+aMkArray+ = T.mkConstructor tArray 130018 130024 3 (2)+ "MkArray"+aaccum+ = T.mkVariable tArray 590001 590065 3 (1) "accum"+ Prelude.False+aaccumArray+ = T.mkVariable tArray 630001 630065 3 (3)+ "accumArray"+ Prelude.False+aarray+ = T.mkVariable tArray 170001 270064 3 (2) "array"+ Prelude.False+aassocs+ = T.mkVariable tArray 480001 480052 3 (1) "assocs"+ Prelude.False+abounds+ = T.mkVariable tArray 390001 390026 3 (1) "bounds"+ Prelude.False+aelems+ = T.mkVariable tArray 450001 450047 3 (1) "elems"+ Prelude.False+aindices+ = T.mkVariable tArray 420001 420039 3 (0) "indices"+ Prelude.False+aixmap+ = T.mkVariable tArray 670001 670061 3 (3) "ixmap"+ Prelude.False+alistArray+ = T.mkVariable tArray 310001 310072 3 (2) "listArray"+ Prelude.False+(+!)+ = T.mkVariable tArray 350001 350026 38 (1) "!"+ Prelude.False+(+//)+ = T.mkVariable tArray 510001 520027 38 (2) "//"+ Prelude.False+c55v20v55v51new_is+ = T.mkVariable tArray 550020 550051 3 (0) "new_is"+ Prelude.True+c53v20v54v64old_ivs+ = T.mkVariable tArray 530020 540064 3 (0) "old_ivs"+ Prelude.True+c70v5v70v47fmap+ = T.mkVariable tArray 700005 700047 3 (-1) "fmap"+ Prelude.False+(+^%=*=^%=%+==)+ = T.mkVariable tArray 730005 730036 3 (-1) "=="+ Prelude.False+(+^+=*=^+=%+<=)+ = T.mkVariable tArray 760005 760036 3 (-1) "<="+ Prelude.False+c79v5v82v55showsPrec+ = T.mkVariable tArray 790005 820055 3 (-1)+ "showsPrec"+ Prelude.False+c85v5v88v64readsPrec+ = T.mkVariable tArray 850005 880064 3 (-1)+ "readsPrec"+ Prelude.False+p = T.mkRoot+tArray = T.mkModule "Array" "Array.hs" Prelude.False
Hat/CPUTime.hs view
@@ -1,34 +1,36 @@-module Hat.CPUTime (ggetCPUTime,gcpuTimePrecision) 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.PreludeBuiltinTypes -import qualified System.CPUTime as CPUTime --ggetCPUTime :: T.RefSrcPos -> T.RefExp -> T.R (IO Integer)--ggetCPUTime pgetCPUTime p = T.uconstUse pgetCPUTime p sgetCPUTime--sgetCPUTime =- T.uconstDef T.mkRoot agetCPUTime- (\ p -> (T.fromIO T.fromInteger) p CPUTime.getCPUTime)--gcpuTimePrecision :: T.RefSrcPos -> T.RefExp -> T.R Integer--gcpuTimePrecision pcpuTimePrecision p =- T.uconstUse pcpuTimePrecision p scpuTimePrecision--scpuTimePrecision =- T.uconstDef T.mkRoot acpuTimePrecision- (\ p -> T.fromInteger p CPUTime.cpuTimePrecision)--tCPUTime = T.mkModule "CPUTime" "CPUTime.hs" Prelude.False--agetCPUTime = T.mkVariable tCPUTime 60001 70024 3 0 "getCPUTime" Prelude.False--acpuTimePrecision =- T.mkVariable tCPUTime 90001 100029 3 0 "cpuTimePrecision" Prelude.False+module Hat.CPUTime (ggetCPUTime, gcpuTimePrecision)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBuiltinTypes+import qualified System.CPUTime as CPUTime+ +ggetCPUTime ::+ T.RefSrcPos -> T.RefExp -> T.R (IO Integer)+ggetCPUTime pgetCPUTime p+ = T.uconstUse pgetCPUTime p sgetCPUTime+sgetCPUTime+ = T.uconstDef p agetCPUTime+ (\ p -> T.fromIO T.fromInteger p CPUTime.getCPUTime)+ +gcpuTimePrecision ::+ T.RefSrcPos -> T.RefExp -> T.R Integer+gcpuTimePrecision pcpuTimePrecision p+ = T.uconstUse pcpuTimePrecision p scpuTimePrecision+scpuTimePrecision+ = T.uconstDef p acpuTimePrecision+ (\ p -> T.fromInteger p CPUTime.cpuTimePrecision)+acpuTimePrecision+ = T.mkVariable tCPUTime 90001 100021 3 (0)+ "cpuTimePrecision"+ Prelude.False+agetCPUTime+ = T.mkVariable tCPUTime 60001 70021 3 (0)+ "getCPUTime"+ Prelude.False+p = T.mkRoot+tCPUTime+ = T.mkModule "CPUTime" "CPUTime.hs" Prelude.False
Hat/Char.hs view
@@ -1,20 +1,24 @@ module Hat.Char- (gisAscii,aisAscii,hisAscii,gisLatin1,aisLatin1,hisLatin1,gisControl- ,aisControl,hisControl,gisPrint,aisPrint,hisPrint,gisSpace,aisSpace,hisSpace- ,gisUpper,aisUpper,hisUpper,gisLower,aisLower,hisLower,gisAlpha,aisAlpha- ,hisAlpha,gisDigit,aisDigit,hisDigit,gisOctDigit,aisOctDigit,hisOctDigit- ,gisHexDigit,aisHexDigit,hisHexDigit,gisAlphaNum,aisAlphaNum,hisAlphaNum- ,gdigitToInt,adigitToInt,hdigitToInt,gintToDigit,aintToDigit,hintToDigit- ,gtoUpper,atoUpper,htoUpper,gtoLower,atoLower,htoLower,gord,gchr- ,greadLitChar,areadLitChar,hreadLitChar,gshowLitChar,ashowLitChar- ,hshowLitChar,glexLitChar,alexLitChar,hlexLitChar,Char(),String()) 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.PreludeBasic -+ (gisAscii, aisAscii, hisAscii, gisLatin1, aisLatin1,+ hisLatin1, gisControl, aisControl, hisControl,+ gisPrint, aisPrint, hisPrint, gisSpace, aisSpace,+ hisSpace, gisUpper, aisUpper, hisUpper, gisLower,+ aisLower, hisLower, gisAlpha, aisAlpha, hisAlpha,+ gisDigit, aisDigit, hisDigit, gisOctDigit,+ aisOctDigit, hisOctDigit, gisHexDigit, aisHexDigit,+ hisHexDigit, gisAlphaNum, aisAlphaNum, hisAlphaNum,+ gdigitToInt, adigitToInt, hdigitToInt, gintToDigit,+ aintToDigit, hintToDigit, gtoUpper, atoUpper,+ htoUpper, gtoLower, atoLower, htoLower, gord, gchr,+ greadLitChar, areadLitChar, hreadLitChar,+ gshowLitChar, ashowLitChar, hshowLitChar,+ glexLitChar, alexLitChar, hlexLitChar, Char, String)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBasic+p = T.mkRoot tChar = T.mkModule "Char" "Char.hs" Prelude.False
Hat/Complex.hs view
@@ -1,1039 +1,1096 @@ module Hat.Complex- (Complex((:+)),(+:+),grealPart,arealPart,hrealPart,gimagPart,aimagPart- ,himagPart,gconjugate,aconjugate,hconjugate,gmkPolar,amkPolar,hmkPolar,gcis- ,acis,hcis,gpolar,apolar,hpolar,gmagnitude,amagnitude,hmagnitude,gphase- ,aphase,hphase) 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 --data Complex a = (:+) !(T.R a) !(T.R a)--instance T.WrapVal ((Complex a))- where- - wrapVal pwrapVal (kwrapVal@((T.R _ z1wrapVal) :+ (T.R _ z2wrapVal))) p =- T.R kwrapVal (T.mkValueApp2 p pwrapVal (+:+) z1wrapVal z2wrapVal)- --instance Eq a => Eq ((Complex a))- where- - (!==) (%==) p =- T.ufun2 (++=%@=+=%>==) (%==) p (*==)- where- - (*==) (T.R (fy1 :+ fy2) _) (T.R (fy3 :+ fy4) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy1 fy3)- Hat.Prelude.*&&- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy2 fy4)) p)- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Read a => Read ((Complex a))- where- - greadsPrec preadsPrec p =- T.ufun1 a6v41v6v44readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uwrapForward p- (Hat.Prelude.hreadParen- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!> p) fy1- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.pa0 (:+) T.cn2 T.mkNoSrcPos p (+:+)))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.greadsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7))))- (T.fromLitString T.mkNoSrcPos p ":+") p))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.greadsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)))) p)- - --instance Show a => Show ((Complex a))- where- - gshowsPrec pshowsPrec p =- T.ufun2 a6v46v6v49showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (fy2 :+ fy3) _) p =- T.uwrapForward p- (Hat.Prelude.hshowParen- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!> p) fy1- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)) fy2)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p " :+ ")))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)) fy3)) p)- hshowsPrec _ _ p = T.fatal p- - --grealPart,gimagPart ::- RealFloat a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Complex a) a)--hrealPart :: RealFloat a => (T.R (Complex a)) -> T.RefExp -> T.R a--himagPart :: RealFloat a => (T.R (Complex a)) -> T.RefExp -> T.R a--grealPart prealPart p = T.ufun1 arealPart prealPart p hrealPart--hrealPart (T.R (fx :+ fy) _) p = T.projection T.mkNoSrcPos p fx-hrealPart _ p = T.fatal p--gimagPart pimagPart p = T.ufun1 aimagPart pimagPart p himagPart--himagPart (T.R (fx :+ fy) _) p = T.projection T.mkNoSrcPos p fy-himagPart _ p = T.fatal p--gconjugate ::- RealFloat a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Complex a) (Complex a))--hconjugate :: RealFloat a => (T.R (Complex a)) -> T.RefExp -> T.R (Complex a)--gconjugate pconjugate p = T.ufun1 aconjugate pconjugate p hconjugate--hconjugate (T.R (fx :+ fy) _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+) fx- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) fy)-hconjugate _ p = T.fatal p--gmkPolar ::- RealFloat a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun a (Complex a)))--hmkPolar :: RealFloat a => (T.R a) -> (T.R a) -> T.RefExp -> T.R (Complex a)--gmkPolar pmkPolar p = T.ufun2 amkPolar pmkPolar p hmkPolar--hmkPolar fr ftheta p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fr- (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) ftheta))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fr- (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) ftheta))--gcis :: RealFloat a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (Complex a))--hcis :: RealFloat a => (T.R a) -> T.RefExp -> T.R (Complex a)--gcis pcis p = T.ufun1 acis pcis p hcis--hcis ftheta p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) ftheta)- (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) ftheta)--gpolar ::- RealFloat a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Complex a) (T.Tuple2 a a))--hpolar :: RealFloat a => (T.R (Complex a)) -> T.RefExp -> T.R (T.Tuple2 a a)--gpolar ppolar p = T.ufun1 apolar ppolar p hpolar--hpolar fz p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (T.uwrapForward p (hmagnitude fz p))- (T.uwrapForward p (hphase fz p))--gmagnitude ::- RealFloat a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Complex a) a)--hmagnitude :: RealFloat a => (T.R (Complex a)) -> T.RefExp -> T.R a--gmagnitude pmagnitude p = T.ufun1 amagnitude pmagnitude p hmagnitude--hmagnitude (T.R (fx :+ fy) _) p =- T.uap2 T.mkNoSrcPos p (gscaleFloat T.mkNoSrcPos p) (gk T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (gscaleFloat T.mkNoSrcPos p)- (gmk T.mkNoSrcPos p) fx)- *^- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- :: T.R Integer)) p))- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (gscaleFloat T.mkNoSrcPos p)- (gmk T.mkNoSrcPos p) fy)- *^- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- :: T.R Integer)) p))))- where- - gk pk p = T.uconstUse pk p sk- - sk =- T.uconstDef p a28v11v28v43k- (\ p ->- T.uap2 T.mkNoSrcPos p (gmax T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gexponent T.mkNoSrcPos p) fx)- (T.uap1 T.mkNoSrcPos p (gexponent T.mkNoSrcPos p) fy))- - gmk pmk p = T.uconstUse pmk p smk- - smk =- T.uconstDef p a29v11v29v18mk- (\ p ->- T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) (gk T.mkNoSrcPos p))- -hmagnitude _ p = T.fatal p--gphase :: RealFloat a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Complex a) a)--hphase :: RealFloat a => (T.R (Complex a)) -> T.RefExp -> T.R a--gphase pphase p = T.ufun1 aphase pphase p hphase--hphase (z1phase@(T.R (fv32v8v32v8n :+ v32v13v32v13n) _)) p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv32v8v32v8n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h v32v13v32v13n p)- (y1phase z1phase p)- where- - h fv32v13v32v13n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv32v13v32v13n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1phase z1phase p)- where- - h p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- h p = y1phase z1phase p- - h _ p = y1phase z1phase p- -hphase z1phase p = y1phase z1phase p--y1phase (T.R (fx :+ fy) _) p =- T.uap2 T.mkNoSrcPos p (gatan2 T.mkNoSrcPos p) fy fx-y1phase _ p = T.fatal p--instance RealFloat a => Num ((Complex a))- where- - (!+) (%+) p =- T.ufun2 (+%^=#$=%^=#$+) (%+) p (*+)- where- - (*+) (T.R (fx :+ fy) _) (T.R (fx' :+ fy') _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fx fx')- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fy fy')- (*+) _ _ p = T.fatal p- - - (!-) (%-) p =- T.ufun2 (+%@=#$=%@=#$-) (%-) p (*-)- where- - (*-) (T.R (fx :+ fy) _) (T.R (fx' :+ fy') _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fx fx')- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fy fy')- (*-) _ _ p = T.fatal p- - - (!*) (%*) p =- T.ufun2 (+%>=#$=%>=#$*) (%*) p (**)- where- - (**) (T.R (fx :+ fy) _) (T.R (fx' :+ fy') _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fx fx')- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fy fy'))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fx fy')- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fy fx'))- (**) _ _ p = T.fatal p- - - gnegate pnegate p =- T.ufun1 a40v5v40v41negate pnegate p hnegate- where- - hnegate (T.R (fx :+ fy) _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) fx)- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) fy)- hnegate _ p = T.fatal p- - - gabs pabs p =- T.ufun1 a41v5v41v29abs pabs p habs- where- - habs fz p =- T.con2 T.mkNoSrcPos p (:+) (+:+) (T.uwrapForward p (hmagnitude fz p))- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))- - - gsignum psignum p =- T.ufun1 a42v5v43v56signum psignum p hsignum- where- - hsignum fv42v12v42v12n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv42v12v42v12n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1signum fv42v12v42v12n p)- where- - h p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- h p = y1signum fv42v12v42v12n p- - hsignum fv42v12v42v12n p = y1signum fv42v12v42v12n p- - y1signum (fz@(T.R (fx :+ fy) _)) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p) fx (gr T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p) fy (gr T.mkNoSrcPos p))- where- - gr pr p = T.uconstUse pr p sr- - sr =- T.uconstDef p a43v42v43v56r (\ p -> T.uwrapForward p (hmagnitude fz p))- - y1signum _ p = T.fatal p- - - gfromInteger pfromInteger p =- T.ufun1 a44v5v44v39fromInteger pfromInteger p hfromInteger- where- - hfromInteger fn p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap1 T.mkNoSrcPos p (gfromInteger T.mkNoSrcPos p) fn)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))- - --instance RealFloat a => Fractional ((Complex a))- where- - (!/) (%/) p =- T.ufun2 (+&^=#!=&^=#!/) (%/) p (*/)- where- - (*/) (T.R (fx :+ fy) _) (T.R (fx' :+ fy') _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fx (gx'' T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fy- (gy'' T.mkNoSrcPos p))) (gd T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fy (gx'' T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fx- (gy'' T.mkNoSrcPos p))) (gd T.mkNoSrcPos p))- where- - gx'' px'' p = T.uconstUse px'' p sx''- - sx'' =- T.uconstDef p a49v5v49v25x''- (\ p ->- T.uap2 T.mkNoSrcPos p (gscaleFloat T.mkNoSrcPos p)- (gk T.mkNoSrcPos p) fx')- - gy'' py'' p = T.uconstUse py'' p sy''- - sy'' =- T.uconstDef p a50v5v50v25y''- (\ p ->- T.uap2 T.mkNoSrcPos p (gscaleFloat T.mkNoSrcPos p)- (gk T.mkNoSrcPos p) fy')- - gk pk p = T.uconstUse pk p sk- - sk =- T.uconstDef p a51v5v51v42k- (\ p ->- T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (gmax T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gexponent T.mkNoSrcPos p) fx')- (T.uap1 T.mkNoSrcPos p (gexponent T.mkNoSrcPos p) fy')))- - gd pd p = T.uconstUse pd p sd- - sd =- T.uconstDef p a52v5v52v25d- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fx'- (gx'' T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fy'- (gy'' T.mkNoSrcPos p)))- - (*/) _ _ p = T.fatal p- - - gfromRational pfromRational p =- T.ufun1 a54v3v54v39fromRational pfromRational p hfromRational- where- - hfromRational fa p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap1 T.mkNoSrcPos p (gfromRational T.mkNoSrcPos p) fa)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))- - --instance RealFloat a => Floating ((Complex a))- where- - gpi ppi p = T.uconstUse ppi p spi- - spi =- T.uconstDef T.mkRoot a57v5v57v29pi- (\ p ->- T.con2 T.mkNoSrcPos p (:+) (+:+) (gpi T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)))- - gexp pexp p =- T.ufun1 a58v5v59v40exp pexp p hexp- where- - hexp (T.R (fx :+ fy) _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gexpx T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fy))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gexpx T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fy))- where- - gexpx pexpx p = T.uconstUse pexpx p sexpx- - sexpx =- T.uconstDef p a59v29v59v40expx- (\ p -> T.uap1 T.mkNoSrcPos p (gexp T.mkNoSrcPos p) fx)- - hexp _ p = T.fatal p- - - glog plog p =- T.ufun1 a60v5v60v50log plog p hlog- where- - hlog fz p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)- (T.uwrapForward p (hmagnitude fz p))) (T.uwrapForward p (hphase fz p))- - - gsqrt psqrt p =- T.ufun1 a62v5v66v67sqrt psqrt p hsqrt- where- - hsqrt fv62v10v62v10n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv62v10v62v10n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1sqrt fv62v10v62v10n p)- where- - h p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- h p = y1sqrt fv62v10v62v10n p- - hsqrt fv62v10v62v10n p = y1sqrt fv62v10v62v10n p- - y1sqrt (fz@(T.R (fx :+ fy) _)) p =- T.con2 T.mkNoSrcPos p (:+) (+:+) (gu T.mkNoSrcPos p)- (T.ucif p- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !< p) fy- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)))- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) (gv T.mkNoSrcPos p))- (gv T.mkNoSrcPos p))- where- - gu pu p = T.uconstUse pu p su- - gv pu p = T.uconstUse pu p sv- - j64v29v64v33u =- case- T.ucif p- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !< p) fx- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)))- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gv' T.mkNoSrcPos p)- (gu' T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gu' T.mkNoSrcPos p)- (gv' T.mkNoSrcPos p)) of- T.R (T.Tuple2 fu fv) ku -> (ku,fu,fv)- _ -> T.fatal p- - su =- T.uconstDef p a64v30v64v30u- (\ _ -> case j64v29v64v33u of (ku,fu,fv) -> fu)- - sv =- T.uconstDef p a64v32v64v32v- (\ _ -> case j64v29v64v33u of (ku,fu,fv) -> fv)- - gv' pv' p = T.uconstUse pv' p sv'- - sv' =- T.uconstDef p a65v29v65v49v'- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.uap1 T.mkNoSrcPos p (gabs T.mkNoSrcPos p) fy)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gu' T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))))- - gu' pu' p = T.uconstUse pu' p su'- - su' =- T.uconstDef p a66v29v66v67u'- (\ p ->- T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uwrapForward p (hmagnitude fz p))- (T.uap1 T.mkNoSrcPos p (gabs T.mkNoSrcPos p) fx))- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))))- - y1sqrt _ p = T.fatal p- - - gsin psin p =- T.ufun1 a68v5v68v54sin psin p hsin- where- - hsin (T.R (fx :+ fy) _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fx)- (T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fy))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fx)- (T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fy))- hsin _ p = T.fatal p- - - gcos pcos p =- T.ufun1 a69v5v69v57cos pcos p hcos- where- - hcos (T.R (fx :+ fy) _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fx)- (T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fy))- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fx)- (T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fy)))- hcos _ p = T.fatal p- - - gtan ptan p =- T.ufun1 a70v5v74v42tan ptan p htan- where- - htan (T.R (fx :+ fy) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gsinx T.mkNoSrcPos p)- (gcoshy T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gcosx T.mkNoSrcPos p)- (gsinhy T.mkNoSrcPos p)))- (T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gcosx T.mkNoSrcPos p)- (gcoshy T.mkNoSrcPos p))- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gsinx T.mkNoSrcPos p)- (gsinhy T.mkNoSrcPos p))))- where- - gsinx psinx p = T.uconstUse psinx p ssinx- - ssinx =- T.uconstDef p a71v29v71v41sinx- (\ p -> T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fx)- - gcosx pcosx p = T.uconstUse pcosx p scosx- - scosx =- T.uconstDef p a72v29v72v41cosx- (\ p -> T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fx)- - gsinhy psinhy p = T.uconstUse psinhy p ssinhy- - ssinhy =- T.uconstDef p a73v29v73v42sinhy- (\ p -> T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fy)- - gcoshy pcoshy p = T.uconstUse pcoshy p scoshy- - scoshy =- T.uconstDef p a74v29v74v42coshy- (\ p -> T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fy)- - htan _ p = T.fatal p- - - gsinh psinh p =- T.ufun1 a76v5v76v55sinh psinh p hsinh- where- - hsinh (T.R (fx :+ fy) _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fy)- (T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fx))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fy)- (T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fx))- hsinh _ p = T.fatal p- - - gcosh pcosh p =- T.ufun1 a77v5v77v54cosh pcosh p hcosh- where- - hcosh (T.R (fx :+ fy) _) p =- T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fy)- (T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fx))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fy)- (T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fx))- hcosh _ p = T.fatal p- - - gtanh ptanh p =- T.ufun1 a78v5v82v42tanh ptanh p htanh- where- - htanh (T.R (fx :+ fy) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gcosy T.mkNoSrcPos p)- (gsinhx T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gsiny T.mkNoSrcPos p)- (gcoshx T.mkNoSrcPos p)))- (T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gcosy T.mkNoSrcPos p)- (gcoshx T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) (gsiny T.mkNoSrcPos p)- (gsinhx T.mkNoSrcPos p)))- where- - gsiny psiny p = T.uconstUse psiny p ssiny- - ssiny =- T.uconstDef p a79v29v79v41siny- (\ p -> T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fy)- - gcosy pcosy p = T.uconstUse pcosy p scosy- - scosy =- T.uconstDef p a80v29v80v41cosy- (\ p -> T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fy)- - gsinhx psinhx p = T.uconstUse psinhx p ssinhx- - ssinhx =- T.uconstDef p a81v29v81v42sinhx- (\ p -> T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fx)- - gcoshx pcoshx p = T.uconstUse pcoshx p scoshx- - scoshx =- T.uconstDef p a82v29v82v42coshx- (\ p -> T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fx)- - htanh _ p = T.fatal p- - - gasin pasin p =- T.ufun1 a84v5v85v70asin pasin p hasin- where- - hasin (fz@(T.R (fx :+ fy) _)) p =- T.con2 T.mkNoSrcPos p (:+) (+:+) (gy' T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) (gx' T.mkNoSrcPos p))- where- - gx' px' p = T.uconstUse px' p sx'- - gy' px' p = T.uconstUse px' p sy'- - j85v31v85v36x' =- case- T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) fy) fx)- (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fz fz)))) of- T.R (fx' :+ fy') kx' -> (kx',fx',fy')- _ -> T.fatal p- - sx' =- T.uconstDef p a85v31v85v32x'- (\ _ -> case j85v31v85v36x' of (kx',fx',fy') -> fx')- - sy' =- T.uconstDef p a85v35v85v36y'- (\ _ -> case j85v31v85v36x' of (kx',fx',fy') -> fy')- - hasin _ p = T.fatal p- - - gacos pacos p =- T.ufun1 a86v5v88v54acos pacos p hacos- where- - hacos (fz@(T.R (fx :+ fy) _)) p =- T.con2 T.mkNoSrcPos p (:+) (+:+) (gy'' T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) (gx'' T.mkNoSrcPos p))- where- - gx'' px'' p = T.uconstUse px'' p sx''- - gy'' px'' p = T.uconstUse px'' p sy''- - j87v30v87v37x'' =- case- T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fz- (T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p)- (gy' T.mkNoSrcPos p)) (gx' T.mkNoSrcPos p))) of- T.R (fx'' :+ fy'') kx'' -> (kx'',fx'',fy'')- _ -> T.fatal p- - sx'' =- T.uconstDef p a87v30v87v32x''- (\ _ -> case j87v30v87v37x'' of (kx'',fx'',fy'') -> fx'')- - sy'' =- T.uconstDef p a87v35v87v37y''- (\ _ -> case j87v30v87v37x'' of (kx'',fx'',fy'') -> fy'')- - gx' px' p = T.uconstUse px' p sx'- - gy' px' p = T.uconstUse px' p sy'- - j88v30v88v35x' =- case- T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fz fz)) of- T.R (fx' :+ fy') kx' -> (kx',fx',fy')- _ -> T.fatal p- - sx' =- T.uconstDef p a88v30v88v31x'- (\ _ -> case j88v30v88v35x' of (kx',fx',fy') -> fx')- - sy' =- T.uconstDef p a88v34v88v35y'- (\ _ -> case j88v30v88v35x' of (kx',fx',fy') -> fy')- - hacos _ p = T.fatal p- - - gatan patan p =- T.ufun1 a89v5v90v68atan patan p hatan- where- - hatan (fz@(T.R (fx :+ fy) _)) p =- T.con2 T.mkNoSrcPos p (:+) (+:+) (gy' T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) (gx' T.mkNoSrcPos p))- where- - gx' px' p = T.uconstUse px' p sx'- - gy' px' p = T.uconstUse px' p sy'- - j90v30v90v35x' =- case- T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.con2 T.mkNoSrcPos p (:+) (+:+)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)) fy) fx)- (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fz fz)))) of- T.R (fx' :+ fy') kx' -> (kx',fx',fy')- _ -> T.fatal p- - sx' =- T.uconstDef p a90v30v90v31x'- (\ _ -> case j90v30v90v35x' of (kx',fx',fy') -> fx')- - sy' =- T.uconstDef p a90v34v90v35y'- (\ _ -> case j90v30v90v35x' of (kx',fx',fy') -> fy')- - hatan _ p = T.fatal p- - - gasinh pasinh p =- T.ufun1 a92v5v92v42asinh pasinh p hasinh- where- - hasinh fz p =- T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fz- (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fz fz))))- - - gacosh pacosh p =- T.ufun1 a93v5v93v55acosh pacosh p hacosh- where- - hacosh fz p =- T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fz- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fz- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)))- (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fz- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fz- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)))))))- - - gatanh patanh p =- T.ufun1 a94v5v94v46atanh patanh p hatanh- where- - hatanh fz p =- T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)) fz)- (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) fz fz))))- - --tComplex = T.mkModule "Complex" "Complex.hs" Prelude.False--(+:+) = T.mkConstructor tComplex 60021 60022 24 2 ":+"--arealPart = T.mkVariable tComplex 100001 100021 3 1 "realPart" Prelude.False--aimagPart = T.mkVariable tComplex 110001 110021 3 1 "imagPart" Prelude.False--aconjugate = T.mkVariable tComplex 140001 140028 3 1 "conjugate" Prelude.False--amkPolar = T.mkVariable tComplex 170001 170050 3 2 "mkPolar" Prelude.False--acis = T.mkVariable tComplex 200001 200036 3 1 "cis" Prelude.False--apolar = T.mkVariable tComplex 230001 230034 3 1 "polar" Prelude.False--amagnitude = T.mkVariable tComplex 260001 290018 3 1 "magnitude" Prelude.False--aphase = T.mkVariable tComplex 320001 330026 3 1 "phase" Prelude.False--(++=%@=+=%>==) = T.mkVariable tComplex 60038 60039 3 2 "==" Prelude.False--a6v41v6v44readsPrec =- T.mkVariable tComplex 60041 60044 3 1 "readsPrec" Prelude.False--a6v46v6v49showsPrec =- T.mkVariable tComplex 60046 60049 3 2 "showsPrec" Prelude.False--(+%^=#$=%^=#$+) = T.mkVariable tComplex 370012 370012 26 2 "+" Prelude.False--(+%@=#$=%@=#$-) = T.mkVariable tComplex 380012 380012 26 2 "-" Prelude.False--(+%>=#$=%>=#$*) = T.mkVariable tComplex 390012 390012 30 2 "*" Prelude.False--a40v5v40v41negate =- T.mkVariable tComplex 400005 400041 3 1 "negate" Prelude.False--a41v5v41v29abs = T.mkVariable tComplex 410005 410029 3 1 "abs" Prelude.False--a42v5v43v56signum =- T.mkVariable tComplex 420005 430056 3 1 "signum" Prelude.False--a44v5v44v39fromInteger =- T.mkVariable tComplex 440005 440039 3 1 "fromInteger" Prelude.False--(+&^=#!=&^=#!/) = T.mkVariable tComplex 470010 470010 30 2 "/" Prelude.False--a54v3v54v39fromRational =- T.mkVariable tComplex 540003 540039 3 1 "fromRational" Prelude.False--a57v5v57v29pi = T.mkVariable tComplex 570005 570029 3 0 "pi" Prelude.False--a58v5v59v40exp = T.mkVariable tComplex 580005 590040 3 1 "exp" Prelude.False--a60v5v60v50log = T.mkVariable tComplex 600005 600050 3 1 "log" Prelude.False--a62v5v66v67sqrt = T.mkVariable tComplex 620005 660067 3 1 "sqrt" Prelude.False--a68v5v68v54sin = T.mkVariable tComplex 680005 680054 3 1 "sin" Prelude.False--a69v5v69v57cos = T.mkVariable tComplex 690005 690057 3 1 "cos" Prelude.False--a70v5v74v42tan = T.mkVariable tComplex 700005 740042 3 1 "tan" Prelude.False--a76v5v76v55sinh = T.mkVariable tComplex 760005 760055 3 1 "sinh" Prelude.False--a77v5v77v54cosh = T.mkVariable tComplex 770005 770054 3 1 "cosh" Prelude.False--a78v5v82v42tanh = T.mkVariable tComplex 780005 820042 3 1 "tanh" Prelude.False--a84v5v85v70asin = T.mkVariable tComplex 840005 850070 3 1 "asin" Prelude.False--a86v5v88v54acos = T.mkVariable tComplex 860005 880054 3 1 "acos" Prelude.False--a89v5v90v68atan = T.mkVariable tComplex 890005 900068 3 1 "atan" Prelude.False--a92v5v92v42asinh = T.mkVariable tComplex 920005 920042 3 1 "asinh" Prelude.False--a93v5v93v55acosh = T.mkVariable tComplex 930005 930055 3 1 "acosh" Prelude.False--a94v5v94v46atanh = T.mkVariable tComplex 940005 940046 3 1 "atanh" Prelude.False--a28v11v28v43k = T.mkVariable tComplex 280011 280043 3 0 "k" Prelude.True--a29v11v29v18mk = T.mkVariable tComplex 290011 290018 3 0 "mk" Prelude.True--a43v42v43v56r = T.mkVariable tComplex 430042 430056 3 0 "r" Prelude.True--a49v5v49v25x'' = T.mkVariable tComplex 490005 490025 3 0 "x''" Prelude.True--a50v5v50v25y'' = T.mkVariable tComplex 500005 500025 3 0 "y''" Prelude.True--a51v5v51v42k = T.mkVariable tComplex 510005 510042 3 0 "k" Prelude.True--a52v5v52v25d = T.mkVariable tComplex 520005 520025 3 0 "d" Prelude.True--a59v29v59v40expx = T.mkVariable tComplex 590029 590040 3 0 "expx" Prelude.True--a64v30v64v30u = T.mkVariable tComplex 640030 640030 3 0 "u" Prelude.True--a64v32v64v32v = T.mkVariable tComplex 640032 640032 3 0 "v" Prelude.True--a65v29v65v49v' = T.mkVariable tComplex 650029 650049 3 0 "v'" Prelude.True--a66v29v66v67u' = T.mkVariable tComplex 660029 660067 3 0 "u'" Prelude.True--a71v29v71v41sinx = T.mkVariable tComplex 710029 710041 3 0 "sinx" Prelude.True--a72v29v72v41cosx = T.mkVariable tComplex 720029 720041 3 0 "cosx" Prelude.True--a73v29v73v42sinhy = T.mkVariable tComplex 730029 730042 3 0 "sinhy" Prelude.True--a74v29v74v42coshy = T.mkVariable tComplex 740029 740042 3 0 "coshy" Prelude.True--a79v29v79v41siny = T.mkVariable tComplex 790029 790041 3 0 "siny" Prelude.True--a80v29v80v41cosy = T.mkVariable tComplex 800029 800041 3 0 "cosy" Prelude.True--a81v29v81v42sinhx = T.mkVariable tComplex 810029 810042 3 0 "sinhx" Prelude.True--a82v29v82v42coshx = T.mkVariable tComplex 820029 820042 3 0 "coshx" Prelude.True--a85v31v85v32x' = T.mkVariable tComplex 850031 850032 3 0 "x'" Prelude.True--a85v35v85v36y' = T.mkVariable tComplex 850035 850036 3 0 "y'" Prelude.True--a87v30v87v32x'' = T.mkVariable tComplex 870030 870032 3 0 "x''" Prelude.True--a87v35v87v37y'' = T.mkVariable tComplex 870035 870037 3 0 "y''" Prelude.True--a88v30v88v31x' = T.mkVariable tComplex 880030 880031 3 0 "x'" Prelude.True--a88v34v88v35y' = T.mkVariable tComplex 880034 880035 3 0 "y'" Prelude.True--a90v30v90v31x' = T.mkVariable tComplex 900030 900031 3 0 "x'" Prelude.True--a90v34v90v35y' = T.mkVariable tComplex 900034 900035 3 0 "y'" Prelude.True+ (Complex((:+)), (+:+), grealPart, arealPart,+ hrealPart, gimagPart, aimagPart, himagPart,+ gconjugate, aconjugate, hconjugate, gmkPolar,+ amkPolar, hmkPolar, gcis, acis, hcis, gpolar, apolar,+ hpolar, gmagnitude, amagnitude, hmagnitude, gphase,+ aphase, hphase)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+ +data Complex a = !(T.R a) :+ !(T.R a)+ +instance T.WrapVal (Complex a) where+ wrapVal pwrapVal+ kwrapVal@((:+) (T.R _ z1wrapVal) (T.R _ z2wrapVal)) p+ = T.R kwrapVal+ (T.mkValueApp2 p pwrapVal (+:+) z1wrapVal z2wrapVal)+ +instance (Eq a) => Eq (Complex a) where+ (%==) !== p = T.ufun2 (++=%@=+=%>==) (%==) p (*==)+ where (T.R ((:+) fy1 fy2) _ *== T.R ((:+) fy3 fy4) _)+ p+ = T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy1+ fy3)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy2+ fy4)+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue)+ p))+ p)+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance (Read a) => Read (Complex a) where+ greadsPrec preadsPrec p+ = T.ufun1 c6v41v6v44readsPrec preadsPrec p hreadsPrec+ where hreadsPrec fy1 p+ = T.uwrapForward p+ (hreadParen+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fy1+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.pa0 (:+) T.cn2 T.mkNoSrcPos p (+:+)))+ (T.uap1 T.mkNoSrcPos p+ (greadsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (7)))))+ (T.fromLitString T.mkNoSrcPos p ":+")+ p))+ (T.uap1 T.mkNoSrcPos p (greadsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7)))))+ p)+ +instance (Show a) => Show (Complex a) where+ gshowsPrec pshowsPrec p+ = T.ufun2 c6v46v6v49showsPrec pshowsPrec p hshowsPrec+ where hshowsPrec fy1 (T.R ((:+) fy2 fy3) _) p+ = T.uwrapForward p+ (hshowParen+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fy1+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (7)))+ fy2)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p " :+ ")))+ (T.uap2 T.mkNoSrcPos p (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7)))+ fy3))+ p)+ hshowsPrec _ _ p = T.fatal p+ +grealPart, gimagPart ::+ (RealFloat a) =>+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Complex a) a)+ +hrealPart ::+ (RealFloat a) => T.R (Complex a) -> T.RefExp -> T.R a+ +himagPart ::+ (RealFloat a) => T.R (Complex a) -> T.RefExp -> T.R a+grealPart prealPart p+ = T.ufun1 arealPart prealPart p hrealPart+hrealPart (T.R ((:+) fx fy) _) p+ = T.projection T.mkNoSrcPos p fx+hrealPart _ p = T.fatal p+gimagPart pimagPart p+ = T.ufun1 aimagPart pimagPart p himagPart+himagPart (T.R ((:+) fx fy) _) p+ = T.projection T.mkNoSrcPos p fy+himagPart _ p = T.fatal p+ +gconjugate ::+ (RealFloat a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (Complex a) (Complex a))+ +hconjugate ::+ (RealFloat a) =>+ T.R (Complex a) -> T.RefExp -> T.R (Complex a)+gconjugate pconjugate p+ = T.ufun1 aconjugate pconjugate p hconjugate+hconjugate (T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+) fx+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ fy)+hconjugate _ p = T.fatal p+ +gmkPolar ::+ (RealFloat a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun a (T.Fun a (Complex a)))+ +hmkPolar ::+ (RealFloat a) =>+ T.R a -> T.R a -> T.RefExp -> T.R (Complex a)+gmkPolar pmkPolar p+ = T.ufun2 amkPolar pmkPolar p hmkPolar+hmkPolar fr ftheta p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fr+ (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) ftheta))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fr+ (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) ftheta))+ +gcis ::+ (RealFloat a) =>+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (Complex a))+ +hcis ::+ (RealFloat a) => T.R a -> T.RefExp -> T.R (Complex a)+gcis pcis p = T.ufun1 acis pcis p hcis+hcis ftheta p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) ftheta)+ (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) ftheta)+ +gpolar ::+ (RealFloat a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (Complex a) (T.Tuple2 a a))+ +hpolar ::+ (RealFloat a) =>+ T.R (Complex a) -> T.RefExp -> T.R (T.Tuple2 a a)+gpolar ppolar p = T.ufun1 apolar ppolar p hpolar+hpolar fz p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hmagnitude fz p))+ (T.uwrapForward p (hphase fz p))+ +gmagnitude ::+ (RealFloat a) =>+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Complex a) a)+ +hmagnitude ::+ (RealFloat a) => T.R (Complex a) -> T.RefExp -> T.R a+gmagnitude pmagnitude p+ = T.ufun1 amagnitude pmagnitude p hmagnitude+hmagnitude (T.R ((:+) fx fy) _) p+ = T.uap2 T.mkNoSrcPos p (gscaleFloat T.mkNoSrcPos p)+ (gk T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uwrapForward p+ ((*^)+ (T.uap2 T.mkNoSrcPos p (gscaleFloat T.mkNoSrcPos p)+ (gmk T.mkNoSrcPos p)+ fx)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ :: T.R Integer)+ p))+ (T.uwrapForward p+ ((*^)+ (T.uap2 T.mkNoSrcPos p (gscaleFloat T.mkNoSrcPos p)+ (gmk T.mkNoSrcPos p)+ fy)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ :: T.R Integer)+ p))))+ where gk pk p = T.uconstUse pk p sk+ sk+ = T.uconstDef p c28v11v28v44k+ (\ p ->+ T.uap2 T.mkNoSrcPos p (gmax T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gexponent T.mkNoSrcPos p) fx)+ (T.uap1 T.mkNoSrcPos p (gexponent T.mkNoSrcPos p)+ fy))+ gmk pmk p = T.uconstUse pmk p smk+ smk+ = T.uconstDef p c29v11v29v18mk+ (\ p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ (gk T.mkNoSrcPos p))+hmagnitude _ p = T.fatal p+ +gphase ::+ (RealFloat a) =>+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Complex a) a)+ +hphase ::+ (RealFloat a) => T.R (Complex a) -> T.RefExp -> T.R a+gphase pphase p = T.ufun1 aphase pphase p hphase+hphase+ z1phase@(T.R ((:+) fv32v8v32v8n v32v13v32v13n) _) p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv32v8v32v8n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h32v1v32v18n v32v13v32v13n p)+ (y1phase z1phase p)+ where h32v1v32v18n fv32v13v32v13n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv32v13v32v13n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h32v1v32v18n p)+ (y1phase z1phase p)+ where h32v1v32v18n p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ h32v1v32v18n p = y1phase z1phase p+ h32v1v32v18n _ p = y1phase z1phase p+hphase z1phase p = y1phase z1phase p+y1phase (T.R ((:+) fx fy) _) p+ = T.uap2 T.mkNoSrcPos p (gatan2 T.mkNoSrcPos p) fy fx+y1phase _ p = T.fatal p+ +instance (RealFloat a) => Num (Complex a) where+ (%+) !+ p = T.ufun2 (+%^=*=%^=&#+) (%+) p (*+)+ where ((T.R ((:+) fx fy) _) *++ (T.R ((:+) fx' fy') _))+ p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p) fx fx')+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p) fy fy')+ (_ *+ _) p = T.fatal p+ (%-) !- p = T.ufun2 (+%@=*=%@=&#-) (%-) p (*-)+ where ((T.R ((:+) fx fy) _) *-+ (T.R ((:+) fx' fy') _))+ p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fx fx')+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fy fy')+ (_ *- _) p = T.fatal p+ (%*) !* p = T.ufun2 (+%>=*=%>=*#*) (%*) p (**)+ where ((T.R ((:+) fx fy) _) **+ (T.R ((:+) fx' fy') _))+ p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fx fx')+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fy fy'))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fx fy')+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fy fx'))+ (_ ** _) p = T.fatal p+ gnegate pnegate p+ = T.ufun1 c40v5v40v41negate pnegate p hnegate+ where hnegate (T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) fx)+ (T.uap1 T.mkNoSrcPos p (gnegate T.mkNoSrcPos p) fy)+ hnegate _ p = T.fatal p+ gabs pabs p = T.ufun1 c41v5v41v29abs pabs p habs+ where habs fz p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uwrapForward p (hmagnitude fz p))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0)))+ gsignum psignum p+ = T.ufun1 c42v5v44v0signum psignum p hsignum+ where hsignum fv42v12v42v12n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv42v12v42v12n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h42v5v42v17n p)+ (y1signum fv42v12v42v12n p)+ where h42v5v42v17n p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ h42v5v42v17n p = y1signum fv42v12v42v12n p+ hsignum fv42v12v42v12n p = y1signum fv42v12v42v12n p+ y1signum fz@(T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p) fx+ (gr T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p) fy+ (gr T.mkNoSrcPos p))+ where gr pr p = T.uconstUse pr p sr+ sr+ = T.uconstDef p c43v42v43v56r+ (\ p -> T.uwrapForward p (hmagnitude fz p))+ y1signum _ p = T.fatal p+ gfromInteger pfromInteger p+ = T.ufun1 c44v5v44v39fromInteger pfromInteger p+ hfromInteger+ where hfromInteger fn p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap1 T.mkNoSrcPos p (gfromInteger T.mkNoSrcPos p)+ fn)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0)))+ +instance (RealFloat a) => Fractional (Complex a)+ where+ (%/) !/ p = T.ufun2 (+&^=%=&@=>/) (%/) p (*/)+ where ((T.R ((:+) fx fy) _) */+ (T.R ((:+) fx' fy') _))+ p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fx+ (gx'' T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fy+ (gy'' T.mkNoSrcPos p)))+ (gd T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fy+ (gx'' T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fx+ (gy'' T.mkNoSrcPos p)))+ (gd T.mkNoSrcPos p))+ where gx'' px'' p = T.uconstUse px'' p sx''+ sx''+ = T.uconstDef p c49v5v49v25x''+ (\ p ->+ T.uap2 T.mkNoSrcPos p+ (gscaleFloat T.mkNoSrcPos p)+ (gk T.mkNoSrcPos p)+ fx')+ gy'' py'' p = T.uconstUse py'' p sy''+ sy''+ = T.uconstDef p c50v5v50v25y''+ (\ p ->+ T.uap2 T.mkNoSrcPos p+ (gscaleFloat T.mkNoSrcPos p)+ (gk T.mkNoSrcPos p)+ fy')+ gk pk p = T.uconstUse pk p sk+ sk+ = T.uconstDef p c51v5v51v43k+ (\ p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gmax T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gexponent T.mkNoSrcPos p)+ fx')+ (T.uap1 T.mkNoSrcPos p+ (gexponent T.mkNoSrcPos p)+ fy')))+ gd pd p = T.uconstUse pd p sd+ sd+ = T.uconstDef p c52v5v52v25d+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ fx'+ (gx'' T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ fy'+ (gy'' T.mkNoSrcPos p)))+ (_ */ _) p = T.fatal p+ gfromRational pfromRational p+ = T.ufun1 c54v3v54v39fromRational pfromRational p+ hfromRational+ where hfromRational fa p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap1 T.mkNoSrcPos p (gfromRational T.mkNoSrcPos p)+ fa)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0)))+ +instance (RealFloat a) => Floating (Complex a) where+ gpi ppi p = T.uconstUse ppi p spi+ spi+ = T.uconstDef p c57v5v57v29pi+ (\ p ->+ T.con2 T.mkNoSrcPos p (:+) (+:+) (gpi T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ gexp pexp p = T.ufun1 c58v5v59v27exp pexp p hexp+ where hexp (T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gexpx T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fy))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gexpx T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fy))+ where gexpx pexpx p = T.uconstUse pexpx p sexpx+ sexpx+ = T.uconstDef p c59v29v59v40expx+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gexp T.mkNoSrcPos p) fx)+ hexp _ p = T.fatal p+ glog plog p = T.ufun1 c60v5v60v50log plog p hlog+ where hlog fz p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)+ (T.uwrapForward p (hmagnitude fz p)))+ (T.uwrapForward p (hphase fz p))+ gsqrt psqrt p = T.ufun1 c62v5v68v0sqrt psqrt p hsqrt+ where hsqrt fv62v10v62v10n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv62v10v62v10n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h62v5v62v23n p)+ (y1sqrt fv62v10v62v10n p)+ where h62v5v62v23n p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ h62v5v62v23n p = y1sqrt fv62v10v62v10n p+ hsqrt fv62v10v62v10n p = y1sqrt fv62v10v62v10n p+ y1sqrt fz@(T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (gu T.mkNoSrcPos p)+ (T.ucif p+ (T.uap2 T.mkNoSrcPos p ((!<) T.mkNoSrcPos p) fy+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ (gv T.mkNoSrcPos p))+ (gv T.mkNoSrcPos p))+ where gu pu p = T.uconstUse pu p su+ gv pv p = T.uconstUse pv p sv+ su+ = T.uconstDef p c64v29v64v70u+ (\ _ ->+ case j64v29v64v70u of+ (ku, fu, fv) -> fu)+ sv+ = T.uconstDef p c64v29v64v70v+ (\ _ ->+ case j64v29v64v70u of+ (ku, fu, fv) -> fv)+ j64v29v64v70u+ = case+ T.ucif p+ (T.uap2 T.mkNoSrcPos p ((!<) T.mkNoSrcPos p) fx+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gv' T.mkNoSrcPos p)+ (gu' T.mkNoSrcPos p))+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gu' T.mkNoSrcPos p)+ (gv' T.mkNoSrcPos p))+ of+ T.R (T.Tuple2 fu fv) ku -> (ku, fu, fv)+ _ -> T.fatal p+ gv' pv' p = T.uconstUse pv' p sv'+ sv'+ = T.uconstDef p c65v29v65v50v'+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gabs T.mkNoSrcPos p)+ fy)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gu' T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (2)))))+ gu' pu' p = T.uconstUse pu' p su'+ su'+ = T.uconstDef p c66v29v66v68u'+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uwrapForward p (hmagnitude fz p))+ (T.uap1 T.mkNoSrcPos p+ (gabs T.mkNoSrcPos p)+ fx))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (2)))))+ y1sqrt _ p = T.fatal p+ gsin psin p = T.ufun1 c68v5v68v54sin psin p hsin+ where hsin (T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fx)+ (T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fy))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fx)+ (T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fy))+ hsin _ p = T.fatal p+ gcos pcos p = T.ufun1 c69v5v69v58cos pcos p hcos+ where hcos (T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fx)+ (T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fy))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fx)+ (T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fy)))+ hcos _ p = T.fatal p+ gtan ptan p = T.ufun1 c70v5v71v27tan ptan p htan+ where htan (T.R ((:+) fx fy) _) p+ = T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gsinx T.mkNoSrcPos p)+ (gcoshy T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gcosx T.mkNoSrcPos p)+ (gsinhy T.mkNoSrcPos p)))+ (T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gcosx T.mkNoSrcPos p)+ (gcoshy T.mkNoSrcPos p))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gsinx T.mkNoSrcPos p)+ (gsinhy T.mkNoSrcPos p))))+ where gsinx psinx p = T.uconstUse psinx p ssinx+ ssinx+ = T.uconstDef p c71v29v71v41sinx+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fx)+ gcosx pcosx p = T.uconstUse pcosx p scosx+ scosx+ = T.uconstDef p c72v29v72v41cosx+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fx)+ gsinhy psinhy p = T.uconstUse psinhy p ssinhy+ ssinhy+ = T.uconstDef p c73v29v73v42sinhy+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p)+ fy)+ gcoshy pcoshy p = T.uconstUse pcoshy p scoshy+ scoshy+ = T.uconstDef p c74v29v74v42coshy+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p)+ fy)+ htan _ p = T.fatal p+ gsinh psinh p = T.ufun1 c76v5v76v55sinh psinh p hsinh+ where hsinh (T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fy)+ (T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fx))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fy)+ (T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fx))+ hsinh _ p = T.fatal p+ gcosh pcosh p = T.ufun1 c77v5v77v54cosh pcosh p hcosh+ where hcosh (T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fy)+ (T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p) fx))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fy)+ (T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p) fx))+ hcosh _ p = T.fatal p+ gtanh ptanh p = T.ufun1 c78v5v79v27tanh ptanh p htanh+ where htanh (T.R ((:+) fx fy) _) p+ = T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gcosy T.mkNoSrcPos p)+ (gsinhx T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gsiny T.mkNoSrcPos p)+ (gcoshx T.mkNoSrcPos p)))+ (T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gcosy T.mkNoSrcPos p)+ (gcoshx T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (gsiny T.mkNoSrcPos p)+ (gsinhx T.mkNoSrcPos p)))+ where gsiny psiny p = T.uconstUse psiny p ssiny+ ssiny+ = T.uconstDef p c79v29v79v41siny+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gsin T.mkNoSrcPos p) fy)+ gcosy pcosy p = T.uconstUse pcosy p scosy+ scosy+ = T.uconstDef p c80v29v80v41cosy+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gcos T.mkNoSrcPos p) fy)+ gsinhx psinhx p = T.uconstUse psinhx p ssinhx+ ssinhx+ = T.uconstDef p c81v29v81v42sinhx+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gsinh T.mkNoSrcPos p)+ fx)+ gcoshx pcoshx p = T.uconstUse pcoshx p scoshx+ scoshx+ = T.uconstDef p c82v29v82v42coshx+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gcosh T.mkNoSrcPos p)+ fx)+ htanh _ p = T.fatal p+ gasin pasin p = T.ufun1 c84v5v85v27asin pasin p hasin+ where hasin fz@(T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (gy' T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ (gx' T.mkNoSrcPos p))+ where gx' px' p = T.uconstUse px' p sx'+ gy' py' p = T.uconstUse py' p sy'+ sx'+ = T.uconstDef p c85v30v85v72x'+ (\ _ ->+ case j85v30v85v72x' of+ (kx', fx', fy') -> fx')+ sy'+ = T.uconstDef p c85v30v85v72y'+ (\ _ ->+ case j85v30v85v72x' of+ (kx', fx', fy') -> fy')+ j85v30v85v72x'+ = case+ T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos+ p)+ fy)+ fx)+ (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!-) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1)))+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ fz+ fz))))+ of+ (T.R ((:+) fx' fy') kx') -> (kx', fx', fy')+ _ -> T.fatal p+ hasin _ p = T.fatal p+ gacos pacos p = T.ufun1 c86v5v87v27acos pacos p hacos+ where hacos fz@(T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (gy'' T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ (gx'' T.mkNoSrcPos p))+ where gx'' px'' p = T.uconstUse px'' p sx''+ gy'' py'' p = T.uconstUse py'' p sy''+ sx''+ = T.uconstDef p c87v29v87v62x''+ (\ _ ->+ case j87v29v87v62x'' of+ (kx'', fx'', fy'') -> fx'')+ sy''+ = T.uconstDef p c87v29v87v62y''+ (\ _ ->+ case j87v29v87v62x'' of+ (kx'', fx'', fy'') -> fy'')+ j87v29v87v62x''+ = case+ T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p) fz+ (T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos+ p)+ (gy' T.mkNoSrcPos p))+ (gx' T.mkNoSrcPos p)))+ of+ (T.R ((:+) fx'' fy'') kx'') -> (kx'', fx'',+ fy'')+ _ -> T.fatal p+ gx' px' p = T.uconstUse px' p sx'+ gy' py' p = T.uconstUse py' p sy'+ sx'+ = T.uconstDef p c88v29v88v55x'+ (\ _ ->+ case j88v29v88v55x' of+ (kx', fx', fy') -> fx')+ sy'+ = T.uconstDef p c88v29v88v55y'+ (\ _ ->+ case j88v29v88v55x' of+ (kx', fx', fy') -> fy')+ j88v29v88v55x'+ = case+ T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1)))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ fz+ fz))+ of+ (T.R ((:+) fx' fy') kx') -> (kx', fx', fy')+ _ -> T.fatal p+ hacos _ p = T.fatal p+ gatan patan p = T.ufun1 c89v5v90v27atan patan p hatan+ where hatan fz@(T.R ((:+) fx fy) _) p+ = T.con2 T.mkNoSrcPos p (:+) (+:+)+ (gy' T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gnegate T.mkNoSrcPos p)+ (gx' T.mkNoSrcPos p))+ where gx' px' p = T.uconstUse px' p sx'+ gy' py' p = T.uconstUse py' p sy'+ sx'+ = T.uconstDef p c90v29v90v70x'+ (\ _ ->+ case j90v29v90v70x' of+ (kx', fx', fy') -> fx')+ sy'+ = T.uconstDef p c90v29v90v70y'+ (\ _ ->+ case j90v29v90v70x' of+ (kx', fx', fy') -> fy')+ j90v29v90v70x'+ = case+ T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p (:+) (+:+)+ (T.uap2 T.mkNoSrcPos p+ ((!-) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1)))+ fy)+ fx)+ (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1)))+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ fz+ fz))))+ of+ (T.R ((:+) fx' fy') kx') -> (kx', fx', fy')+ _ -> T.fatal p+ hatan _ p = T.fatal p+ gasinh pasinh p+ = T.ufun1 c92v5v92v44asinh pasinh p hasinh+ where hasinh fz p+ = T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p) fz+ (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1)))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fz+ fz))))+ gacosh pacosh p+ = T.ufun1 c93v5v93v58acosh pacosh p hacosh+ where hacosh fz p+ = T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p) fz+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p) fz+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ fz+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ fz+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1))))))))+ gatanh patanh p+ = T.ufun1 c94v5v94v48atanh patanh p hatanh+ where hatanh fz p+ = T.uap1 T.mkNoSrcPos p (glog T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!/) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1)))+ fz)+ (T.uap1 T.mkNoSrcPos p (gsqrt T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1)))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) fz+ fz))))+acis+ = T.mkVariable tComplex 200001 200036 3 (1) "cis"+ Prelude.False+aconjugate+ = T.mkVariable tComplex 140001 140029 3 (1)+ "conjugate"+ Prelude.False+aimagPart+ = T.mkVariable tComplex 110001 110021 3 (1)+ "imagPart"+ Prelude.False+amagnitude+ = T.mkVariable tComplex 260001 280009 3 (1)+ "magnitude"+ Prelude.False+amkPolar+ = T.mkVariable tComplex 170001 170050 3 (2) "mkPolar"+ Prelude.False+aphase+ = T.mkVariable tComplex 320001 330026 3 (1) "phase"+ Prelude.False+apolar+ = T.mkVariable tComplex 230001 230034 3 (1) "polar"+ Prelude.False+arealPart+ = T.mkVariable tComplex 100001 100021 3 (1)+ "realPart"+ Prelude.False+(+:+)+ = T.mkConstructor tComplex 60021 60022 24 (2) ":+"+(++=%@=+=%>==)+ = T.mkVariable tComplex 60038 60039 3 (-1) "=="+ Prelude.False+c6v41v6v44readsPrec+ = T.mkVariable tComplex 60041 60044 3 (-1)+ "readsPrec"+ Prelude.False+c6v46v6v49showsPrec+ = T.mkVariable tComplex 60046 60049 3 (-1)+ "showsPrec"+ Prelude.False+c28v11v28v44k+ = T.mkVariable tComplex 280011 280044 3 (0) "k"+ Prelude.True+c29v11v29v18mk+ = T.mkVariable tComplex 290011 290018 3 (0) "mk"+ Prelude.True+c43v42v43v56r+ = T.mkVariable tComplex 430042 430056 3 (0) "r"+ Prelude.True+c41v5v41v29abs+ = T.mkVariable tComplex 410005 410029 3 (-1) "abs"+ Prelude.False+c44v5v44v39fromInteger+ = T.mkVariable tComplex 440005 440039 3 (-1)+ "fromInteger"+ Prelude.False+c40v5v40v41negate+ = T.mkVariable tComplex 400005 400041 3 (-1) "negate"+ Prelude.False+c42v5v44v0signum+ = T.mkVariable tComplex 420005 440000 3 (-1) "signum"+ Prelude.False+(+%>=*=%>=*#*)+ = T.mkVariable tComplex 390005 390051 3 (-1) "*"+ Prelude.False+(+%^=*=%^=&#+)+ = T.mkVariable tComplex 370005 370041 3 (-1) "+"+ Prelude.False+(+%@=*=%@=&#-)+ = T.mkVariable tComplex 380005 380041 3 (-1) "-"+ Prelude.False+c52v5v52v25d+ = T.mkVariable tComplex 520005 520025 3 (0) "d"+ Prelude.True+c51v5v51v43k+ = T.mkVariable tComplex 510005 510043 3 (0) "k"+ Prelude.True+c49v5v49v25x''+ = T.mkVariable tComplex 490005 490025 3 (0) "x''"+ Prelude.True+c50v5v50v25y''+ = T.mkVariable tComplex 500005 500025 3 (0) "y''"+ Prelude.True+c54v3v54v39fromRational+ = T.mkVariable tComplex 540003 540039 3 (-1)+ "fromRational"+ Prelude.False+(+&^=%=&@=>/)+ = T.mkVariable tComplex 470003 480009 3 (-1) "/"+ Prelude.False+c59v29v59v40expx+ = T.mkVariable tComplex 590029 590040 3 (0) "expx"+ Prelude.True+c64v29v64v70u+ = T.mkVariable tComplex 640029 640070 3 (0) "u"+ Prelude.True+c66v29v66v68u'+ = T.mkVariable tComplex 660029 660068 3 (0) "u'"+ Prelude.True+c64v29v64v70v+ = T.mkVariable tComplex 640029 640070 3 (0) "v"+ Prelude.True+c65v29v65v50v'+ = T.mkVariable tComplex 650029 650050 3 (0) "v'"+ Prelude.True+c74v29v74v42coshy+ = T.mkVariable tComplex 740029 740042 3 (0) "coshy"+ Prelude.True+c72v29v72v41cosx+ = T.mkVariable tComplex 720029 720041 3 (0) "cosx"+ Prelude.True+c73v29v73v42sinhy+ = T.mkVariable tComplex 730029 730042 3 (0) "sinhy"+ Prelude.True+c71v29v71v41sinx+ = T.mkVariable tComplex 710029 710041 3 (0) "sinx"+ Prelude.True+c82v29v82v42coshx+ = T.mkVariable tComplex 820029 820042 3 (0) "coshx"+ Prelude.True+c80v29v80v41cosy+ = T.mkVariable tComplex 800029 800041 3 (0) "cosy"+ Prelude.True+c81v29v81v42sinhx+ = T.mkVariable tComplex 810029 810042 3 (0) "sinhx"+ Prelude.True+c79v29v79v41siny+ = T.mkVariable tComplex 790029 790041 3 (0) "siny"+ Prelude.True+c85v30v85v72x'+ = T.mkVariable tComplex 850030 850072 3 (0) "x'"+ Prelude.True+c85v30v85v72y'+ = T.mkVariable tComplex 850030 850072 3 (0) "y'"+ Prelude.True+c88v29v88v55x'+ = T.mkVariable tComplex 880029 880055 3 (0) "x'"+ Prelude.True+c87v29v87v62x''+ = T.mkVariable tComplex 870029 870062 3 (0) "x''"+ Prelude.True+c88v29v88v55y'+ = T.mkVariable tComplex 880029 880055 3 (0) "y'"+ Prelude.True+c87v29v87v62y''+ = T.mkVariable tComplex 870029 870062 3 (0) "y''"+ Prelude.True+c90v29v90v70x'+ = T.mkVariable tComplex 900029 900070 3 (0) "x'"+ Prelude.True+c90v29v90v70y'+ = T.mkVariable tComplex 900029 900070 3 (0) "y'"+ Prelude.True+c86v5v87v27acos+ = T.mkVariable tComplex 860005 870027 3 (-1) "acos"+ Prelude.False+c93v5v93v58acosh+ = T.mkVariable tComplex 930005 930058 3 (-1) "acosh"+ Prelude.False+c84v5v85v27asin+ = T.mkVariable tComplex 840005 850027 3 (-1) "asin"+ Prelude.False+c92v5v92v44asinh+ = T.mkVariable tComplex 920005 920044 3 (-1) "asinh"+ Prelude.False+c89v5v90v27atan+ = T.mkVariable tComplex 890005 900027 3 (-1) "atan"+ Prelude.False+c94v5v94v48atanh+ = T.mkVariable tComplex 940005 940048 3 (-1) "atanh"+ Prelude.False+c69v5v69v58cos+ = T.mkVariable tComplex 690005 690058 3 (-1) "cos"+ Prelude.False+c77v5v77v54cosh+ = T.mkVariable tComplex 770005 770054 3 (-1) "cosh"+ Prelude.False+c58v5v59v27exp+ = T.mkVariable tComplex 580005 590027 3 (-1) "exp"+ Prelude.False+c60v5v60v50log+ = T.mkVariable tComplex 600005 600050 3 (-1) "log"+ Prelude.False+c57v5v57v29pi+ = T.mkVariable tComplex 570005 570029 3 (-1) "pi"+ Prelude.False+c68v5v68v54sin+ = T.mkVariable tComplex 680005 680054 3 (-1) "sin"+ Prelude.False+c76v5v76v55sinh+ = T.mkVariable tComplex 760005 760055 3 (-1) "sinh"+ Prelude.False+c62v5v68v0sqrt+ = T.mkVariable tComplex 620005 680000 3 (-1) "sqrt"+ Prelude.False+c70v5v71v27tan+ = T.mkVariable tComplex 700005 710027 3 (-1) "tan"+ Prelude.False+c78v5v79v27tanh+ = T.mkVariable tComplex 780005 790027 3 (-1) "tanh"+ Prelude.False+p = T.mkRoot+tComplex+ = T.mkModule "Complex" "Complex.hs" Prelude.False
Hat/Control/Monad.hs view
@@ -1,181 +1,226 @@ module Hat.Control.Monad- (Functor(gfmap,sfmap),Monad((!>>=),(!>>),greturn,gfail,(|>>=),(|>>),sreturn- ,sfail),MonadPlus(gmzero,gmplus,smzero,smplus),gmapM,amapM,hmapM,gmapM_- ,amapM_,hmapM_,gforM,gforM_,gsequence,gsequence_,(!=<<),(+=<<),(*=<<),(!>=>)- ,(+>=>),(*>=>),(!<=<),gforever,aforever,hforever,gvoid,gjoin,ajoin,hjoin- ,gmsum,amsum,hmsum,gfilterM,afilterM,hfilterM,gmapAndUnzipM,amapAndUnzipM- ,hmapAndUnzipM,gzipWithM,azipWithM,hzipWithM,gzipWithM_,azipWithM_- ,hzipWithM_,gfoldM,afoldM,hfoldM,gfoldM_,afoldM_,hfoldM_,greplicateM- ,areplicateM,hreplicateM,greplicateM_,areplicateM_,hreplicateM_,gguard- ,aguard,hguard,gwhen,awhen,hwhen,gunless,aunless,hunless,gliftM,aliftM- ,hliftM,gliftM2,aliftM2,hliftM2,gliftM3,aliftM3,hliftM3,gliftM4,aliftM4- ,hliftM4,gliftM5,aliftM5,hliftM5,gap) 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.Monad -+ (Functor(gfmap, sfmap),+ Monad((!>>=), (!>>), greturn, gfail, (|>>=), (|>>),+ sreturn, sfail),+ MonadPlus(gmzero, gmplus, smzero, smplus), gmapM,+ amapM, hmapM, gmapM_, amapM_, hmapM_, gforM, gforM_,+ gsequence, gsequence_, (!=<<), (+=<<), (*=<<),+ (!>=>), (+>=>), (*>=>), (!<=<), gforever, aforever,+ hforever, gvoid, gjoin, ajoin, hjoin, gmsum, amsum,+ hmsum, gfilterM, afilterM, hfilterM, gmapAndUnzipM,+ amapAndUnzipM, hmapAndUnzipM, gzipWithM, azipWithM,+ hzipWithM, gzipWithM_, azipWithM_, hzipWithM_,+ gfoldM, afoldM, hfoldM, gfoldM_, afoldM_, hfoldM_,+ greplicateM, areplicateM, hreplicateM, greplicateM_,+ areplicateM_, hreplicateM_, gguard, aguard, hguard,+ gwhen, awhen, hwhen, gunless, aunless, hunless,+ gliftM, aliftM, hliftM, gliftM2, aliftM2, hliftM2,+ gliftM3, aliftM3, hliftM3, gliftM4, aliftM4, hliftM4,+ gliftM5, aliftM5, hliftM5, gap)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.Monad+ gforM ::- Monad m =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m (T.List b))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.Fun a (m b)) (m (T.List b))))+ sforM ::- Monad m => T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m (T.List b))))-+ (Monad m) =>+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.Fun a (m b)) (m (T.List b)))) gforM pforM p = T.uconstUse pforM p sforM--sforM =- T.uconstDef T.mkRoot aforM- (\ p -> T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (gmapM T.mkNoSrcPos p))-+sforM+ = T.uconstDef p aforM+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p)+ (gmapM T.mkNoSrcPos p))+ gforM_ ::- Monad m =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m T.Tuple0)))--sforM_ :: Monad m => T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m T.Tuple0)))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.Fun a (m b)) (m T.Tuple0)))+ +sforM_ ::+ (Monad m) =>+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.Fun a (m b)) (m T.Tuple0))) gforM_ pforM_ p = T.uconstUse pforM_ p sforM_--sforM_ =- T.uconstDef T.mkRoot aforM_- (\ p ->- T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (gmapM_ T.mkNoSrcPos p))-+sforM_+ = T.uconstDef p aforM_+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p)+ (gmapM_ T.mkNoSrcPos p))+ (!>=>) ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (T.Fun a (m b)) (T.Fun (T.Fun b (m c)) (T.Fun a (m c))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (m b))+ (T.Fun (T.Fun b (m c)) (T.Fun a (m c))))+ (*>=>) ::- Monad m =>- (T.R (T.Fun a (m b))) ->- (T.R (T.Fun b (m c))) -> T.RefExp -> T.R (T.Fun a (m c))--(!>=>) (%>=>) p = T.ufun2 (+>=>) (%>=>) p (*>=>)--(*>=>) ff fg p =- T.ufun1 T.mkLambda T.mkNoSrcPos p- (\ fx p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>>= p) (T.uap1 T.mkNoSrcPos p ff fx)- fg)-+ (Monad m) =>+ T.R (T.Fun a (m b)) ->+ T.R (T.Fun b (m c)) ->+ T.RefExp -> T.R (T.Fun a (m c))+(%>=>) !>=> p = T.ufun2 (+>=>) (%>=>) p (*>=>)+(ff *>=> fg) p+ = T.ufun1 T.mkLambda T.mkNoSrcPos p+ (\ fx p ->+ T.uap2 T.mkNoSrcPos p ((!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p ff fx)+ fg)+ (!<=<) ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (T.Fun b (m c)) (T.Fun (T.Fun a (m b)) (T.Fun a (m c))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun b (m c))+ (T.Fun (T.Fun a (m b)) (T.Fun a (m c))))+ (|<=<) ::- Monad m => T.R (T.Fun (T.Fun b (m c)) (T.Fun (T.Fun a (m b)) (T.Fun a (m c))))--(!<=<) (%<=<) p = T.uconstUse (%<=<) p (|<=<)--(|<=<) =- T.uconstDef T.mkRoot (+<=<)- (\ p -> T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (T.mkNoSrcPos !>=> p))--gforever :: Monad m => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (m a) (m b))--hforever :: Monad m => (T.R (m a)) -> T.RefExp -> T.R (m b)--gforever pforever p = T.ufun1 aforever pforever p hforever--hforever fa p =- let- ga' pa' p = T.uconstUse pa' p sa'- sa' =- T.uconstDef p a31v19v31v30a'- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>> p) fa (ga' T.mkNoSrcPos p)) in- (ga' T.mkNoSrcPos p)--gvoid :: Functor f => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (f a) (f T.Tuple0))--svoid :: Functor f => T.R (T.Fun (f a) (f T.Tuple0))-+ (Monad m) =>+ T.R+ (T.Fun (T.Fun b (m c))+ (T.Fun (T.Fun a (m b)) (T.Fun a (m c))))+(%<=<) !<=< p = T.uconstUse (%<=<) p (|<=<)+(|<=<)+ = T.uconstDef p (+<=<)+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p)+ ((!>=>) T.mkNoSrcPos p))+ +gforever ::+ (Monad m) =>+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun (m a) (m b))+ +hforever ::+ (Monad m) => T.R (m a) -> T.RefExp -> T.R (m b)+gforever pforever p+ = T.ufun1 aforever pforever p hforever+hforever fa p+ = let ga' pa' p = T.uconstUse pa' p sa'+ sa'+ = T.uconstDef p c31v19v31v30a'+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!>>) T.mkNoSrcPos p) fa+ (ga' T.mkNoSrcPos p))+ in ga' T.mkNoSrcPos p+ +gvoid ::+ (Functor f) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (f a) (f T.Tuple0))+ +svoid ::+ (Functor f) => T.R (T.Fun (f a) (f T.Tuple0)) gvoid pvoid p = T.uconstUse pvoid p svoid--svoid =- T.uconstDef T.mkRoot avoid- (\ p ->- T.uap1 T.mkNoSrcPos p (gfmap T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gconst T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0)))-+svoid+ = T.uconstDef p avoid+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gfmap T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gconst T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0)))+ gfoldM_ ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (m a)))- (T.Fun a (T.Fun (T.List b) (m T.Tuple0))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (m a)))+ (T.Fun a (T.Fun (T.List b) (m T.Tuple0))))+ hfoldM_ ::- Monad m =>- (T.R (T.Fun a (T.Fun b (m a)))) ->- (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R (m T.Tuple0)-+ (Monad m) =>+ T.R (T.Fun a (T.Fun b (m a))) ->+ T.R a ->+ T.R (T.List b) -> T.RefExp -> T.R (m T.Tuple0) gfoldM_ pfoldM_ p = T.ufun3 afoldM_ pfoldM_ p hfoldM_--hfoldM_ ff fa fxs p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>> p)- (T.uwrapForward p (hfoldM ff fa fxs p))- (T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0))-+hfoldM_ ff fa fxs p+ = T.uap2 T.mkNoSrcPos p ((!>>) T.mkNoSrcPos p)+ (T.uwrapForward p (hfoldM ff fa fxs p))+ (T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0))+ greplicateM ::- Monad m =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun (m a) (m (T.List a))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Int (T.Fun (m a) (m (T.List a))))+ hreplicateM ::- Monad m => (T.R Int) -> (T.R (m a)) -> T.RefExp -> T.R (m (T.List a))--greplicateM preplicateM p = T.ufun2 areplicateM preplicateM p hreplicateM--hreplicateM fn fx p =- T.uap1 T.mkNoSrcPos p (gsequence T.mkNoSrcPos p)- (T.uwrapForward p (hreplicate fn fx p))-+ (Monad m) =>+ T.R Int ->+ T.R (m a) -> T.RefExp -> T.R (m (T.List a))+greplicateM preplicateM p+ = T.ufun2 areplicateM preplicateM p hreplicateM+hreplicateM fn fx p+ = T.uap1 T.mkNoSrcPos p (gsequence T.mkNoSrcPos p)+ (T.uwrapForward p (hreplicate fn fx p))+ greplicateM_ ::- Monad m =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun (m a) (m T.Tuple0)))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Int (T.Fun (m a) (m T.Tuple0)))+ hreplicateM_ ::- Monad m => (T.R Int) -> (T.R (m a)) -> T.RefExp -> T.R (m T.Tuple0)--greplicateM_ preplicateM_ p = T.ufun2 areplicateM_ preplicateM_ p hreplicateM_--hreplicateM_ fn fx p =- T.uap1 T.mkNoSrcPos p (gsequence_ T.mkNoSrcPos p)- (T.uwrapForward p (hreplicate fn fx p))--tControl_Monad = T.mkModule "Control.Monad" "Control/Monad.hs" Prelude.False--aforM = T.mkVariable tControl_Monad 150001 150027 3 0 "forM" Prelude.False--aforM_ = T.mkVariable tControl_Monad 190001 190028 3 0 "forM_" Prelude.False--(+>=>) = T.mkVariable tControl_Monad 230003 230005 3 2 ">=>" Prelude.False--(+<=<) = T.mkVariable tControl_Monad 270002 270023 3 0 "<=<" Prelude.False--aforever = T.mkVariable tControl_Monad 310001 310036 3 1 "forever" Prelude.False--avoid = T.mkVariable tControl_Monad 350001 350022 3 0 "void" Prelude.False--afoldM_ = T.mkVariable tControl_Monad 390001 390046 3 3 "foldM_" Prelude.False--areplicateM =- T.mkVariable tControl_Monad 440001 440043 3 2 "replicateM" Prelude.False--areplicateM_ =- T.mkVariable tControl_Monad 480001 480044 3 2 "replicateM_" Prelude.False--a31v19v31v30a' = T.mkVariable tControl_Monad 310019 310030 3 0 "a'" Prelude.True+ (Monad m) =>+ T.R Int -> T.R (m a) -> T.RefExp -> T.R (m T.Tuple0)+greplicateM_ preplicateM_ p+ = T.ufun2 areplicateM_ preplicateM_ p hreplicateM_+hreplicateM_ fn fx p+ = T.uap1 T.mkNoSrcPos p (gsequence_ T.mkNoSrcPos p)+ (T.uwrapForward p (hreplicate fn fx p))+afoldM_+ = T.mkVariable tMonad 390001 390045 3 (3) "foldM_"+ Prelude.False+aforM+ = T.mkVariable tMonad 150001 150027 3 (0) "forM"+ Prelude.False+aforM_+ = T.mkVariable tMonad 190001 190028 3 (0) "forM_"+ Prelude.False+aforever+ = T.mkVariable tMonad 310001 310036 3 (1) "forever"+ Prelude.False+areplicateM+ = T.mkVariable tMonad 440001 440044 3 (2)+ "replicateM"+ Prelude.False+areplicateM_+ = T.mkVariable tMonad 480001 480045 3 (2)+ "replicateM_"+ Prelude.False+avoid+ = T.mkVariable tMonad 350001 350022 3 (0) "void"+ Prelude.False+(+<=<)+ = T.mkVariable tMonad 270001 270024 3 (0) "<=<"+ Prelude.False+(+>=>)+ = T.mkVariable tMonad 230001 230029 3 (2) ">=>"+ Prelude.False+c31v19v31v30a'+ = T.mkVariable tMonad 310019 310030 3 (0) "a'"+ Prelude.True+p = T.mkRoot+tMonad+ = T.mkModule "Control.Monad" "Control/Monad.hs"+ Prelude.False
Hat/Data/Char.hs view
@@ -1,2493 +1,3251 @@ module Hat.Data.Char- (Char(),String(),gisControl,aisControl,hisControl,gisSpace,aisSpace,hisSpace- ,gisLower,aisLower,hisLower,gisUpper,aisUpper,hisUpper,gisAlpha,aisAlpha- ,hisAlpha,gisAlphaNum,aisAlphaNum,hisAlphaNum,gisPrint,aisPrint,hisPrint- ,gisDigit,aisDigit,hisDigit,gisOctDigit,aisOctDigit,hisOctDigit,gisHexDigit- ,aisHexDigit,hisHexDigit,gisLetter,aisLetter,hisLetter,gisMark,aisMark- ,hisMark,gisNumber,aisNumber,hisNumber,gisPunctuation,aisPunctuation- ,hisPunctuation,gisSymbol,aisSymbol,hisSymbol,gisSeparator,aisSeparator- ,hisSeparator,gisAscii,aisAscii,hisAscii,gisLatin1,aisLatin1,hisLatin1- ,gisAsciiUpper,aisAsciiUpper,hisAsciiUpper,gisAsciiLower,aisAsciiLower- ,hisAsciiLower,GeneralCategory(UppercaseLetter,LowercaseLetter- ,TitlecaseLetter,ModifierLetter,OtherLetter,NonSpacingMark- ,SpacingCombiningMark,EnclosingMark,DecimalNumber,LetterNumber,OtherNumber- ,ConnectorPunctuation,DashPunctuation,OpenPunctuation,ClosePunctuation- ,InitialQuote,FinalQuote,OtherPunctuation,MathSymbol,CurrencySymbol- ,ModifierSymbol,OtherSymbol,Space,LineSeparator,ParagraphSeparator,Control- ,Format,Surrogate,PrivateUse,NotAssigned),aUppercaseLetter- ,aLowercaseLetter,aTitlecaseLetter,aModifierLetter,aOtherLetter- ,aNonSpacingMark,aSpacingCombiningMark,aEnclosingMark,aDecimalNumber- ,aLetterNumber,aOtherNumber,aConnectorPunctuation,aDashPunctuation- ,aOpenPunctuation,aClosePunctuation,aInitialQuote,aFinalQuote- ,aOtherPunctuation,aMathSymbol,aCurrencySymbol,aModifierSymbol,aOtherSymbol- ,aSpace,aLineSeparator,aParagraphSeparator,aControl,aFormat,aSurrogate- ,aPrivateUse,aNotAssigned,ggeneralCategory,ageneralCategory,hgeneralCategory- ,gtoUpper,atoUpper,htoUpper,gtoLower,atoLower,htoLower,gtoTitle,atoTitle- ,htoTitle,gdigitToInt,adigitToInt,hdigitToInt,gintToDigit,aintToDigit- ,hintToDigit,gord,gchr,gshowLitChar,ashowLitChar,hshowLitChar,glexLitChar- ,alexLitChar,hlexLitChar,greadLitChar,areadLitChar,hreadLitChar) 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.PreludeBasic -import Hat.Ix -import Hat.PreludeBuiltinTypes -import qualified Data.Char --gisLetter :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisLetter pisLetter p = T.ufun1 aisLetter pisLetter p hisLetter--hisLetter z1isLetter kisLetter =- fromBool kisLetter (Data.Char.isLetter (T.toChar kisLetter z1isLetter))--gisMark :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisMark pisMark p = T.ufun1 aisMark pisMark p hisMark--hisMark z1isMark kisMark =- fromBool kisMark (Data.Char.isMark (T.toChar kisMark z1isMark))--gisNumber :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisNumber pisNumber p = T.ufun1 aisNumber pisNumber p hisNumber--hisNumber z1isNumber kisNumber =- fromBool kisNumber (Data.Char.isNumber (T.toChar kisNumber z1isNumber))--gisPunctuation :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisPunctuation pisPunctuation p =- T.ufun1 aisPunctuation pisPunctuation p hisPunctuation--hisPunctuation z1isPunctuation kisPunctuation =- fromBool kisPunctuation- (Data.Char.isPunctuation (T.toChar kisPunctuation z1isPunctuation))--gisSymbol :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisSymbol pisSymbol p = T.ufun1 aisSymbol pisSymbol p hisSymbol--hisSymbol z1isSymbol kisSymbol =- fromBool kisSymbol (Data.Char.isSymbol (T.toChar kisSymbol z1isSymbol))--gisSeparator :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisSeparator pisSeparator p = T.ufun1 aisSeparator pisSeparator p hisSeparator--hisSeparator z1isSeparator kisSeparator =- fromBool kisSeparator- (Data.Char.isSeparator (T.toChar kisSeparator z1isSeparator))--gisAsciiUpper :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisAsciiUpper pisAsciiUpper p =- T.ufun1 aisAsciiUpper pisAsciiUpper p hisAsciiUpper--hisAsciiUpper z1isAsciiUpper kisAsciiUpper =- fromBool kisAsciiUpper- (Data.Char.isAsciiUpper (T.toChar kisAsciiUpper z1isAsciiUpper))--gisAsciiLower :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisAsciiLower pisAsciiLower p =- T.ufun1 aisAsciiLower pisAsciiLower p hisAsciiLower--hisAsciiLower z1isAsciiLower kisAsciiLower =- fromBool kisAsciiLower- (Data.Char.isAsciiLower (T.toChar kisAsciiLower z1isAsciiLower))--gtoTitle :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Char)--gtoTitle ptoTitle p = T.ufun1 atoTitle ptoTitle p htoTitle--htoTitle z1toTitle ktoTitle =- T.fromChar ktoTitle (Data.Char.toTitle (T.toChar ktoTitle z1toTitle))--data GeneralCategory =- UppercaseLetter | LowercaseLetter | TitlecaseLetter | ModifierLetter - | OtherLetter | NonSpacingMark | SpacingCombiningMark | EnclosingMark - | DecimalNumber | LetterNumber | OtherNumber | ConnectorPunctuation - | DashPunctuation | OpenPunctuation | ClosePunctuation | InitialQuote - | FinalQuote | OtherPunctuation | MathSymbol | CurrencySymbol - | ModifierSymbol | OtherSymbol | Space | LineSeparator - | ParagraphSeparator | Control | Format | Surrogate | PrivateUse - | NotAssigned --instance T.WrapVal (GeneralCategory)- where- - wrapVal pwrapVal (kwrapVal@UppercaseLetter) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aUppercaseLetter)- wrapVal pwrapVal (kwrapVal@LowercaseLetter) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aLowercaseLetter)- wrapVal pwrapVal (kwrapVal@TitlecaseLetter) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aTitlecaseLetter)- wrapVal pwrapVal (kwrapVal@ModifierLetter) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aModifierLetter)- wrapVal pwrapVal (kwrapVal@OtherLetter) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aOtherLetter)- wrapVal pwrapVal (kwrapVal@NonSpacingMark) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aNonSpacingMark)- wrapVal pwrapVal (kwrapVal@SpacingCombiningMark) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aSpacingCombiningMark)- wrapVal pwrapVal (kwrapVal@EnclosingMark) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aEnclosingMark)- wrapVal pwrapVal (kwrapVal@DecimalNumber) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aDecimalNumber)- wrapVal pwrapVal (kwrapVal@LetterNumber) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aLetterNumber)- wrapVal pwrapVal (kwrapVal@OtherNumber) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aOtherNumber)- wrapVal pwrapVal (kwrapVal@ConnectorPunctuation) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aConnectorPunctuation)- wrapVal pwrapVal (kwrapVal@DashPunctuation) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aDashPunctuation)- wrapVal pwrapVal (kwrapVal@OpenPunctuation) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aOpenPunctuation)- wrapVal pwrapVal (kwrapVal@ClosePunctuation) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aClosePunctuation)- wrapVal pwrapVal (kwrapVal@InitialQuote) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aInitialQuote)- wrapVal pwrapVal (kwrapVal@FinalQuote) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aFinalQuote)- wrapVal pwrapVal (kwrapVal@OtherPunctuation) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aOtherPunctuation)- wrapVal pwrapVal (kwrapVal@MathSymbol) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aMathSymbol)- wrapVal pwrapVal (kwrapVal@CurrencySymbol) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aCurrencySymbol)- wrapVal pwrapVal (kwrapVal@ModifierSymbol) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aModifierSymbol)- wrapVal pwrapVal (kwrapVal@OtherSymbol) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aOtherSymbol)- wrapVal pwrapVal (kwrapVal@Space) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aSpace)- wrapVal pwrapVal (kwrapVal@LineSeparator) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aLineSeparator)- wrapVal pwrapVal (kwrapVal@ParagraphSeparator) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aParagraphSeparator)- wrapVal pwrapVal (kwrapVal@Control) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aControl)- wrapVal pwrapVal (kwrapVal@Format) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aFormat)- wrapVal pwrapVal (kwrapVal@Surrogate) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aSurrogate)- wrapVal pwrapVal (kwrapVal@PrivateUse) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aPrivateUse)- wrapVal pwrapVal (kwrapVal@NotAssigned) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aNotAssigned)- --instance Eq (GeneralCategory)- where- - (!==) (%==) p =- T.ufun2 (+>>=#>=>>=$!==) (%==) p (*==)- where- - (*==) (T.R UppercaseLetter _) (T.R UppercaseLetter _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R LowercaseLetter _) (T.R LowercaseLetter _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R TitlecaseLetter _) (T.R TitlecaseLetter _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R ModifierLetter _) (T.R ModifierLetter _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R OtherLetter _) (T.R OtherLetter _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R NonSpacingMark _) (T.R NonSpacingMark _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R SpacingCombiningMark _) (T.R SpacingCombiningMark _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R EnclosingMark _) (T.R EnclosingMark _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R DecimalNumber _) (T.R DecimalNumber _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R LetterNumber _) (T.R LetterNumber _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R OtherNumber _) (T.R OtherNumber _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R ConnectorPunctuation _) (T.R ConnectorPunctuation _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R DashPunctuation _) (T.R DashPunctuation _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R OpenPunctuation _) (T.R OpenPunctuation _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R ClosePunctuation _) (T.R ClosePunctuation _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R InitialQuote _) (T.R InitialQuote _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R FinalQuote _) (T.R FinalQuote _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R OtherPunctuation _) (T.R OtherPunctuation _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R MathSymbol _) (T.R MathSymbol _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R CurrencySymbol _) (T.R CurrencySymbol _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R ModifierSymbol _) (T.R ModifierSymbol _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R OtherSymbol _) (T.R OtherSymbol _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Space _) (T.R Space _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R LineSeparator _) (T.R LineSeparator _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R ParagraphSeparator _) (T.R ParagraphSeparator _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Control _) (T.R Control _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Format _) (T.R Format _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Surrogate _) (T.R Surrogate _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R PrivateUse _) (T.R PrivateUse _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R NotAssigned _) (T.R NotAssigned _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (GeneralCategory)- where- - gcompare pcompare p =- T.ufun2 a99v23v99v25compare pcompare p hcompare- where- - hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a99v23v99v25localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a99v23v99v25localFromEnum- - hlocalFromEnum (T.R (UppercaseLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R (LowercaseLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R (TitlecaseLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R (ModifierLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R (OtherLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R (NonSpacingMark) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R (SpacingCombiningMark) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum (T.R (EnclosingMark) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hlocalFromEnum (T.R (DecimalNumber) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hlocalFromEnum (T.R (LetterNumber) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hlocalFromEnum (T.R (OtherNumber) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hlocalFromEnum (T.R (ConnectorPunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hlocalFromEnum (T.R (DashPunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 12)- hlocalFromEnum (T.R (OpenPunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 13)- hlocalFromEnum (T.R (ClosePunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 14)- hlocalFromEnum (T.R (InitialQuote) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 15)- hlocalFromEnum (T.R (FinalQuote) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 16)- hlocalFromEnum (T.R (OtherPunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 17)- hlocalFromEnum (T.R (MathSymbol) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 18)- hlocalFromEnum (T.R (CurrencySymbol) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 19)- hlocalFromEnum (T.R (ModifierSymbol) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 20)- hlocalFromEnum (T.R (OtherSymbol) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 21)- hlocalFromEnum (T.R (Space) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 22)- hlocalFromEnum (T.R (LineSeparator) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 23)- hlocalFromEnum (T.R (ParagraphSeparator) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 24)- hlocalFromEnum (T.R (Control) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 25)- hlocalFromEnum (T.R (Format) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 26)- hlocalFromEnum (T.R (Surrogate) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 27)- hlocalFromEnum (T.R (PrivateUse) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 28)- hlocalFromEnum (T.R (NotAssigned) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 29)- hlocalFromEnum _ p = T.fatal p- - - --instance Enum (GeneralCategory)- where- - gfromEnum pfromEnum p =- T.ufun1 a99v28v99v31fromEnum pfromEnum p hfromEnum- where- - hfromEnum (T.R UppercaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hfromEnum (T.R LowercaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hfromEnum (T.R TitlecaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hfromEnum (T.R ModifierLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hfromEnum (T.R OtherLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hfromEnum (T.R NonSpacingMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hfromEnum (T.R SpacingCombiningMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hfromEnum (T.R EnclosingMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hfromEnum (T.R DecimalNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hfromEnum (T.R LetterNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hfromEnum (T.R OtherNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hfromEnum (T.R ConnectorPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hfromEnum (T.R DashPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 12)- hfromEnum (T.R OpenPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 13)- hfromEnum (T.R ClosePunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 14)- hfromEnum (T.R InitialQuote _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 15)- hfromEnum (T.R FinalQuote _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 16)- hfromEnum (T.R OtherPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 17)- hfromEnum (T.R MathSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 18)- hfromEnum (T.R CurrencySymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 19)- hfromEnum (T.R ModifierSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 20)- hfromEnum (T.R OtherSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 21)- hfromEnum (T.R Space _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 22)- hfromEnum (T.R LineSeparator _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 23)- hfromEnum (T.R ParagraphSeparator _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 24)- hfromEnum (T.R Control _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 25)- hfromEnum (T.R Format _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 26)- hfromEnum (T.R Surrogate _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 27)- hfromEnum (T.R PrivateUse _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 28)- hfromEnum (T.R NotAssigned _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 29)- hfromEnum _ p = T.fatal p- - - gtoEnum ptoEnum p =- T.ufun1 a99v28v99v31toEnum ptoEnum p htoEnum- where- - htoEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter- h p = y1toEnum fv99v28v99v31n p- - htoEnum fv99v28v99v31n p = y1toEnum fv99v28v99v31n p- - y1toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p) (y2toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p LowercaseLetter aLowercaseLetter- h p = y2toEnum fv99v28v99v31n p- - y1toEnum fv99v28v99v31n p = y2toEnum fv99v28v99v31n p- - y2toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p) (y3toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p TitlecaseLetter aTitlecaseLetter- h p = y3toEnum fv99v28v99v31n p- - y2toEnum fv99v28v99v31n p = y3toEnum fv99v28v99v31n p- - y3toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3))) (h p) (y4toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p ModifierLetter aModifierLetter- h p = y4toEnum fv99v28v99v31n p- - y3toEnum fv99v28v99v31n p = y4toEnum fv99v28v99v31n p- - y4toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4))) (h p) (y5toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p OtherLetter aOtherLetter- h p = y5toEnum fv99v28v99v31n p- - y4toEnum fv99v28v99v31n p = y5toEnum fv99v28v99v31n p- - y5toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5))) (h p) (y6toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p NonSpacingMark aNonSpacingMark- h p = y6toEnum fv99v28v99v31n p- - y5toEnum fv99v28v99v31n p = y6toEnum fv99v28v99v31n p- - y6toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6))) (h p) (y7toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p SpacingCombiningMark aSpacingCombiningMark- h p = y7toEnum fv99v28v99v31n p- - y6toEnum fv99v28v99v31n p = y7toEnum fv99v28v99v31n p- - y7toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7))) (h p) (y8toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p EnclosingMark aEnclosingMark- h p = y8toEnum fv99v28v99v31n p- - y7toEnum fv99v28v99v31n p = y8toEnum fv99v28v99v31n p- - y8toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8))) (h p) (y9toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p DecimalNumber aDecimalNumber- h p = y9toEnum fv99v28v99v31n p- - y8toEnum fv99v28v99v31n p = y9toEnum fv99v28v99v31n p- - y9toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9))) (h p) (y10toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p LetterNumber aLetterNumber- h p = y10toEnum fv99v28v99v31n p- - y9toEnum fv99v28v99v31n p = y10toEnum fv99v28v99v31n p- - y10toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10))) (h p)- (y11toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p OtherNumber aOtherNumber- h p = y11toEnum fv99v28v99v31n p- - y10toEnum fv99v28v99v31n p = y11toEnum fv99v28v99v31n p- - y11toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11))) (h p)- (y12toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p ConnectorPunctuation aConnectorPunctuation- h p = y12toEnum fv99v28v99v31n p- - y11toEnum fv99v28v99v31n p = y12toEnum fv99v28v99v31n p- - y12toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 12))) (h p)- (y13toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p DashPunctuation aDashPunctuation- h p = y13toEnum fv99v28v99v31n p- - y12toEnum fv99v28v99v31n p = y13toEnum fv99v28v99v31n p- - y13toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 13))) (h p)- (y14toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p OpenPunctuation aOpenPunctuation- h p = y14toEnum fv99v28v99v31n p- - y13toEnum fv99v28v99v31n p = y14toEnum fv99v28v99v31n p- - y14toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 14))) (h p)- (y15toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p ClosePunctuation aClosePunctuation- h p = y15toEnum fv99v28v99v31n p- - y14toEnum fv99v28v99v31n p = y15toEnum fv99v28v99v31n p- - y15toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 15))) (h p)- (y16toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p InitialQuote aInitialQuote- h p = y16toEnum fv99v28v99v31n p- - y15toEnum fv99v28v99v31n p = y16toEnum fv99v28v99v31n p- - y16toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 16))) (h p)- (y17toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p FinalQuote aFinalQuote- h p = y17toEnum fv99v28v99v31n p- - y16toEnum fv99v28v99v31n p = y17toEnum fv99v28v99v31n p- - y17toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 17))) (h p)- (y18toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p OtherPunctuation aOtherPunctuation- h p = y18toEnum fv99v28v99v31n p- - y17toEnum fv99v28v99v31n p = y18toEnum fv99v28v99v31n p- - y18toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 18))) (h p)- (y19toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p MathSymbol aMathSymbol- h p = y19toEnum fv99v28v99v31n p- - y18toEnum fv99v28v99v31n p = y19toEnum fv99v28v99v31n p- - y19toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 19))) (h p)- (y20toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p CurrencySymbol aCurrencySymbol- h p = y20toEnum fv99v28v99v31n p- - y19toEnum fv99v28v99v31n p = y20toEnum fv99v28v99v31n p- - y20toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 20))) (h p)- (y21toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p ModifierSymbol aModifierSymbol- h p = y21toEnum fv99v28v99v31n p- - y20toEnum fv99v28v99v31n p = y21toEnum fv99v28v99v31n p- - y21toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 21))) (h p)- (y22toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p OtherSymbol aOtherSymbol- h p = y22toEnum fv99v28v99v31n p- - y21toEnum fv99v28v99v31n p = y22toEnum fv99v28v99v31n p- - y22toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 22))) (h p)- (y23toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p Space aSpace- h p = y23toEnum fv99v28v99v31n p- - y22toEnum fv99v28v99v31n p = y23toEnum fv99v28v99v31n p- - y23toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 23))) (h p)- (y24toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p LineSeparator aLineSeparator- h p = y24toEnum fv99v28v99v31n p- - y23toEnum fv99v28v99v31n p = y24toEnum fv99v28v99v31n p- - y24toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 24))) (h p)- (y25toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p ParagraphSeparator aParagraphSeparator- h p = y25toEnum fv99v28v99v31n p- - y24toEnum fv99v28v99v31n p = y25toEnum fv99v28v99v31n p- - y25toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 25))) (h p)- (y26toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p Control aControl- h p = y26toEnum fv99v28v99v31n p- - y25toEnum fv99v28v99v31n p = y26toEnum fv99v28v99v31n p- - y26toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 26))) (h p)- (y27toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p Format aFormat- h p = y27toEnum fv99v28v99v31n p- - y26toEnum fv99v28v99v31n p = y27toEnum fv99v28v99v31n p- - y27toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 27))) (h p)- (y28toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p Surrogate aSurrogate- h p = y28toEnum fv99v28v99v31n p- - y27toEnum fv99v28v99v31n p = y28toEnum fv99v28v99v31n p- - y28toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 28))) (h p)- (y29toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p PrivateUse aPrivateUse- h p = y29toEnum fv99v28v99v31n p- - y28toEnum fv99v28v99v31n p = y29toEnum fv99v28v99v31n p- - y29toEnum fv99v28v99v31n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v28v99v31n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 29))) (h p)- (y30toEnum fv99v28v99v31n p)- where- - h p = T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned- h p = y30toEnum fv99v28v99v31n p- - y29toEnum fv99v28v99v31n p = y30toEnum fv99v28v99v31n p- - y30toEnum _ p =- T.uwrapForward p- (Hat.Prelude.herror- (T.fromLitString T.mkNoSrcPos p "toEnum: argument out of bounds") p)- - - genumFrom penumFrom p =- T.ufun1 a99v28v99v31enumFrom penumFrom p henumFrom- where- - henumFrom fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fy1- (T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)- - - genumFromThen penumFromThen p =- T.ufun2 a99v28v99v31enumFromThen penumFromThen p henumFromThen- where- - henumFromThen fy1 fy2 p =- T.uap3 T.mkNoSrcPos p (Hat.Prelude.genumFromThenTo T.mkNoSrcPos p) fy1 fy2- (T.ucif p- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>= p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy1)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy2))- (T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)- (T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter))- - --instance Read (GeneralCategory)- where- - greadsPrec preadsPrec p =- T.ufun1 a99v34v99v37readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter))- (T.fromLitString T.mkNoSrcPos p "UppercaseLetter") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p LowercaseLetter aLowercaseLetter))- (T.fromLitString T.mkNoSrcPos p "LowercaseLetter") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p TitlecaseLetter aTitlecaseLetter))- (T.fromLitString T.mkNoSrcPos p "TitlecaseLetter") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p ModifierLetter aModifierLetter))- (T.fromLitString T.mkNoSrcPos p "ModifierLetter") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p OtherLetter aOtherLetter))- (T.fromLitString T.mkNoSrcPos p "OtherLetter") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p NonSpacingMark- aNonSpacingMark))- (T.fromLitString T.mkNoSrcPos p "NonSpacingMark") p))- p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p SpacingCombiningMark- aSpacingCombiningMark))- (T.fromLitString T.mkNoSrcPos p- "SpacingCombiningMark") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p EnclosingMark- aEnclosingMark))- (T.fromLitString T.mkNoSrcPos p "EnclosingMark")- p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p DecimalNumber- aDecimalNumber))- (T.fromLitString T.mkNoSrcPos p "DecimalNumber")- p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p LetterNumber- aLetterNumber))- (T.fromLitString T.mkNoSrcPos p- "LetterNumber") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p OtherNumber- aOtherNumber))- (T.fromLitString T.mkNoSrcPos p- "OtherNumber") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- ConnectorPunctuation- aConnectorPunctuation))- (T.fromLitString T.mkNoSrcPos p- "ConnectorPunctuation") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos- p)- (T.con0 T.mkNoSrcPos p DashPunctuation- aDashPunctuation))- (T.fromLitString T.mkNoSrcPos p- "DashPunctuation") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- OpenPunctuation aOpenPunctuation))- (T.fromLitString T.mkNoSrcPos p- "OpenPunctuation") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- ClosePunctuation- aClosePunctuation))- (T.fromLitString T.mkNoSrcPos p- "ClosePunctuation") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- InitialQuote aInitialQuote))- (T.fromLitString T.mkNoSrcPos p- "InitialQuote") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- FinalQuote aFinalQuote))- (T.fromLitString T.mkNoSrcPos p- "FinalQuote") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- OtherPunctuation- aOtherPunctuation))- (T.fromLitString T.mkNoSrcPos- p "OtherPunctuation") p))- p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos- p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- MathSymbol aMathSymbol))- (T.fromLitString- T.mkNoSrcPos p- "MathSymbol") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- CurrencySymbol- aCurrencySymbol))- (T.fromLitString- T.mkNoSrcPos p- "CurrencySymbol") p))- p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p- ModifierSymbol- aModifierSymbol))- (T.fromLitString- T.mkNoSrcPos p- "ModifierSymbol") p))- p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos- p OtherSymbol- aOtherSymbol))- (T.fromLitString- T.mkNoSrcPos p- "OtherSymbol") p))- p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos- p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos p)- (T.con0- T.mkNoSrcPos p- Space aSpace))- (T.fromLitString- T.mkNoSrcPos p- "Space") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.con0- T.mkNoSrcPos p- LineSeparator- aLineSeparator))- (T.fromLitString- T.mkNoSrcPos p- "LineSeparator")- p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos- p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.con0- T.mkNoSrcPos- p- ParagraphSeparator- aParagraphSeparator))- (T.fromLitString- T.mkNoSrcPos p- "ParagraphSeparator")- p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0- T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.con0- T.mkNoSrcPos- p Control- aControl))- (T.fromLitString- T.mkNoSrcPos- p "Control")- p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0- T.mkNoSrcPos p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.con0- T.mkNoSrcPos- p Format- aFormat))- (T.fromLitString- T.mkNoSrcPos- p- "Format")- p)) p))- (T.uap2 T.mkNoSrcPos- p- (Hat.PreludeBasic.galt- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0- T.mkNoSrcPos- p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.con0- T.mkNoSrcPos- p- Surrogate- aSurrogate))- (T.fromLitString- T.mkNoSrcPos- p- "Surrogate")- p)) p))- (T.uap2- T.mkNoSrcPos p- (Hat.PreludeBasic.galt- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.Prelude.hreadParen- (T.con0- T.mkNoSrcPos- p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.con0- T.mkNoSrcPos- p- PrivateUse- aPrivateUse))- (T.fromLitString- T.mkNoSrcPos- p- "PrivateUse")- p)) p))- (T.uwrapForward- p- (Hat.Prelude.hreadParen- (T.con0- T.mkNoSrcPos- p- Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.con0- T.mkNoSrcPos- p- NotAssigned- aNotAssigned))- (T.fromLitString- T.mkNoSrcPos- p- "NotAssigned")- p))- p))))))))))))))))))))))))))))))- - --instance Show (GeneralCategory)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a99v40v99v43showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (UppercaseLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "UppercaseLetter")- hshowsPrec fy1 (T.R (LowercaseLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "LowercaseLetter")- hshowsPrec fy1 (T.R (TitlecaseLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "TitlecaseLetter")- hshowsPrec fy1 (T.R (ModifierLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ModifierLetter")- hshowsPrec fy1 (T.R (OtherLetter) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "OtherLetter")- hshowsPrec fy1 (T.R (NonSpacingMark) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "NonSpacingMark")- hshowsPrec fy1 (T.R (SpacingCombiningMark) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "SpacingCombiningMark")- hshowsPrec fy1 (T.R (EnclosingMark) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "EnclosingMark")- hshowsPrec fy1 (T.R (DecimalNumber) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "DecimalNumber")- hshowsPrec fy1 (T.R (LetterNumber) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "LetterNumber")- hshowsPrec fy1 (T.R (OtherNumber) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "OtherNumber")- hshowsPrec fy1 (T.R (ConnectorPunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ConnectorPunctuation")- hshowsPrec fy1 (T.R (DashPunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "DashPunctuation")- hshowsPrec fy1 (T.R (OpenPunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "OpenPunctuation")- hshowsPrec fy1 (T.R (ClosePunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ClosePunctuation")- hshowsPrec fy1 (T.R (InitialQuote) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "InitialQuote")- hshowsPrec fy1 (T.R (FinalQuote) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "FinalQuote")- hshowsPrec fy1 (T.R (OtherPunctuation) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "OtherPunctuation")- hshowsPrec fy1 (T.R (MathSymbol) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "MathSymbol")- hshowsPrec fy1 (T.R (CurrencySymbol) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "CurrencySymbol")- hshowsPrec fy1 (T.R (ModifierSymbol) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ModifierSymbol")- hshowsPrec fy1 (T.R (OtherSymbol) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "OtherSymbol")- hshowsPrec fy1 (T.R (Space) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Space")- hshowsPrec fy1 (T.R (LineSeparator) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "LineSeparator")- hshowsPrec fy1 (T.R (ParagraphSeparator) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ParagraphSeparator")- hshowsPrec fy1 (T.R (Control) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Control")- hshowsPrec fy1 (T.R (Format) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Format")- hshowsPrec fy1 (T.R (Surrogate) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Surrogate")- hshowsPrec fy1 (T.R (PrivateUse) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "PrivateUse")- hshowsPrec fy1 (T.R (NotAssigned) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "NotAssigned")- hshowsPrec _ _ p = T.fatal p- - --instance Bounded (GeneralCategory)- where- - gminBound pminBound p = T.uconstUse pminBound p sminBound- - sminBound =- T.uconstDef T.mkRoot a99v46v99v52minBound- (\ p -> T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter)- - gmaxBound pmaxBound p = T.uconstUse pmaxBound p smaxBound- - smaxBound =- T.uconstDef T.mkRoot a99v46v99v52maxBound- (\ p -> T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)- --instance Ix (GeneralCategory)- where- - grange prange p =- T.ufun1 a99v55v99v56range prange p hrange- where- - hrange (T.R (T.Tuple2 fy1 fy2) _) p =- T.uwrapForward p- (Hat.PreludeBasic.hmap (glocalToEnum T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p))) p)- where- - glocalToEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Hat.Prelude.Int GeneralCategory)- - hlocalToEnum :: (T.R Hat.Prelude.Int) -> T.RefExp -> T.R GeneralCategory- - glocalToEnum plocalToEnum p =- T.ufun1 a99v55v99v56localToEnum plocalToEnum p hlocalToEnum- - alocalToEnum = a99v55v99v56localToEnum- - hlocalToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p)- (y1localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p UppercaseLetter aUppercaseLetter- h p = y1localToEnum fv99v55v99v56n p- - hlocalToEnum fv99v55v99v56n p = y1localToEnum fv99v55v99v56n p- - y1localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p)- (y2localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p LowercaseLetter aLowercaseLetter- h p = y2localToEnum fv99v55v99v56n p- - y1localToEnum fv99v55v99v56n p = y2localToEnum fv99v55v99v56n p- - y2localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p)- (y3localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p TitlecaseLetter aTitlecaseLetter- h p = y3localToEnum fv99v55v99v56n p- - y2localToEnum fv99v55v99v56n p = y3localToEnum fv99v55v99v56n p- - y3localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3))) (h p)- (y4localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p ModifierLetter aModifierLetter- h p = y4localToEnum fv99v55v99v56n p- - y3localToEnum fv99v55v99v56n p = y4localToEnum fv99v55v99v56n p- - y4localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4))) (h p)- (y5localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p OtherLetter aOtherLetter- h p = y5localToEnum fv99v55v99v56n p- - y4localToEnum fv99v55v99v56n p = y5localToEnum fv99v55v99v56n p- - y5localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5))) (h p)- (y6localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p NonSpacingMark aNonSpacingMark- h p = y6localToEnum fv99v55v99v56n p- - y5localToEnum fv99v55v99v56n p = y6localToEnum fv99v55v99v56n p- - y6localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6))) (h p)- (y7localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p SpacingCombiningMark aSpacingCombiningMark- h p = y7localToEnum fv99v55v99v56n p- - y6localToEnum fv99v55v99v56n p = y7localToEnum fv99v55v99v56n p- - y7localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7))) (h p)- (y8localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p EnclosingMark aEnclosingMark- h p = y8localToEnum fv99v55v99v56n p- - y7localToEnum fv99v55v99v56n p = y8localToEnum fv99v55v99v56n p- - y8localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8))) (h p)- (y9localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p DecimalNumber aDecimalNumber- h p = y9localToEnum fv99v55v99v56n p- - y8localToEnum fv99v55v99v56n p = y9localToEnum fv99v55v99v56n p- - y9localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9))) (h p)- (y10localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p LetterNumber aLetterNumber- h p = y10localToEnum fv99v55v99v56n p- - y9localToEnum fv99v55v99v56n p = y10localToEnum fv99v55v99v56n p- - y10localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10))) (h p)- (y11localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p OtherNumber aOtherNumber- h p = y11localToEnum fv99v55v99v56n p- - y10localToEnum fv99v55v99v56n p = y11localToEnum fv99v55v99v56n p- - y11localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11))) (h p)- (y12localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p ConnectorPunctuation aConnectorPunctuation- h p = y12localToEnum fv99v55v99v56n p- - y11localToEnum fv99v55v99v56n p = y12localToEnum fv99v55v99v56n p- - y12localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 12))) (h p)- (y13localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p DashPunctuation aDashPunctuation- h p = y13localToEnum fv99v55v99v56n p- - y12localToEnum fv99v55v99v56n p = y13localToEnum fv99v55v99v56n p- - y13localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 13))) (h p)- (y14localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p OpenPunctuation aOpenPunctuation- h p = y14localToEnum fv99v55v99v56n p- - y13localToEnum fv99v55v99v56n p = y14localToEnum fv99v55v99v56n p- - y14localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 14))) (h p)- (y15localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p ClosePunctuation aClosePunctuation- h p = y15localToEnum fv99v55v99v56n p- - y14localToEnum fv99v55v99v56n p = y15localToEnum fv99v55v99v56n p- - y15localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 15))) (h p)- (y16localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p InitialQuote aInitialQuote- h p = y16localToEnum fv99v55v99v56n p- - y15localToEnum fv99v55v99v56n p = y16localToEnum fv99v55v99v56n p- - y16localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 16))) (h p)- (y17localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p FinalQuote aFinalQuote- h p = y17localToEnum fv99v55v99v56n p- - y16localToEnum fv99v55v99v56n p = y17localToEnum fv99v55v99v56n p- - y17localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 17))) (h p)- (y18localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p OtherPunctuation aOtherPunctuation- h p = y18localToEnum fv99v55v99v56n p- - y17localToEnum fv99v55v99v56n p = y18localToEnum fv99v55v99v56n p- - y18localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 18))) (h p)- (y19localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p MathSymbol aMathSymbol- h p = y19localToEnum fv99v55v99v56n p- - y18localToEnum fv99v55v99v56n p = y19localToEnum fv99v55v99v56n p- - y19localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 19))) (h p)- (y20localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p CurrencySymbol aCurrencySymbol- h p = y20localToEnum fv99v55v99v56n p- - y19localToEnum fv99v55v99v56n p = y20localToEnum fv99v55v99v56n p- - y20localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 20))) (h p)- (y21localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p ModifierSymbol aModifierSymbol- h p = y21localToEnum fv99v55v99v56n p- - y20localToEnum fv99v55v99v56n p = y21localToEnum fv99v55v99v56n p- - y21localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 21))) (h p)- (y22localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p OtherSymbol aOtherSymbol- h p = y22localToEnum fv99v55v99v56n p- - y21localToEnum fv99v55v99v56n p = y22localToEnum fv99v55v99v56n p- - y22localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 22))) (h p)- (y23localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p Space aSpace- h p = y23localToEnum fv99v55v99v56n p- - y22localToEnum fv99v55v99v56n p = y23localToEnum fv99v55v99v56n p- - y23localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 23))) (h p)- (y24localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p LineSeparator aLineSeparator- h p = y24localToEnum fv99v55v99v56n p- - y23localToEnum fv99v55v99v56n p = y24localToEnum fv99v55v99v56n p- - y24localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 24))) (h p)- (y25localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p ParagraphSeparator aParagraphSeparator- h p = y25localToEnum fv99v55v99v56n p- - y24localToEnum fv99v55v99v56n p = y25localToEnum fv99v55v99v56n p- - y25localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 25))) (h p)- (y26localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p Control aControl- h p = y26localToEnum fv99v55v99v56n p- - y25localToEnum fv99v55v99v56n p = y26localToEnum fv99v55v99v56n p- - y26localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 26))) (h p)- (y27localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p Format aFormat- h p = y27localToEnum fv99v55v99v56n p- - y26localToEnum fv99v55v99v56n p = y27localToEnum fv99v55v99v56n p- - y27localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 27))) (h p)- (y28localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p Surrogate aSurrogate- h p = y28localToEnum fv99v55v99v56n p- - y27localToEnum fv99v55v99v56n p = y28localToEnum fv99v55v99v56n p- - y28localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 28))) (h p)- (y29localToEnum fv99v55v99v56n p)- where- - h p = T.con0 T.mkNoSrcPos p PrivateUse aPrivateUse- h p = y29localToEnum fv99v55v99v56n p- - y28localToEnum fv99v55v99v56n p = y29localToEnum fv99v55v99v56n p- - y29localToEnum fv99v55v99v56n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv99v55v99v56n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 29))) (h p) (T.fatal p)- where- - h p = T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned- h p = T.fatal p- - y29localToEnum _ p = T.fatal p- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun GeneralCategory Hat.Prelude.Int)- - hlocalFromEnum :: (T.R GeneralCategory) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a99v55v99v56localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a99v55v99v56localFromEnum- - hlocalFromEnum (T.R UppercaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R LowercaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R TitlecaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R ModifierLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R OtherLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R NonSpacingMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R SpacingCombiningMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum (T.R EnclosingMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hlocalFromEnum (T.R DecimalNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hlocalFromEnum (T.R LetterNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hlocalFromEnum (T.R OtherNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hlocalFromEnum (T.R ConnectorPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hlocalFromEnum (T.R DashPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 12)- hlocalFromEnum (T.R OpenPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 13)- hlocalFromEnum (T.R ClosePunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 14)- hlocalFromEnum (T.R InitialQuote _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 15)- hlocalFromEnum (T.R FinalQuote _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 16)- hlocalFromEnum (T.R OtherPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 17)- hlocalFromEnum (T.R MathSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 18)- hlocalFromEnum (T.R CurrencySymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 19)- hlocalFromEnum (T.R ModifierSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 20)- hlocalFromEnum (T.R OtherSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 21)- hlocalFromEnum (T.R Space _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 22)- hlocalFromEnum (T.R LineSeparator _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 23)- hlocalFromEnum (T.R ParagraphSeparator _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 24)- hlocalFromEnum (T.R Control _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 25)- hlocalFromEnum (T.R Format _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 26)- hlocalFromEnum (T.R Surrogate _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 27)- hlocalFromEnum (T.R PrivateUse _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 28)- hlocalFromEnum (T.R NotAssigned _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 29)- hlocalFromEnum _ p = T.fatal p- - hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a99v55v99v56index pindex p hindex- where- - hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!- p)- (T.uwrapForward p (hlocalFromEnum fy3 p))- (T.uwrapForward p (hlocalFromEnum fy1 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun GeneralCategory Hat.Prelude.Int)- - hlocalFromEnum :: (T.R GeneralCategory) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a99v55v99v56localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a99v55v99v56localFromEnum- - hlocalFromEnum (T.R UppercaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R LowercaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R TitlecaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R ModifierLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R OtherLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R NonSpacingMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R SpacingCombiningMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum (T.R EnclosingMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hlocalFromEnum (T.R DecimalNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hlocalFromEnum (T.R LetterNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hlocalFromEnum (T.R OtherNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hlocalFromEnum (T.R ConnectorPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hlocalFromEnum (T.R DashPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 12)- hlocalFromEnum (T.R OpenPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 13)- hlocalFromEnum (T.R ClosePunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 14)- hlocalFromEnum (T.R InitialQuote _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 15)- hlocalFromEnum (T.R FinalQuote _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 16)- hlocalFromEnum (T.R OtherPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 17)- hlocalFromEnum (T.R MathSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 18)- hlocalFromEnum (T.R CurrencySymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 19)- hlocalFromEnum (T.R ModifierSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 20)- hlocalFromEnum (T.R OtherSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 21)- hlocalFromEnum (T.R Space _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 22)- hlocalFromEnum (T.R LineSeparator _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 23)- hlocalFromEnum (T.R ParagraphSeparator _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 24)- hlocalFromEnum (T.R Control _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 25)- hlocalFromEnum (T.R Format _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 26)- hlocalFromEnum (T.R Surrogate _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 27)- hlocalFromEnum (T.R PrivateUse _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 28)- hlocalFromEnum (T.R NotAssigned _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 29)- hlocalFromEnum _ p = T.fatal p- - hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a99v55v99v56inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (Hat.Ix.ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p)))- (T.uwrapForward p (hlocalFromEnum fy3 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun GeneralCategory Hat.Prelude.Int)- - hlocalFromEnum :: (T.R GeneralCategory) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a99v55v99v56localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a99v55v99v56localFromEnum- - hlocalFromEnum (T.R UppercaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R LowercaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R TitlecaseLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R ModifierLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R OtherLetter _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R NonSpacingMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R SpacingCombiningMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum (T.R EnclosingMark _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hlocalFromEnum (T.R DecimalNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hlocalFromEnum (T.R LetterNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hlocalFromEnum (T.R OtherNumber _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hlocalFromEnum (T.R ConnectorPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hlocalFromEnum (T.R DashPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 12)- hlocalFromEnum (T.R OpenPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 13)- hlocalFromEnum (T.R ClosePunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 14)- hlocalFromEnum (T.R InitialQuote _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 15)- hlocalFromEnum (T.R FinalQuote _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 16)- hlocalFromEnum (T.R OtherPunctuation _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 17)- hlocalFromEnum (T.R MathSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 18)- hlocalFromEnum (T.R CurrencySymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 19)- hlocalFromEnum (T.R ModifierSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 20)- hlocalFromEnum (T.R OtherSymbol _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 21)- hlocalFromEnum (T.R Space _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 22)- hlocalFromEnum (T.R LineSeparator _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 23)- hlocalFromEnum (T.R ParagraphSeparator _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 24)- hlocalFromEnum (T.R Control _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 25)- hlocalFromEnum (T.R Format _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 26)- hlocalFromEnum (T.R Surrogate _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 27)- hlocalFromEnum (T.R PrivateUse _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 28)- hlocalFromEnum (T.R NotAssigned _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 29)- hlocalFromEnum _ p = T.fatal p- - hinRange _ _ p = T.fatal p- - --ggenCat :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)--ggenCat pgenCat p = T.ufun1 agenCat pgenCat p hgenCat--hgenCat z1genCat kgenCat =- T.fromInt kgenCat- ((\_ i -> Prelude.fromEnum (Data.Char.generalCategory (Prelude.toEnum i))) Prelude.True- (T.toInt kgenCat z1genCat))--ggeneralCategory :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char GeneralCategory)--hgeneralCategory :: (T.R Char) -> T.RefExp -> T.R GeneralCategory--ggeneralCategory pgeneralCategory p =- T.ufun1 ageneralCategory pgeneralCategory p hgeneralCategory--hgeneralCategory fc p =- T.uwrapForward p- (((gtoEnum T.mkNoSrcPos p)- *$- (T.uwrapForward p- (((ggenCat T.mkNoSrcPos p)- *$- (T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p) fc)) p))) p)--tData_Char = T.mkModule "Data.Char" "Data/Char.hs" Prelude.False--aUppercaseLetter =- T.mkConstructor tData_Char 690011 690025 3 0 "UppercaseLetter"--aLowercaseLetter =- T.mkConstructor tData_Char 700011 700025 3 0 "LowercaseLetter"--aTitlecaseLetter =- T.mkConstructor tData_Char 710011 710025 3 0 "TitlecaseLetter"--aModifierLetter = T.mkConstructor tData_Char 720011 720024 3 0 "ModifierLetter"--aOtherLetter = T.mkConstructor tData_Char 730011 730021 3 0 "OtherLetter"--aNonSpacingMark = T.mkConstructor tData_Char 740011 740024 3 0 "NonSpacingMark"--aSpacingCombiningMark =- T.mkConstructor tData_Char 750011 750030 3 0 "SpacingCombiningMark"--aEnclosingMark = T.mkConstructor tData_Char 760011 760023 3 0 "EnclosingMark"--aDecimalNumber = T.mkConstructor tData_Char 770011 770023 3 0 "DecimalNumber"--aLetterNumber = T.mkConstructor tData_Char 780011 780022 3 0 "LetterNumber"--aOtherNumber = T.mkConstructor tData_Char 790011 790021 3 0 "OtherNumber"--aConnectorPunctuation =- T.mkConstructor tData_Char 800011 800030 3 0 "ConnectorPunctuation"--aDashPunctuation =- T.mkConstructor tData_Char 810011 810025 3 0 "DashPunctuation"--aOpenPunctuation =- T.mkConstructor tData_Char 820011 820025 3 0 "OpenPunctuation"--aClosePunctuation =- T.mkConstructor tData_Char 830011 830026 3 0 "ClosePunctuation"--aInitialQuote = T.mkConstructor tData_Char 840011 840022 3 0 "InitialQuote"--aFinalQuote = T.mkConstructor tData_Char 850011 850020 3 0 "FinalQuote"--aOtherPunctuation =- T.mkConstructor tData_Char 860011 860026 3 0 "OtherPunctuation"--aMathSymbol = T.mkConstructor tData_Char 870011 870020 3 0 "MathSymbol"--aCurrencySymbol = T.mkConstructor tData_Char 880011 880024 3 0 "CurrencySymbol"--aModifierSymbol = T.mkConstructor tData_Char 890011 890024 3 0 "ModifierSymbol"--aOtherSymbol = T.mkConstructor tData_Char 900011 900021 3 0 "OtherSymbol"--aSpace = T.mkConstructor tData_Char 910011 910015 3 0 "Space"--aLineSeparator = T.mkConstructor tData_Char 920011 920023 3 0 "LineSeparator"--aParagraphSeparator =- T.mkConstructor tData_Char 930011 930028 3 0 "ParagraphSeparator"--aControl = T.mkConstructor tData_Char 940011 940017 3 0 "Control"--aFormat = T.mkConstructor tData_Char 950011 950016 3 0 "Format"--aSurrogate = T.mkConstructor tData_Char 960011 960019 3 0 "Surrogate"--aPrivateUse = T.mkConstructor tData_Char 970011 970020 3 0 "PrivateUse"--aNotAssigned = T.mkConstructor tData_Char 980011 980021 3 0 "NotAssigned"--aisLetter = T.mkVariable tData_Char 480001 490026 3 1 "isLetter" Prelude.False--aisMark = T.mkVariable tData_Char 500001 510024 3 1 "isMark" Prelude.False--aisNumber = T.mkVariable tData_Char 520001 530026 3 1 "isNumber" Prelude.False--aisPunctuation =- T.mkVariable tData_Char 540001 550031 3 1 "isPunctuation" Prelude.False--aisSymbol = T.mkVariable tData_Char 560001 570026 3 1 "isSymbol" Prelude.False--aisSeparator =- T.mkVariable tData_Char 580001 590029 3 1 "isSeparator" Prelude.False--aisAsciiUpper =- T.mkVariable tData_Char 600001 610030 3 1 "isAsciiUpper" Prelude.False--aisAsciiLower =- T.mkVariable tData_Char 620001 630030 3 1 "isAsciiLower" Prelude.False--atoTitle = T.mkVariable tData_Char 650001 660025 3 1 "toTitle" Prelude.False--agenCat = T.mkVariable tData_Char 1010001 1030022 3 1 "genCat" Prelude.False--ageneralCategory =- T.mkVariable tData_Char 1060001 1060043 3 1 "generalCategory" Prelude.False--(+>>=#>=>>=$!==) = T.mkVariable tData_Char 990019 990020 3 2 "==" Prelude.False--a99v23v99v25compare =- T.mkVariable tData_Char 990023 990025 3 2 "compare" Prelude.False--a99v28v99v31fromEnum =- T.mkVariable tData_Char 990028 990031 3 1 "fromEnum" Prelude.False--a99v28v99v31toEnum =- T.mkVariable tData_Char 990028 990031 3 1 "toEnum" Prelude.False--a99v28v99v31enumFrom =- T.mkVariable tData_Char 990028 990031 3 1 "enumFrom" Prelude.False--a99v28v99v31enumFromThen =- T.mkVariable tData_Char 990028 990031 3 2 "enumFromThen" Prelude.False--a99v34v99v37readsPrec =- T.mkVariable tData_Char 990034 990037 3 1 "readsPrec" Prelude.False--a99v40v99v43showsPrec =- T.mkVariable tData_Char 990040 990043 3 2 "showsPrec" Prelude.False--a99v46v99v52minBound =- T.mkVariable tData_Char 990046 990052 3 0 "minBound" Prelude.False--a99v46v99v52maxBound =- T.mkVariable tData_Char 990046 990052 3 0 "maxBound" Prelude.False--a99v55v99v56range =- T.mkVariable tData_Char 990055 990056 3 1 "range" Prelude.False--a99v55v99v56index =- T.mkVariable tData_Char 990055 990056 3 2 "index" Prelude.False--a99v55v99v56inRange =- T.mkVariable tData_Char 990055 990056 3 2 "inRange" Prelude.False--a99v23v99v25localFromEnum =- T.mkVariable tData_Char 990023 990025 3 1 "localFromEnum" Prelude.True--a99v55v99v56localToEnum =- T.mkVariable tData_Char 990055 990056 3 1 "localToEnum" Prelude.True--a99v55v99v56localFromEnum =- T.mkVariable tData_Char 990055 990056 3 1 "localFromEnum" Prelude.True+ (Char, String, gisControl, aisControl, hisControl,+ gisSpace, aisSpace, hisSpace, gisLower, aisLower,+ hisLower, gisUpper, aisUpper, hisUpper, gisAlpha,+ aisAlpha, hisAlpha, gisAlphaNum, aisAlphaNum,+ hisAlphaNum, gisPrint, aisPrint, hisPrint, gisDigit,+ aisDigit, hisDigit, gisOctDigit, aisOctDigit,+ hisOctDigit, gisHexDigit, aisHexDigit, hisHexDigit,+ gisLetter, aisLetter, hisLetter, gisMark, aisMark,+ hisMark, gisNumber, aisNumber, hisNumber,+ gisPunctuation, aisPunctuation, hisPunctuation,+ gisSymbol, aisSymbol, hisSymbol, gisSeparator,+ aisSeparator, hisSeparator, gisAscii, aisAscii,+ hisAscii, gisLatin1, aisLatin1, hisLatin1,+ gisAsciiUpper, aisAsciiUpper, hisAsciiUpper,+ gisAsciiLower, aisAsciiLower, hisAsciiLower,+ GeneralCategory(UppercaseLetter, LowercaseLetter,+ TitlecaseLetter, ModifierLetter, OtherLetter,+ NonSpacingMark, SpacingCombiningMark, EnclosingMark,+ DecimalNumber, LetterNumber, OtherNumber,+ ConnectorPunctuation, DashPunctuation,+ OpenPunctuation, ClosePunctuation, InitialQuote,+ FinalQuote, OtherPunctuation, MathSymbol,+ CurrencySymbol, ModifierSymbol, OtherSymbol, Space,+ LineSeparator, ParagraphSeparator, Control, Format,+ Surrogate, PrivateUse, NotAssigned),+ aUppercaseLetter, aLowercaseLetter, aTitlecaseLetter,+ aModifierLetter, aOtherLetter, aNonSpacingMark,+ aSpacingCombiningMark, aEnclosingMark,+ aDecimalNumber, aLetterNumber, aOtherNumber,+ aConnectorPunctuation, aDashPunctuation,+ aOpenPunctuation, aClosePunctuation, aInitialQuote,+ aFinalQuote, aOtherPunctuation, aMathSymbol,+ aCurrencySymbol, aModifierSymbol, aOtherSymbol,+ aSpace, aLineSeparator, aParagraphSeparator,+ aControl, aFormat, aSurrogate, aPrivateUse,+ aNotAssigned, ggeneralCategory, ageneralCategory,+ hgeneralCategory, gtoUpper, atoUpper, htoUpper,+ gtoLower, atoLower, htoLower, gtoTitle, atoTitle,+ htoTitle, gdigitToInt, adigitToInt, hdigitToInt,+ gintToDigit, aintToDigit, hintToDigit, gord, gchr,+ gshowLitChar, ashowLitChar, hshowLitChar,+ glexLitChar, alexLitChar, hlexLitChar, greadLitChar,+ areadLitChar, hreadLitChar)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBasic+import Hat.Ix+import Hat.PreludeBuiltinTypes as T+import qualified Data.Char+ +gisLetter ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisLetter pisLetter p+ = T.ufun1 aisLetter pisLetter p hisLetter+hisLetter z1isLetter kisLetter+ = T.fromBool kisLetter+ (Data.Char.isLetter (T.toChar kisLetter z1isLetter))+ +gisMark ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisMark pisMark p = T.ufun1 aisMark pisMark p hisMark+hisMark z1isMark kisMark+ = T.fromBool kisMark+ (Data.Char.isMark (T.toChar kisMark z1isMark))+ +gisNumber ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisNumber pisNumber p+ = T.ufun1 aisNumber pisNumber p hisNumber+hisNumber z1isNumber kisNumber+ = T.fromBool kisNumber+ (Data.Char.isNumber (T.toChar kisNumber z1isNumber))+ +gisPunctuation ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisPunctuation pisPunctuation p+ = T.ufun1 aisPunctuation pisPunctuation p+ hisPunctuation+hisPunctuation z1isPunctuation kisPunctuation+ = T.fromBool kisPunctuation+ (Data.Char.isPunctuation+ (T.toChar kisPunctuation z1isPunctuation))+ +gisSymbol ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisSymbol pisSymbol p+ = T.ufun1 aisSymbol pisSymbol p hisSymbol+hisSymbol z1isSymbol kisSymbol+ = T.fromBool kisSymbol+ (Data.Char.isSymbol (T.toChar kisSymbol z1isSymbol))+ +gisSeparator ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisSeparator pisSeparator p+ = T.ufun1 aisSeparator pisSeparator p hisSeparator+hisSeparator z1isSeparator kisSeparator+ = T.fromBool kisSeparator+ (Data.Char.isSeparator+ (T.toChar kisSeparator z1isSeparator))+ +gisAsciiUpper ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisAsciiUpper pisAsciiUpper p+ = T.ufun1 aisAsciiUpper pisAsciiUpper p hisAsciiUpper+hisAsciiUpper z1isAsciiUpper kisAsciiUpper+ = T.fromBool kisAsciiUpper+ (Data.Char.isAsciiUpper+ (T.toChar kisAsciiUpper z1isAsciiUpper))+ +gisAsciiLower ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisAsciiLower pisAsciiLower p+ = T.ufun1 aisAsciiLower pisAsciiLower p hisAsciiLower+hisAsciiLower z1isAsciiLower kisAsciiLower+ = T.fromBool kisAsciiLower+ (Data.Char.isAsciiLower+ (T.toChar kisAsciiLower z1isAsciiLower))+ +gtoTitle ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Char)+gtoTitle ptoTitle p+ = T.ufun1 atoTitle ptoTitle p htoTitle+htoTitle z1toTitle ktoTitle+ = T.fromChar ktoTitle+ (Data.Char.toTitle (T.toChar ktoTitle z1toTitle))+ +data GeneralCategory = UppercaseLetter+ | LowercaseLetter+ | TitlecaseLetter+ | ModifierLetter+ | OtherLetter+ | NonSpacingMark+ | SpacingCombiningMark+ | EnclosingMark+ | DecimalNumber+ | LetterNumber+ | OtherNumber+ | ConnectorPunctuation+ | DashPunctuation+ | OpenPunctuation+ | ClosePunctuation+ | InitialQuote+ | FinalQuote+ | OtherPunctuation+ | MathSymbol+ | CurrencySymbol+ | ModifierSymbol+ | OtherSymbol+ | Space+ | LineSeparator+ | ParagraphSeparator+ | Control+ | Format+ | Surrogate+ | PrivateUse+ | NotAssigned+ +instance T.WrapVal GeneralCategory where+ wrapVal pwrapVal kwrapVal@UppercaseLetter p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aUppercaseLetter)+ wrapVal pwrapVal kwrapVal@LowercaseLetter p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aLowercaseLetter)+ wrapVal pwrapVal kwrapVal@TitlecaseLetter p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aTitlecaseLetter)+ wrapVal pwrapVal kwrapVal@ModifierLetter p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aModifierLetter)+ wrapVal pwrapVal kwrapVal@OtherLetter p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aOtherLetter)+ wrapVal pwrapVal kwrapVal@NonSpacingMark p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aNonSpacingMark)+ wrapVal pwrapVal kwrapVal@SpacingCombiningMark p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aSpacingCombiningMark)+ wrapVal pwrapVal kwrapVal@EnclosingMark p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aEnclosingMark)+ wrapVal pwrapVal kwrapVal@DecimalNumber p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aDecimalNumber)+ wrapVal pwrapVal kwrapVal@LetterNumber p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aLetterNumber)+ wrapVal pwrapVal kwrapVal@OtherNumber p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aOtherNumber)+ wrapVal pwrapVal kwrapVal@ConnectorPunctuation p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aConnectorPunctuation)+ wrapVal pwrapVal kwrapVal@DashPunctuation p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aDashPunctuation)+ wrapVal pwrapVal kwrapVal@OpenPunctuation p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aOpenPunctuation)+ wrapVal pwrapVal kwrapVal@ClosePunctuation p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aClosePunctuation)+ wrapVal pwrapVal kwrapVal@InitialQuote p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aInitialQuote)+ wrapVal pwrapVal kwrapVal@FinalQuote p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aFinalQuote)+ wrapVal pwrapVal kwrapVal@OtherPunctuation p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aOtherPunctuation)+ wrapVal pwrapVal kwrapVal@MathSymbol p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aMathSymbol)+ wrapVal pwrapVal kwrapVal@CurrencySymbol p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aCurrencySymbol)+ wrapVal pwrapVal kwrapVal@ModifierSymbol p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aModifierSymbol)+ wrapVal pwrapVal kwrapVal@OtherSymbol p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aOtherSymbol)+ wrapVal pwrapVal kwrapVal@Space p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aSpace)+ wrapVal pwrapVal kwrapVal@LineSeparator p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aLineSeparator)+ wrapVal pwrapVal kwrapVal@ParagraphSeparator p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aParagraphSeparator)+ wrapVal pwrapVal kwrapVal@Control p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aControl)+ wrapVal pwrapVal kwrapVal@Format p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aFormat)+ wrapVal pwrapVal kwrapVal@Surrogate p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aSurrogate)+ wrapVal pwrapVal kwrapVal@PrivateUse p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aPrivateUse)+ wrapVal pwrapVal kwrapVal@NotAssigned p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aNotAssigned)+ +instance Eq GeneralCategory where+ (%==) !== p = T.ufun2 (+>>=#>=>>=$!==) (%==) p (*==)+ where (T.R UppercaseLetter _ *==+ T.R UppercaseLetter _)+ p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R LowercaseLetter _ *== T.R LowercaseLetter _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R TitlecaseLetter _ *== T.R TitlecaseLetter _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R ModifierLetter _ *== T.R ModifierLetter _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R OtherLetter _ *== T.R OtherLetter _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R NonSpacingMark _ *== T.R NonSpacingMark _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R SpacingCombiningMark _ *==+ T.R SpacingCombiningMark _)+ p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R EnclosingMark _ *== T.R EnclosingMark _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R DecimalNumber _ *== T.R DecimalNumber _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R LetterNumber _ *== T.R LetterNumber _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R OtherNumber _ *== T.R OtherNumber _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R ConnectorPunctuation _ *==+ T.R ConnectorPunctuation _)+ p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R DashPunctuation _ *== T.R DashPunctuation _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R OpenPunctuation _ *== T.R OpenPunctuation _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R ClosePunctuation _ *== T.R ClosePunctuation _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R InitialQuote _ *== T.R InitialQuote _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R FinalQuote _ *== T.R FinalQuote _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R OtherPunctuation _ *== T.R OtherPunctuation _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R MathSymbol _ *== T.R MathSymbol _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R CurrencySymbol _ *== T.R CurrencySymbol _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R ModifierSymbol _ *== T.R ModifierSymbol _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R OtherSymbol _ *== T.R OtherSymbol _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Space _ *== T.R Space _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R LineSeparator _ *== T.R LineSeparator _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R ParagraphSeparator _ *==+ T.R ParagraphSeparator _)+ p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Control _ *== T.R Control _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Format _ *== T.R Format _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Surrogate _ *== T.R Surrogate _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R PrivateUse _ *== T.R PrivateUse _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R NotAssigned _ *== T.R NotAssigned _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord GeneralCategory where+ gcompare pcompare p+ = T.ufun2 c99v23v99v25compare pcompare p hcompare+ where hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c99v23v99v25localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c99v23v99v25localFromEnum+ hlocalFromEnum (T.R UppercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R LowercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R TitlecaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R ModifierLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R OtherLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R NonSpacingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R SpacingCombiningMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R EnclosingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R DecimalNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R LetterNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R OtherNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R ConnectorPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R DashPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (12))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R OpenPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (13))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R ClosePunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (14))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R InitialQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (15))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R FinalQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (16))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R OtherPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (17))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R MathSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (18))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R CurrencySymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (19))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R ModifierSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (20))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R OtherSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (21))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Space _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (22))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R LineSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (23))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R ParagraphSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (24))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Control _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (25))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Format _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (26))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Surrogate _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (27))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R PrivateUse _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (28))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R NotAssigned _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (29))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Enum GeneralCategory where+ gfromEnum pfromEnum p+ = T.ufun1 c99v28v99v31fromEnum pfromEnum p hfromEnum+ where hfromEnum (T.R UppercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hfromEnum (T.R LowercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hfromEnum (T.R TitlecaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hfromEnum (T.R ModifierLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hfromEnum (T.R OtherLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hfromEnum (T.R NonSpacingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hfromEnum (T.R SpacingCombiningMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hfromEnum (T.R EnclosingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ hfromEnum (T.R DecimalNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ hfromEnum (T.R LetterNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ hfromEnum (T.R OtherNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ hfromEnum (T.R ConnectorPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ hfromEnum (T.R DashPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (12))+ hfromEnum (T.R OpenPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (13))+ hfromEnum (T.R ClosePunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (14))+ hfromEnum (T.R InitialQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (15))+ hfromEnum (T.R FinalQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (16))+ hfromEnum (T.R OtherPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (17))+ hfromEnum (T.R MathSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (18))+ hfromEnum (T.R CurrencySymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (19))+ hfromEnum (T.R ModifierSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (20))+ hfromEnum (T.R OtherSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (21))+ hfromEnum (T.R Space _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (22))+ hfromEnum (T.R LineSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (23))+ hfromEnum (T.R ParagraphSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (24))+ hfromEnum (T.R Control _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (25))+ hfromEnum (T.R Format _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (26))+ hfromEnum (T.R Surrogate _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (27))+ hfromEnum (T.R PrivateUse _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (28))+ hfromEnum (T.R NotAssigned _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (29))+ hfromEnum _ p = T.fatal p+ gtoEnum ptoEnum p+ = T.ufun1 c99v28v99v31toEnum ptoEnum p htoEnum+ where htoEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h99v28v99v31n p)+ (y1toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p UppercaseLetter+ aUppercaseLetter+ h99v28v99v31n p = y1toEnum fv99v28v99v31n p+ htoEnum fv99v28v99v31n p = y1toEnum fv99v28v99v31n p+ y1toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h99v28v99v31n p)+ (y2toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p LowercaseLetter+ aLowercaseLetter+ h99v28v99v31n p = y2toEnum fv99v28v99v31n p+ y1toEnum fv99v28v99v31n p = y2toEnum fv99v28v99v31n p+ y2toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h99v28v99v31n p)+ (y3toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p TitlecaseLetter+ aTitlecaseLetter+ h99v28v99v31n p = y3toEnum fv99v28v99v31n p+ y2toEnum fv99v28v99v31n p = y3toEnum fv99v28v99v31n p+ y3toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))))+ (h99v28v99v31n p)+ (y4toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p ModifierLetter+ aModifierLetter+ h99v28v99v31n p = y4toEnum fv99v28v99v31n p+ y3toEnum fv99v28v99v31n p = y4toEnum fv99v28v99v31n p+ y4toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))))+ (h99v28v99v31n p)+ (y5toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p OtherLetter aOtherLetter+ h99v28v99v31n p = y5toEnum fv99v28v99v31n p+ y4toEnum fv99v28v99v31n p = y5toEnum fv99v28v99v31n p+ y5toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))))+ (h99v28v99v31n p)+ (y6toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p NonSpacingMark+ aNonSpacingMark+ h99v28v99v31n p = y6toEnum fv99v28v99v31n p+ y5toEnum fv99v28v99v31n p = y6toEnum fv99v28v99v31n p+ y6toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))))+ (h99v28v99v31n p)+ (y7toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p SpacingCombiningMark+ aSpacingCombiningMark+ h99v28v99v31n p = y7toEnum fv99v28v99v31n p+ y6toEnum fv99v28v99v31n p = y7toEnum fv99v28v99v31n p+ y7toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))))+ (h99v28v99v31n p)+ (y8toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p EnclosingMark aEnclosingMark+ h99v28v99v31n p = y8toEnum fv99v28v99v31n p+ y7toEnum fv99v28v99v31n p = y8toEnum fv99v28v99v31n p+ y8toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))))+ (h99v28v99v31n p)+ (y9toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p DecimalNumber aDecimalNumber+ h99v28v99v31n p = y9toEnum fv99v28v99v31n p+ y8toEnum fv99v28v99v31n p = y9toEnum fv99v28v99v31n p+ y9toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (h99v28v99v31n p)+ (y10toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p LetterNumber aLetterNumber+ h99v28v99v31n p = y10toEnum fv99v28v99v31n p+ y9toEnum fv99v28v99v31n p+ = y10toEnum fv99v28v99v31n p+ y10toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))))+ (h99v28v99v31n p)+ (y11toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p OtherNumber aOtherNumber+ h99v28v99v31n p = y11toEnum fv99v28v99v31n p+ y10toEnum fv99v28v99v31n p+ = y11toEnum fv99v28v99v31n p+ y11toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))))+ (h99v28v99v31n p)+ (y12toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p ConnectorPunctuation+ aConnectorPunctuation+ h99v28v99v31n p = y12toEnum fv99v28v99v31n p+ y11toEnum fv99v28v99v31n p+ = y12toEnum fv99v28v99v31n p+ y12toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (12))))+ (h99v28v99v31n p)+ (y13toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p DashPunctuation+ aDashPunctuation+ h99v28v99v31n p = y13toEnum fv99v28v99v31n p+ y12toEnum fv99v28v99v31n p+ = y13toEnum fv99v28v99v31n p+ y13toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (13))))+ (h99v28v99v31n p)+ (y14toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p OpenPunctuation+ aOpenPunctuation+ h99v28v99v31n p = y14toEnum fv99v28v99v31n p+ y13toEnum fv99v28v99v31n p+ = y14toEnum fv99v28v99v31n p+ y14toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (14))))+ (h99v28v99v31n p)+ (y15toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p ClosePunctuation+ aClosePunctuation+ h99v28v99v31n p = y15toEnum fv99v28v99v31n p+ y14toEnum fv99v28v99v31n p+ = y15toEnum fv99v28v99v31n p+ y15toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (15))))+ (h99v28v99v31n p)+ (y16toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p InitialQuote aInitialQuote+ h99v28v99v31n p = y16toEnum fv99v28v99v31n p+ y15toEnum fv99v28v99v31n p+ = y16toEnum fv99v28v99v31n p+ y16toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (16))))+ (h99v28v99v31n p)+ (y17toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p FinalQuote aFinalQuote+ h99v28v99v31n p = y17toEnum fv99v28v99v31n p+ y16toEnum fv99v28v99v31n p+ = y17toEnum fv99v28v99v31n p+ y17toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (17))))+ (h99v28v99v31n p)+ (y18toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p OtherPunctuation+ aOtherPunctuation+ h99v28v99v31n p = y18toEnum fv99v28v99v31n p+ y17toEnum fv99v28v99v31n p+ = y18toEnum fv99v28v99v31n p+ y18toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (18))))+ (h99v28v99v31n p)+ (y19toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p MathSymbol aMathSymbol+ h99v28v99v31n p = y19toEnum fv99v28v99v31n p+ y18toEnum fv99v28v99v31n p+ = y19toEnum fv99v28v99v31n p+ y19toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (19))))+ (h99v28v99v31n p)+ (y20toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p CurrencySymbol+ aCurrencySymbol+ h99v28v99v31n p = y20toEnum fv99v28v99v31n p+ y19toEnum fv99v28v99v31n p+ = y20toEnum fv99v28v99v31n p+ y20toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (20))))+ (h99v28v99v31n p)+ (y21toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p ModifierSymbol+ aModifierSymbol+ h99v28v99v31n p = y21toEnum fv99v28v99v31n p+ y20toEnum fv99v28v99v31n p+ = y21toEnum fv99v28v99v31n p+ y21toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (21))))+ (h99v28v99v31n p)+ (y22toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p OtherSymbol aOtherSymbol+ h99v28v99v31n p = y22toEnum fv99v28v99v31n p+ y21toEnum fv99v28v99v31n p+ = y22toEnum fv99v28v99v31n p+ y22toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (22))))+ (h99v28v99v31n p)+ (y23toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p Space aSpace+ h99v28v99v31n p = y23toEnum fv99v28v99v31n p+ y22toEnum fv99v28v99v31n p+ = y23toEnum fv99v28v99v31n p+ y23toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (23))))+ (h99v28v99v31n p)+ (y24toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p LineSeparator aLineSeparator+ h99v28v99v31n p = y24toEnum fv99v28v99v31n p+ y23toEnum fv99v28v99v31n p+ = y24toEnum fv99v28v99v31n p+ y24toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (24))))+ (h99v28v99v31n p)+ (y25toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p ParagraphSeparator+ aParagraphSeparator+ h99v28v99v31n p = y25toEnum fv99v28v99v31n p+ y24toEnum fv99v28v99v31n p+ = y25toEnum fv99v28v99v31n p+ y25toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (25))))+ (h99v28v99v31n p)+ (y26toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p Control aControl+ h99v28v99v31n p = y26toEnum fv99v28v99v31n p+ y25toEnum fv99v28v99v31n p+ = y26toEnum fv99v28v99v31n p+ y26toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (26))))+ (h99v28v99v31n p)+ (y27toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p Format aFormat+ h99v28v99v31n p = y27toEnum fv99v28v99v31n p+ y26toEnum fv99v28v99v31n p+ = y27toEnum fv99v28v99v31n p+ y27toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (27))))+ (h99v28v99v31n p)+ (y28toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p Surrogate aSurrogate+ h99v28v99v31n p = y28toEnum fv99v28v99v31n p+ y27toEnum fv99v28v99v31n p+ = y28toEnum fv99v28v99v31n p+ y28toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (28))))+ (h99v28v99v31n p)+ (y29toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p PrivateUse aPrivateUse+ h99v28v99v31n p = y29toEnum fv99v28v99v31n p+ y28toEnum fv99v28v99v31n p+ = y29toEnum fv99v28v99v31n p+ y29toEnum fv99v28v99v31n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v28v99v31n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (29))))+ (h99v28v99v31n p)+ (y30toEnum fv99v28v99v31n p)+ where h99v28v99v31n p+ = T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned+ h99v28v99v31n p = y30toEnum fv99v28v99v31n p+ y29toEnum fv99v28v99v31n p+ = y30toEnum fv99v28v99v31n p+ y30toEnum _ p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "toEnum: argument out of bounds")+ p)+ genumFrom penumFrom p+ = T.ufun1 c99v28v99v31enumFrom penumFrom p henumFrom+ where henumFrom fy1 p+ = T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ fy1+ (T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)+ genumFromThen penumFromThen p+ = T.ufun2 c99v28v99v31enumFromThen penumFromThen p+ henumFromThen+ where henumFromThen fy1 fy2 p+ = T.uap3 T.mkNoSrcPos p+ (genumFromThenTo T.mkNoSrcPos p)+ fy1+ fy2+ (T.ucif p+ (T.uap2 T.mkNoSrcPos p ((!>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy2)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy1))+ (T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)+ (T.con0 T.mkNoSrcPos p UppercaseLetter+ aUppercaseLetter))+ +instance Read GeneralCategory where+ greadsPrec preadsPrec p+ = T.ufun1 c99v34v99v37readsPrec preadsPrec p+ hreadsPrec+ where hreadsPrec fy1 p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p UppercaseLetter+ aUppercaseLetter))+ (T.fromLitString T.mkNoSrcPos p+ "UppercaseLetter")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p LowercaseLetter+ aLowercaseLetter))+ (T.fromLitString T.mkNoSrcPos p+ "LowercaseLetter")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ TitlecaseLetter+ aTitlecaseLetter))+ (T.fromLitString T.mkNoSrcPos p+ "TitlecaseLetter")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ ModifierLetter+ aModifierLetter))+ (T.fromLitString T.mkNoSrcPos p+ "ModifierLetter")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ OtherLetter+ aOtherLetter))+ (T.fromLitString T.mkNoSrcPos p+ "OtherLetter")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ NonSpacingMark+ aNonSpacingMark))+ (T.fromLitString T.mkNoSrcPos p+ "NonSpacingMark")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ SpacingCombiningMark+ aSpacingCombiningMark))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "SpacingCombiningMark")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ EnclosingMark+ aEnclosingMark))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "EnclosingMark")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ DecimalNumber+ aDecimalNumber))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "DecimalNumber")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ LetterNumber+ aLetterNumber))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "LetterNumber")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ OtherNumber+ aOtherNumber))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "OtherNumber")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ ConnectorPunctuation+ aConnectorPunctuation))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ConnectorPunctuation")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ DashPunctuation+ aDashPunctuation))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "DashPunctuation")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ OpenPunctuation+ aOpenPunctuation))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "OpenPunctuation")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ ClosePunctuation+ aClosePunctuation))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ClosePunctuation")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ InitialQuote+ aInitialQuote))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "InitialQuote")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ FinalQuote+ aFinalQuote))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "FinalQuote")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ OtherPunctuation+ aOtherPunctuation))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "OtherPunctuation")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ MathSymbol+ aMathSymbol))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "MathSymbol")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ CurrencySymbol+ aCurrencySymbol))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "CurrencySymbol")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ ModifierSymbol+ aModifierSymbol))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ModifierSymbol")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ OtherSymbol+ aOtherSymbol))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "OtherSymbol")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ Space+ aSpace))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Space")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ LineSeparator+ aLineSeparator))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "LineSeparator")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ ParagraphSeparator+ aParagraphSeparator))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ParagraphSeparator")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ Control+ aControl))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Control")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ Format+ aFormat))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Format")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ Surrogate+ aSurrogate))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Surrogate")+ p))+ p))+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ PrivateUse+ aPrivateUse))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "PrivateUse")+ p))+ p))+ (T.uwrapForward+ p+ (hreadParen+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ NotAssigned+ aNotAssigned))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "NotAssigned")+ p))+ p))))))))))))))))))))))))))))))+ +instance Show GeneralCategory where+ gshowsPrec pshowsPrec p+ = T.ufun2 c99v40v99v43showsPrec pshowsPrec p+ hshowsPrec+ where hshowsPrec fy1 (T.R UppercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "UppercaseLetter")+ hshowsPrec fy1 (T.R LowercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "LowercaseLetter")+ hshowsPrec fy1 (T.R TitlecaseLetter _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "TitlecaseLetter")+ hshowsPrec fy1 (T.R ModifierLetter _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "ModifierLetter")+ hshowsPrec fy1 (T.R OtherLetter _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "OtherLetter")+ hshowsPrec fy1 (T.R NonSpacingMark _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "NonSpacingMark")+ hshowsPrec fy1 (T.R SpacingCombiningMark _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "SpacingCombiningMark")+ hshowsPrec fy1 (T.R EnclosingMark _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "EnclosingMark")+ hshowsPrec fy1 (T.R DecimalNumber _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "DecimalNumber")+ hshowsPrec fy1 (T.R LetterNumber _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "LetterNumber")+ hshowsPrec fy1 (T.R OtherNumber _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "OtherNumber")+ hshowsPrec fy1 (T.R ConnectorPunctuation _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "ConnectorPunctuation")+ hshowsPrec fy1 (T.R DashPunctuation _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "DashPunctuation")+ hshowsPrec fy1 (T.R OpenPunctuation _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "OpenPunctuation")+ hshowsPrec fy1 (T.R ClosePunctuation _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "ClosePunctuation")+ hshowsPrec fy1 (T.R InitialQuote _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "InitialQuote")+ hshowsPrec fy1 (T.R FinalQuote _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "FinalQuote")+ hshowsPrec fy1 (T.R OtherPunctuation _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "OtherPunctuation")+ hshowsPrec fy1 (T.R MathSymbol _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "MathSymbol")+ hshowsPrec fy1 (T.R CurrencySymbol _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "CurrencySymbol")+ hshowsPrec fy1 (T.R ModifierSymbol _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "ModifierSymbol")+ hshowsPrec fy1 (T.R OtherSymbol _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "OtherSymbol")+ hshowsPrec fy1 (T.R Space _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Space")+ hshowsPrec fy1 (T.R LineSeparator _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "LineSeparator")+ hshowsPrec fy1 (T.R ParagraphSeparator _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "ParagraphSeparator")+ hshowsPrec fy1 (T.R Control _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Control")+ hshowsPrec fy1 (T.R Format _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Format")+ hshowsPrec fy1 (T.R Surrogate _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Surrogate")+ hshowsPrec fy1 (T.R PrivateUse _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "PrivateUse")+ hshowsPrec fy1 (T.R NotAssigned _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "NotAssigned")+ hshowsPrec _ _ p = T.fatal p+ +instance Bounded GeneralCategory where+ gminBound pminBound p+ = T.uconstUse pminBound p sminBound+ sminBound+ = T.uconstDef p c99v46v99v52minBound+ (\ p ->+ T.con0 T.mkNoSrcPos p UppercaseLetter+ aUppercaseLetter)+ gmaxBound pmaxBound p+ = T.uconstUse pmaxBound p smaxBound+ smaxBound+ = T.uconstDef p c99v46v99v52maxBound+ (\ p ->+ T.con0 T.mkNoSrcPos p NotAssigned aNotAssigned)+ +instance Ix GeneralCategory where+ grange prange p+ = T.ufun1 c99v55v99v56range prange p hrange+ where hrange (T.R (T.Tuple2 fy1 fy2) _) p+ = T.uwrapForward p+ (hmap (grtoEnum T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ (T.uwrapForward p (hrfromEnum fy1 p))+ (T.uwrapForward p (hrfromEnum fy2 p)))+ p)+ where + grtoEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int GeneralCategory)+ + hrtoEnum ::+ T.R Int -> T.RefExp -> T.R GeneralCategory+ grtoEnum prtoEnum p+ = T.ufun1 c99v55v99v56rtoEnum prtoEnum p hrtoEnum+ artoEnum = c99v55v99v56rtoEnum+ hrtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h99v55v99v56n p)+ (y1rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p UppercaseLetter+ aUppercaseLetter+ h99v55v99v56n p = y1rtoEnum fv99v55v99v56n p+ hrtoEnum fv99v55v99v56n p+ = y1rtoEnum fv99v55v99v56n p+ y1rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h99v55v99v56n p)+ (y2rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p LowercaseLetter+ aLowercaseLetter+ h99v55v99v56n p = y2rtoEnum fv99v55v99v56n p+ y1rtoEnum fv99v55v99v56n p+ = y2rtoEnum fv99v55v99v56n p+ y2rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h99v55v99v56n p)+ (y3rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p TitlecaseLetter+ aTitlecaseLetter+ h99v55v99v56n p = y3rtoEnum fv99v55v99v56n p+ y2rtoEnum fv99v55v99v56n p+ = y3rtoEnum fv99v55v99v56n p+ y3rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (3))))+ (h99v55v99v56n p)+ (y4rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p ModifierLetter+ aModifierLetter+ h99v55v99v56n p = y4rtoEnum fv99v55v99v56n p+ y3rtoEnum fv99v55v99v56n p+ = y4rtoEnum fv99v55v99v56n p+ y4rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (4))))+ (h99v55v99v56n p)+ (y5rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p OtherLetter+ aOtherLetter+ h99v55v99v56n p = y5rtoEnum fv99v55v99v56n p+ y4rtoEnum fv99v55v99v56n p+ = y5rtoEnum fv99v55v99v56n p+ y5rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (5))))+ (h99v55v99v56n p)+ (y6rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p NonSpacingMark+ aNonSpacingMark+ h99v55v99v56n p = y6rtoEnum fv99v55v99v56n p+ y5rtoEnum fv99v55v99v56n p+ = y6rtoEnum fv99v55v99v56n p+ y6rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (6))))+ (h99v55v99v56n p)+ (y7rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p SpacingCombiningMark+ aSpacingCombiningMark+ h99v55v99v56n p = y7rtoEnum fv99v55v99v56n p+ y6rtoEnum fv99v55v99v56n p+ = y7rtoEnum fv99v55v99v56n p+ y7rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (7))))+ (h99v55v99v56n p)+ (y8rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p EnclosingMark+ aEnclosingMark+ h99v55v99v56n p = y8rtoEnum fv99v55v99v56n p+ y7rtoEnum fv99v55v99v56n p+ = y8rtoEnum fv99v55v99v56n p+ y8rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (8))))+ (h99v55v99v56n p)+ (y9rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p DecimalNumber+ aDecimalNumber+ h99v55v99v56n p = y9rtoEnum fv99v55v99v56n p+ y8rtoEnum fv99v55v99v56n p+ = y9rtoEnum fv99v55v99v56n p+ y9rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (h99v55v99v56n p)+ (y10rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p LetterNumber+ aLetterNumber+ h99v55v99v56n p = y10rtoEnum fv99v55v99v56n p+ y9rtoEnum fv99v55v99v56n p+ = y10rtoEnum fv99v55v99v56n p+ y10rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (10))))+ (h99v55v99v56n p)+ (y11rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p OtherNumber+ aOtherNumber+ h99v55v99v56n p = y11rtoEnum fv99v55v99v56n p+ y10rtoEnum fv99v55v99v56n p+ = y11rtoEnum fv99v55v99v56n p+ y11rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (11))))+ (h99v55v99v56n p)+ (y12rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p ConnectorPunctuation+ aConnectorPunctuation+ h99v55v99v56n p = y12rtoEnum fv99v55v99v56n p+ y11rtoEnum fv99v55v99v56n p+ = y12rtoEnum fv99v55v99v56n p+ y12rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (12))))+ (h99v55v99v56n p)+ (y13rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p DashPunctuation+ aDashPunctuation+ h99v55v99v56n p = y13rtoEnum fv99v55v99v56n p+ y12rtoEnum fv99v55v99v56n p+ = y13rtoEnum fv99v55v99v56n p+ y13rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (13))))+ (h99v55v99v56n p)+ (y14rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p OpenPunctuation+ aOpenPunctuation+ h99v55v99v56n p = y14rtoEnum fv99v55v99v56n p+ y13rtoEnum fv99v55v99v56n p+ = y14rtoEnum fv99v55v99v56n p+ y14rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (14))))+ (h99v55v99v56n p)+ (y15rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p ClosePunctuation+ aClosePunctuation+ h99v55v99v56n p = y15rtoEnum fv99v55v99v56n p+ y14rtoEnum fv99v55v99v56n p+ = y15rtoEnum fv99v55v99v56n p+ y15rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (15))))+ (h99v55v99v56n p)+ (y16rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p InitialQuote+ aInitialQuote+ h99v55v99v56n p = y16rtoEnum fv99v55v99v56n p+ y15rtoEnum fv99v55v99v56n p+ = y16rtoEnum fv99v55v99v56n p+ y16rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (16))))+ (h99v55v99v56n p)+ (y17rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p FinalQuote aFinalQuote+ h99v55v99v56n p = y17rtoEnum fv99v55v99v56n p+ y16rtoEnum fv99v55v99v56n p+ = y17rtoEnum fv99v55v99v56n p+ y17rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (17))))+ (h99v55v99v56n p)+ (y18rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p OtherPunctuation+ aOtherPunctuation+ h99v55v99v56n p = y18rtoEnum fv99v55v99v56n p+ y17rtoEnum fv99v55v99v56n p+ = y18rtoEnum fv99v55v99v56n p+ y18rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (18))))+ (h99v55v99v56n p)+ (y19rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p MathSymbol aMathSymbol+ h99v55v99v56n p = y19rtoEnum fv99v55v99v56n p+ y18rtoEnum fv99v55v99v56n p+ = y19rtoEnum fv99v55v99v56n p+ y19rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (19))))+ (h99v55v99v56n p)+ (y20rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p CurrencySymbol+ aCurrencySymbol+ h99v55v99v56n p = y20rtoEnum fv99v55v99v56n p+ y19rtoEnum fv99v55v99v56n p+ = y20rtoEnum fv99v55v99v56n p+ y20rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (20))))+ (h99v55v99v56n p)+ (y21rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p ModifierSymbol+ aModifierSymbol+ h99v55v99v56n p = y21rtoEnum fv99v55v99v56n p+ y20rtoEnum fv99v55v99v56n p+ = y21rtoEnum fv99v55v99v56n p+ y21rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (21))))+ (h99v55v99v56n p)+ (y22rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p OtherSymbol+ aOtherSymbol+ h99v55v99v56n p = y22rtoEnum fv99v55v99v56n p+ y21rtoEnum fv99v55v99v56n p+ = y22rtoEnum fv99v55v99v56n p+ y22rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (22))))+ (h99v55v99v56n p)+ (y23rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p Space aSpace+ h99v55v99v56n p = y23rtoEnum fv99v55v99v56n p+ y22rtoEnum fv99v55v99v56n p+ = y23rtoEnum fv99v55v99v56n p+ y23rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (23))))+ (h99v55v99v56n p)+ (y24rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p LineSeparator+ aLineSeparator+ h99v55v99v56n p = y24rtoEnum fv99v55v99v56n p+ y23rtoEnum fv99v55v99v56n p+ = y24rtoEnum fv99v55v99v56n p+ y24rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (24))))+ (h99v55v99v56n p)+ (y25rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p ParagraphSeparator+ aParagraphSeparator+ h99v55v99v56n p = y25rtoEnum fv99v55v99v56n p+ y24rtoEnum fv99v55v99v56n p+ = y25rtoEnum fv99v55v99v56n p+ y25rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (25))))+ (h99v55v99v56n p)+ (y26rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p Control aControl+ h99v55v99v56n p = y26rtoEnum fv99v55v99v56n p+ y25rtoEnum fv99v55v99v56n p+ = y26rtoEnum fv99v55v99v56n p+ y26rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (26))))+ (h99v55v99v56n p)+ (y27rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p Format aFormat+ h99v55v99v56n p = y27rtoEnum fv99v55v99v56n p+ y26rtoEnum fv99v55v99v56n p+ = y27rtoEnum fv99v55v99v56n p+ y27rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (27))))+ (h99v55v99v56n p)+ (y28rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p Surrogate aSurrogate+ h99v55v99v56n p = y28rtoEnum fv99v55v99v56n p+ y27rtoEnum fv99v55v99v56n p+ = y28rtoEnum fv99v55v99v56n p+ y28rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (28))))+ (h99v55v99v56n p)+ (y29rtoEnum fv99v55v99v56n p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p PrivateUse aPrivateUse+ h99v55v99v56n p = y29rtoEnum fv99v55v99v56n p+ y28rtoEnum fv99v55v99v56n p+ = y29rtoEnum fv99v55v99v56n p+ y29rtoEnum fv99v55v99v56n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv99v55v99v56n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (29))))+ (h99v55v99v56n p)+ (T.fatal p)+ where h99v55v99v56n p+ = T.con0 T.mkNoSrcPos p NotAssigned+ aNotAssigned+ h99v55v99v56n p = T.fatal p+ y29rtoEnum _ p = T.fatal p+ + grfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun GeneralCategory Int)+ + hrfromEnum ::+ T.R GeneralCategory -> T.RefExp -> T.R Int+ grfromEnum prfromEnum p+ = T.ufun1 c99v55v99v56rfromEnum prfromEnum p+ hrfromEnum+ arfromEnum = c99v55v99v56rfromEnum+ hrfromEnum (T.R UppercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hrfromEnum (T.R LowercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hrfromEnum (T.R TitlecaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hrfromEnum (T.R ModifierLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hrfromEnum (T.R OtherLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hrfromEnum (T.R NonSpacingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hrfromEnum (T.R SpacingCombiningMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hrfromEnum (T.R EnclosingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ hrfromEnum (T.R DecimalNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ hrfromEnum (T.R LetterNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ hrfromEnum (T.R OtherNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ hrfromEnum (T.R ConnectorPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ hrfromEnum (T.R DashPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (12))+ hrfromEnum (T.R OpenPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (13))+ hrfromEnum (T.R ClosePunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (14))+ hrfromEnum (T.R InitialQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (15))+ hrfromEnum (T.R FinalQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (16))+ hrfromEnum (T.R OtherPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (17))+ hrfromEnum (T.R MathSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (18))+ hrfromEnum (T.R CurrencySymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (19))+ hrfromEnum (T.R ModifierSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (20))+ hrfromEnum (T.R OtherSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (21))+ hrfromEnum (T.R Space _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (22))+ hrfromEnum (T.R LineSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (23))+ hrfromEnum (T.R ParagraphSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (24))+ hrfromEnum (T.R Control _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (25))+ hrfromEnum (T.R Format _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (26))+ hrfromEnum (T.R Surrogate _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (27))+ hrfromEnum (T.R PrivateUse _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (28))+ hrfromEnum (T.R NotAssigned _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (29))+ hrfromEnum _ p = T.fatal p+ gindex pindex p+ = T.ufun2 c99v55v99v56index pindex p hindex+ where hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uwrapForward p (hifromEnum fy3 p))+ (T.uwrapForward p (hifromEnum fy2 p))+ where + gifromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun GeneralCategory Int)+ + hifromEnum ::+ T.R GeneralCategory -> T.RefExp -> T.R Int+ gifromEnum pifromEnum p+ = T.ufun1 c99v55v99v56ifromEnum pifromEnum p+ hifromEnum+ aifromEnum = c99v55v99v56ifromEnum+ hifromEnum (T.R UppercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hifromEnum (T.R LowercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hifromEnum (T.R TitlecaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hifromEnum (T.R ModifierLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hifromEnum (T.R OtherLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hifromEnum (T.R NonSpacingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hifromEnum (T.R SpacingCombiningMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hifromEnum (T.R EnclosingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ hifromEnum (T.R DecimalNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ hifromEnum (T.R LetterNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ hifromEnum (T.R OtherNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ hifromEnum (T.R ConnectorPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ hifromEnum (T.R DashPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (12))+ hifromEnum (T.R OpenPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (13))+ hifromEnum (T.R ClosePunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (14))+ hifromEnum (T.R InitialQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (15))+ hifromEnum (T.R FinalQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (16))+ hifromEnum (T.R OtherPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (17))+ hifromEnum (T.R MathSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (18))+ hifromEnum (T.R CurrencySymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (19))+ hifromEnum (T.R ModifierSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (20))+ hifromEnum (T.R OtherSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (21))+ hifromEnum (T.R Space _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (22))+ hifromEnum (T.R LineSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (23))+ hifromEnum (T.R ParagraphSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (24))+ hifromEnum (T.R Control _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (25))+ hifromEnum (T.R Format _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (26))+ hifromEnum (T.R Surrogate _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (27))+ hifromEnum (T.R PrivateUse _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (28))+ hifromEnum (T.R NotAssigned _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (29))+ hifromEnum _ p = T.fatal p+ ginRange pinRange p+ = T.ufun2 c99v55v99v56inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hnfromEnum fy1 p))+ (T.uwrapForward p (hnfromEnum fy2 p)))+ (T.uwrapForward p (hnfromEnum fy3 p))+ where + gnfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun GeneralCategory Int)+ + hnfromEnum ::+ T.R GeneralCategory -> T.RefExp -> T.R Int+ gnfromEnum pnfromEnum p+ = T.ufun1 c99v55v99v56nfromEnum pnfromEnum p+ hnfromEnum+ anfromEnum = c99v55v99v56nfromEnum+ hnfromEnum (T.R UppercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hnfromEnum (T.R LowercaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hnfromEnum (T.R TitlecaseLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hnfromEnum (T.R ModifierLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hnfromEnum (T.R OtherLetter _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hnfromEnum (T.R NonSpacingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hnfromEnum (T.R SpacingCombiningMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hnfromEnum (T.R EnclosingMark _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ hnfromEnum (T.R DecimalNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ hnfromEnum (T.R LetterNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ hnfromEnum (T.R OtherNumber _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ hnfromEnum (T.R ConnectorPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ hnfromEnum (T.R DashPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (12))+ hnfromEnum (T.R OpenPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (13))+ hnfromEnum (T.R ClosePunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (14))+ hnfromEnum (T.R InitialQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (15))+ hnfromEnum (T.R FinalQuote _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (16))+ hnfromEnum (T.R OtherPunctuation _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (17))+ hnfromEnum (T.R MathSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (18))+ hnfromEnum (T.R CurrencySymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (19))+ hnfromEnum (T.R ModifierSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (20))+ hnfromEnum (T.R OtherSymbol _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (21))+ hnfromEnum (T.R Space _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (22))+ hnfromEnum (T.R LineSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (23))+ hnfromEnum (T.R ParagraphSeparator _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (24))+ hnfromEnum (T.R Control _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (25))+ hnfromEnum (T.R Format _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (26))+ hnfromEnum (T.R Surrogate _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (27))+ hnfromEnum (T.R PrivateUse _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (28))+ hnfromEnum (T.R NotAssigned _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (29))+ hnfromEnum _ p = T.fatal p+ +ggenCat ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)+ggenCat pgenCat p = T.ufun1 agenCat pgenCat p hgenCat+hgenCat z1genCat kgenCat+ = T.fromInt kgenCat+ ((\_ i -> Prelude.fromEnum (Data.Char.generalCategory (Prelude.toEnum i))) Prelude.True+ (T.toInt kgenCat z1genCat))+ +ggeneralCategory ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Char GeneralCategory)+ +hgeneralCategory ::+ T.R Char -> T.RefExp -> T.R GeneralCategory+ggeneralCategory pgeneralCategory p+ = T.ufun1 ageneralCategory pgeneralCategory p+ hgeneralCategory+hgeneralCategory fc p+ = T.uwrapForward p+ ((*$) (gtoEnum T.mkNoSrcPos p)+ (T.uwrapForward p+ ((*$) (ggenCat T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p) fc)+ p))+ p)+aClosePunctuation+ = T.mkConstructor tChar 830011 830026 3 (0)+ "ClosePunctuation"+aConnectorPunctuation+ = T.mkConstructor tChar 800011 800030 3 (0)+ "ConnectorPunctuation"+aControl+ = T.mkConstructor tChar 940011 940017 3 (0) "Control"+aCurrencySymbol+ = T.mkConstructor tChar 880011 880024 3 (0)+ "CurrencySymbol"+aDashPunctuation+ = T.mkConstructor tChar 810011 810025 3 (0)+ "DashPunctuation"+aDecimalNumber+ = T.mkConstructor tChar 770011 770023 3 (0)+ "DecimalNumber"+aEnclosingMark+ = T.mkConstructor tChar 760011 760023 3 (0)+ "EnclosingMark"+aFinalQuote+ = T.mkConstructor tChar 850011 850020 3 (0)+ "FinalQuote"+aFormat+ = T.mkConstructor tChar 950011 950016 3 (0) "Format"+aInitialQuote+ = T.mkConstructor tChar 840011 840022 3 (0)+ "InitialQuote"+aLetterNumber+ = T.mkConstructor tChar 780011 780022 3 (0)+ "LetterNumber"+aLineSeparator+ = T.mkConstructor tChar 920011 920023 3 (0)+ "LineSeparator"+aLowercaseLetter+ = T.mkConstructor tChar 700011 700025 3 (0)+ "LowercaseLetter"+aMathSymbol+ = T.mkConstructor tChar 870011 870020 3 (0)+ "MathSymbol"+aModifierLetter+ = T.mkConstructor tChar 720011 720024 3 (0)+ "ModifierLetter"+aModifierSymbol+ = T.mkConstructor tChar 890011 890024 3 (0)+ "ModifierSymbol"+aNonSpacingMark+ = T.mkConstructor tChar 740011 740024 3 (0)+ "NonSpacingMark"+aNotAssigned+ = T.mkConstructor tChar 980011 980021 3 (0)+ "NotAssigned"+aOpenPunctuation+ = T.mkConstructor tChar 820011 820025 3 (0)+ "OpenPunctuation"+aOtherLetter+ = T.mkConstructor tChar 730011 730021 3 (0)+ "OtherLetter"+aOtherNumber+ = T.mkConstructor tChar 790011 790021 3 (0)+ "OtherNumber"+aOtherPunctuation+ = T.mkConstructor tChar 860011 860026 3 (0)+ "OtherPunctuation"+aOtherSymbol+ = T.mkConstructor tChar 900011 900021 3 (0)+ "OtherSymbol"+aParagraphSeparator+ = T.mkConstructor tChar 930011 930028 3 (0)+ "ParagraphSeparator"+aPrivateUse+ = T.mkConstructor tChar 970011 970020 3 (0)+ "PrivateUse"+aSpace+ = T.mkConstructor tChar 910011 910015 3 (0) "Space"+aSpacingCombiningMark+ = T.mkConstructor tChar 750011 750030 3 (0)+ "SpacingCombiningMark"+aSurrogate+ = T.mkConstructor tChar 960011 960019 3 (0)+ "Surrogate"+aTitlecaseLetter+ = T.mkConstructor tChar 710011 710025 3 (0)+ "TitlecaseLetter"+aUppercaseLetter+ = T.mkConstructor tChar 690011 690025 3 (0)+ "UppercaseLetter"+agenCat+ = T.mkVariable tChar 1010001 1030011 3 (1) "genCat"+ Prelude.False+ageneralCategory+ = T.mkVariable tChar 1060001 1060043 3 (1)+ "generalCategory"+ Prelude.False+aisAsciiLower+ = T.mkVariable tChar 620001 630017 3 (1)+ "isAsciiLower"+ Prelude.False+aisAsciiUpper+ = T.mkVariable tChar 600001 610017 3 (1)+ "isAsciiUpper"+ Prelude.False+aisLetter+ = T.mkVariable tChar 480001 490013 3 (1) "isLetter"+ Prelude.False+aisMark+ = T.mkVariable tChar 500001 510011 3 (1) "isMark"+ Prelude.False+aisNumber+ = T.mkVariable tChar 520001 530013 3 (1) "isNumber"+ Prelude.False+aisPunctuation+ = T.mkVariable tChar 540001 550018 3 (1)+ "isPunctuation"+ Prelude.False+aisSeparator+ = T.mkVariable tChar 580001 590016 3 (1)+ "isSeparator"+ Prelude.False+aisSymbol+ = T.mkVariable tChar 560001 570013 3 (1) "isSymbol"+ Prelude.False+atoTitle+ = T.mkVariable tChar 650001 660012 3 (1) "toTitle"+ Prelude.False+(+>>=#>=>>=$!==)+ = T.mkVariable tChar 990019 990020 3 (-1) "=="+ Prelude.False+c99v23v99v25localFromEnum+ = T.mkVariable tChar 990023 990025 3 (1)+ "localFromEnum"+ Prelude.True+c99v23v99v25compare+ = T.mkVariable tChar 990023 990025 3 (-1) "compare"+ Prelude.False+c99v28v99v31enumFrom+ = T.mkVariable tChar 990028 990031 3 (-1) "enumFrom"+ Prelude.False+c99v28v99v31enumFromThen+ = T.mkVariable tChar 990028 990031 3 (-1)+ "enumFromThen"+ Prelude.False+c99v28v99v31fromEnum+ = T.mkVariable tChar 990028 990031 3 (-1) "fromEnum"+ Prelude.False+c99v28v99v31toEnum+ = T.mkVariable tChar 990028 990031 3 (-1) "toEnum"+ Prelude.False+c99v34v99v37readsPrec+ = T.mkVariable tChar 990034 990037 3 (-1) "readsPrec"+ Prelude.False+c99v40v99v43showsPrec+ = T.mkVariable tChar 990040 990043 3 (-1) "showsPrec"+ Prelude.False+c99v46v99v52maxBound+ = T.mkVariable tChar 990046 990052 3 (-1) "maxBound"+ Prelude.False+c99v46v99v52minBound+ = T.mkVariable tChar 990046 990052 3 (-1) "minBound"+ Prelude.False+c99v55v99v56rfromEnum+ = T.mkVariable tChar 990055 990056 3 (1) "rfromEnum"+ Prelude.True+c99v55v99v56rtoEnum+ = T.mkVariable tChar 990055 990056 3 (1) "rtoEnum"+ Prelude.True+c99v55v99v56ifromEnum+ = T.mkVariable tChar 990055 990056 3 (1) "ifromEnum"+ Prelude.True+c99v55v99v56nfromEnum+ = T.mkVariable tChar 990055 990056 3 (1) "nfromEnum"+ Prelude.True+c99v55v99v56inRange+ = T.mkVariable tChar 990055 990056 3 (-1) "inRange"+ Prelude.False+c99v55v99v56index+ = T.mkVariable tChar 990055 990056 3 (-1) "index"+ Prelude.False+c99v55v99v56range+ = T.mkVariable tChar 990055 990056 3 (-1) "range"+ Prelude.False+p = T.mkRoot+tChar+ = T.mkModule "Data.Char" "Data/Char.hs" Prelude.False
Hat/Data/List.hs view
@@ -1,289 +1,377 @@ 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 -+ ((!++), (+++), (*++), 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 Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+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)))-+ 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)-+ 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))-+ 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.Nil T.aNil)+ (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)- + 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.Nil _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+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.Nil T.aNil)+ (T.uwrapForward p (hnonEmptySubsequences fxs p))+ p))+ where gf pf p = T.ufun2 c42v9v42v34f pf p hf+ af = c42v9v42v34f+ 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- -+ 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.Nil T.aNil) p))+ where gperms pperms p+ = T.ufun2 c50v5v58v0perms pperms p hperms+ aperms = c50v5v58v0perms+ hperms (T.R T.Nil _) _ p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+ 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 c52v13v52v75interleave pinterleave p+ hinterleave+ ainterleave = c52v13v52v75interleave+ hinterleave fxs fr p+ = let gzs pzs p = T.uconstUse pzs p szs+ szs+ = T.uconstDef p c52v42v52v69zs+ (\ _ ->+ case j52v42v52v69zs of+ (kzs, fzs) -> fzs)+ j52v42v52v69zs+ = case+ T.uwrapForward p+ (hinterleave' (gid T.mkNoSrcPos p) fxs fr p)+ of+ T.R (T.Tuple2 _ fzs) kzs -> (kzs, fzs)+ _ -> T.fatal p+ in gzs T.mkNoSrcPos p+ ginterleave' pinterleave' p+ = T.ufun3 c53v13v55v64interleave' pinterleave' p+ hinterleave'+ ainterleave' = c53v13v55v64interleave'+ hinterleave' _ (T.R T.Nil _) 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 pzs p = T.uconstUse pzs p szs+ sus+ = T.uconstDef p c54v42v54v78us+ (\ _ ->+ case j54v42v54v78us of+ (kus, fus, fzs) -> fus)+ szs+ = T.uconstDef p c54v42v54v78zs+ (\ _ ->+ case j54v42v54v78us of+ (kus, fus, fzs) -> fzs)+ j54v42v54v78us+ = 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+ 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)))-+ 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-+ 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' ff fa (T.R T.Nil _) 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 c60v25v60v34a'+ (\ p ->+ T.uap2 T.mkNoSrcPos p+ (T.projection 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)+ 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.Nil _) 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))))-+ (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-+ (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.Nil _) 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))-+ (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+ (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.uap1 T.mkNoSrcPos p+ (T.uwrapForward p+ (hany+ (T.uap1 T.mkNoSrcPos p (gisPrefixOf T.mkNoSrcPos p)+ fneedle)+ p))+ (T.uwrapForward p (htails fhaystack p))+afoldl'+ = T.mkVariable tList 590001 600061 3 (3) "foldl'"+ Prelude.False+afoldl1'+ = T.mkVariable tList 640001 650063 3 (2) "foldl1'"+ Prelude.False+aintercalate+ = T.mkVariable tList 270001 270048 3 (2)+ "intercalate"+ Prelude.False+aisInfixOf+ = T.mkVariable tList 900001 900068 3 (2) "isInfixOf"+ Prelude.False+anonEmptySubsequences+ = T.mkVariable tList 400001 470000 3 (1)+ "nonEmptySubsequences"+ Prelude.False+apermutations+ = T.mkVariable tList 480001 490007 3 (1)+ "permutations"+ Prelude.False+astripPrefix+ = T.mkVariable tList 760001 790025 3 (2)+ "stripPrefix"+ Prelude.False+asubsequences+ = T.mkVariable tList 330001 330055 3 (1)+ "subsequences"+ Prelude.False+c42v9v42v34f+ = T.mkVariable tList 420009 420034 3 (2) "f"+ Prelude.True+c50v5v58v0perms+ = T.mkVariable tList 500005 580000 3 (2) "perms"+ Prelude.True+c52v13v52v75interleave+ = T.mkVariable tList 520013 520075 3 (2) "interleave"+ Prelude.True+c53v13v55v64interleave'+ = T.mkVariable tList 530013 550064 3 (3)+ "interleave'"+ Prelude.True+c52v42v52v69zs+ = T.mkVariable tList 520042 520069 3 (0) "zs"+ Prelude.True+c54v42v54v78us+ = T.mkVariable tList 540042 540078 3 (0) "us"+ Prelude.True+c54v42v54v78zs+ = T.mkVariable tList 540042 540078 3 (0) "zs"+ Prelude.True+c60v25v60v34a'+ = T.mkVariable tList 600025 600034 3 (0) "a'"+ Prelude.True+p = T.mkRoot+tList+ = T.mkModule "Data.List" "Data/List.hs" Prelude.False
Hat/Data/Maybe.hs view
@@ -1,16 +1,19 @@ module Hat.Data.Maybe- (Maybe(Nothing,Just),aNothing,aJust,gmaybe,amaybe,hmaybe,gisJust,aisJust- ,hisJust,gisNothing,gfromJust,afromJust,hfromJust,gfromMaybe,afromMaybe- ,hfromMaybe,glistToMaybe,alistToMaybe,hlistToMaybe,gmaybeToList,amaybeToList- ,hmaybeToList,gcatMaybes,acatMaybes,hcatMaybes,gmapMaybe,amapMaybe- ,hmapMaybe) 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.Maybe --tData_Maybe = T.mkModule "Data.Maybe" "Data/Maybe.hs" Prelude.False+ (Maybe(Nothing, Just), aNothing, aJust, gmaybe,+ amaybe, hmaybe, gisJust, aisJust, hisJust,+ gisNothing, gfromJust, afromJust, hfromJust,+ gfromMaybe, afromMaybe, hfromMaybe, glistToMaybe,+ alistToMaybe, hlistToMaybe, gmaybeToList,+ amaybeToList, hmaybeToList, gcatMaybes, acatMaybes,+ hcatMaybes, gmapMaybe, amapMaybe, hmapMaybe)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.Maybe+p = T.mkRoot+tMaybe+ = T.mkModule "Data.Maybe" "Data/Maybe.hs"+ Prelude.False
Hat/Directory.hs view
@@ -1,331 +1,392 @@ module Hat.Directory- (Permissions(Permissions,breadable,bwritable,bexecutable,bsearchable)- ,greadable,gwritable,gexecutable,gsearchable,hreadable,hwritable,hexecutable- ,hsearchable,areadable,awritable,aexecutable,asearchable,aPermissions- ,gcreateDirectory,acreateDirectory,hcreateDirectory,gremoveDirectory- ,aremoveDirectory,hremoveDirectory,gremoveFile,aremoveFile,hremoveFile- ,grenameDirectory,arenameDirectory,hrenameDirectory,grenameFile,arenameFile- ,hrenameFile,ggetDirectoryContents,agetDirectoryContents- ,hgetDirectoryContents,ggetCurrentDirectory,gsetCurrentDirectory- ,asetCurrentDirectory,hsetCurrentDirectory,gdoesFileExist,adoesFileExist- ,hdoesFileExist,gdoesDirectoryExist,adoesDirectoryExist,hdoesDirectoryExist- ,ggetPermissions,agetPermissions,hgetPermissions,gsetPermissions- ,asetPermissions,hsetPermissions) 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.PreludeBuiltinTypes -import Hat.DirectoryBuiltinTypes -import Hat.DirectoryBuiltin -import Hat.TimeBuiltin -import qualified System.Directory as Directory --instance Eq (Permissions)- where- - (!==) (%==) p = T.uconstUse (%==) p (|==)- - (|==) =- T.uconstDef T.mkRoot (+$!=&=$!=$+==)- (\ p -> gprimPermissionsEq T.mkNoSrcPos p)- --instance Ord (Permissions)- where- - gcompare pcompare p = T.uconstUse pcompare p scompare- - scompare =- T.uconstDef T.mkRoot a23v3v23v34compare- (\ p -> gprimPermissionsCompare T.mkNoSrcPos p)- - (!<=) (%<=) p = T.uconstUse (%<=) p (|<=)- - (|<=) =- T.uconstDef T.mkRoot (+$&=&=$&=$@<=)- (\ p -> gprimPermissionsLeEq T.mkNoSrcPos p)- --instance Read (Permissions)- where- - greadsPrec preadsPrec p = T.uconstUse preadsPrec p sreadsPrec- - sreadsPrec =- T.uconstDef T.mkRoot a27v3v27v38readsPrec- (\ p -> gprimPermissionsReadsPrec T.mkNoSrcPos p)- --instance Show (Permissions)- where- - gshowsPrec pshowsPrec p = T.uconstUse pshowsPrec p sshowsPrec- - sshowsPrec =- T.uconstDef T.mkRoot a30v3v30v38showsPrec- (\ p -> gprimPermissionsShowsPrec T.mkNoSrcPos p)- -+ (Permissions(Permissions, breadable, bwritable,+ bexecutable, bsearchable),+ greadable, gwritable, gexecutable, gsearchable,+ hreadable, hwritable, hexecutable, hsearchable,+ areadable, awritable, aexecutable, asearchable,+ aPermissions, gcreateDirectory, acreateDirectory,+ hcreateDirectory, gremoveDirectory, aremoveDirectory,+ hremoveDirectory, gremoveFile, aremoveFile,+ hremoveFile, grenameDirectory, arenameDirectory,+ hrenameDirectory, grenameFile, arenameFile,+ hrenameFile, ggetDirectoryContents,+ agetDirectoryContents, hgetDirectoryContents,+ ggetCurrentDirectory, gsetCurrentDirectory,+ asetCurrentDirectory, hsetCurrentDirectory,+ gdoesFileExist, adoesFileExist, hdoesFileExist,+ gdoesDirectoryExist, adoesDirectoryExist,+ hdoesDirectoryExist, ggetPermissions,+ agetPermissions, hgetPermissions, gsetPermissions,+ asetPermissions, hsetPermissions)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBuiltinTypes as T+import Hat.DirectoryBuiltinTypes as T+import Hat.DirectoryBuiltin as T+import Hat.TimeBuiltin as T+import qualified System.Directory as Directory+ +instance Eq Permissions where+ (%==) !== p = T.uconstUse (%==) p (|==)+ (|==)+ = T.uconstDef p (+$!=%=$!=$+==)+ (\ p -> gprimPermissionsEq T.mkNoSrcPos p)+ +instance Ord Permissions where+ gcompare pcompare p = T.uconstUse pcompare p scompare+ scompare+ = T.uconstDef p c23v3v23v34compare+ (\ p -> gprimPermissionsCompare T.mkNoSrcPos p)+ (%<=) !<= p = T.uconstUse (%<=) p (|<=)+ (|<=)+ = T.uconstDef p (+$&=%=$&=$@<=)+ (\ p -> gprimPermissionsLeEq T.mkNoSrcPos p)+ +instance Read Permissions where+ greadsPrec preadsPrec p+ = T.uconstUse preadsPrec p sreadsPrec+ sreadsPrec+ = T.uconstDef p c27v3v27v38readsPrec+ (\ p -> gprimPermissionsReadsPrec T.mkNoSrcPos p)+ +instance Show Permissions where+ gshowsPrec pshowsPrec p+ = T.uconstUse pshowsPrec p sshowsPrec+ sshowsPrec+ = T.uconstDef p c30v3v30v38showsPrec+ (\ p -> gprimPermissionsShowsPrec T.mkNoSrcPos p)+ gprimPermissionsEq ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Permissions (T.Fun Permissions Bool))--gprimPermissionsEq pprimPermissionsEq p =- T.ufun2 aprimPermissionsEq pprimPermissionsEq p hprimPermissionsEq--hprimPermissionsEq z1primPermissionsEq z2primPermissionsEq kprimPermissionsEq =- fromBool kprimPermissionsEq- ((toPermissions kprimPermissionsEq z1primPermissionsEq)- Prelude.==- (toPermissions kprimPermissionsEq z2primPermissionsEq))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Permissions (T.Fun Permissions Bool))+gprimPermissionsEq pprimPermissionsEq p+ = T.ufun2 aprimPermissionsEq pprimPermissionsEq p+ hprimPermissionsEq+hprimPermissionsEq z1primPermissionsEq+ z2primPermissionsEq kprimPermissionsEq+ = T.fromBool kprimPermissionsEq+ ((Prelude.==)+ (T.toPermissions kprimPermissionsEq+ z1primPermissionsEq)+ (T.toPermissions kprimPermissionsEq+ z2primPermissionsEq))+ gprimPermissionsCompare ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun Permissions (T.Fun Permissions Ordering))--gprimPermissionsCompare pprimPermissionsCompare p =- T.ufun2 aprimPermissionsCompare pprimPermissionsCompare p- hprimPermissionsCompare--hprimPermissionsCompare z1primPermissionsCompare z2primPermissionsCompare- kprimPermissionsCompare =- fromOrdering kprimPermissionsCompare- (Prelude.compare- (toPermissions kprimPermissionsCompare z1primPermissionsCompare)- (toPermissions kprimPermissionsCompare z2primPermissionsCompare))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Permissions (T.Fun Permissions Ordering))+gprimPermissionsCompare pprimPermissionsCompare p+ = T.ufun2 aprimPermissionsCompare+ pprimPermissionsCompare+ p+ hprimPermissionsCompare+hprimPermissionsCompare z1primPermissionsCompare+ z2primPermissionsCompare kprimPermissionsCompare+ = T.fromOrdering kprimPermissionsCompare+ (Prelude.compare+ (T.toPermissions kprimPermissionsCompare+ z1primPermissionsCompare)+ (T.toPermissions kprimPermissionsCompare+ z2primPermissionsCompare))+ gprimPermissionsLeEq ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Permissions (T.Fun Permissions Bool))--gprimPermissionsLeEq pprimPermissionsLeEq p =- T.ufun2 aprimPermissionsLeEq pprimPermissionsLeEq p hprimPermissionsLeEq--hprimPermissionsLeEq z1primPermissionsLeEq z2primPermissionsLeEq- kprimPermissionsLeEq =- fromBool kprimPermissionsLeEq- ((toPermissions kprimPermissionsLeEq z1primPermissionsLeEq)- Prelude.<=- (toPermissions kprimPermissionsLeEq z2primPermissionsLeEq))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Permissions (T.Fun Permissions Bool))+gprimPermissionsLeEq pprimPermissionsLeEq p+ = T.ufun2 aprimPermissionsLeEq pprimPermissionsLeEq p+ hprimPermissionsLeEq+hprimPermissionsLeEq z1primPermissionsLeEq+ z2primPermissionsLeEq kprimPermissionsLeEq+ = T.fromBool kprimPermissionsLeEq+ ((Prelude.<=)+ (T.toPermissions kprimPermissionsLeEq+ z1primPermissionsLeEq)+ (T.toPermissions kprimPermissionsLeEq+ z2primPermissionsLeEq))+ gprimPermissionsReadsPrec ::- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun Int (T.Fun String (T.List (T.Tuple2 Permissions String))))--gprimPermissionsReadsPrec pprimPermissionsReadsPrec p =- T.ufun2 aprimPermissionsReadsPrec pprimPermissionsReadsPrec p- hprimPermissionsReadsPrec--hprimPermissionsReadsPrec z1primPermissionsReadsPrec z2primPermissionsReadsPrec- kprimPermissionsReadsPrec =- (fromList (T.fromTuple2 fromPermissions fromString)) kprimPermissionsReadsPrec- (Prelude.readsPrec- (T.toInt kprimPermissionsReadsPrec z1primPermissionsReadsPrec)- (toString kprimPermissionsReadsPrec z2primPermissionsReadsPrec))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun Int+ (T.Fun String+ (T.List (T.Tuple2 Permissions String))))+gprimPermissionsReadsPrec pprimPermissionsReadsPrec p+ = T.ufun2 aprimPermissionsReadsPrec+ pprimPermissionsReadsPrec+ p+ hprimPermissionsReadsPrec+hprimPermissionsReadsPrec z1primPermissionsReadsPrec+ z2primPermissionsReadsPrec kprimPermissionsReadsPrec+ = T.fromList+ (T.fromTuple2 T.fromPermissions T.fromString)+ kprimPermissionsReadsPrec+ (Prelude.readsPrec+ (T.toInt kprimPermissionsReadsPrec+ z1primPermissionsReadsPrec)+ (T.toString kprimPermissionsReadsPrec+ z2primPermissionsReadsPrec))+ gprimPermissionsShowsPrec ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun Int (T.Fun Permissions (T.Fun String String)))--gprimPermissionsShowsPrec pprimPermissionsShowsPrec p =- T.ufun3 aprimPermissionsShowsPrec pprimPermissionsShowsPrec p- hprimPermissionsShowsPrec--hprimPermissionsShowsPrec z1primPermissionsShowsPrec z2primPermissionsShowsPrec- z3primPermissionsShowsPrec kprimPermissionsShowsPrec =- fromString kprimPermissionsShowsPrec- (Prelude.showsPrec- (T.toInt kprimPermissionsShowsPrec z1primPermissionsShowsPrec)- (toPermissions kprimPermissionsShowsPrec z2primPermissionsShowsPrec)- (toString kprimPermissionsShowsPrec z3primPermissionsShowsPrec))--gcreateDirectory :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO T.Tuple0))--gcreateDirectory pcreateDirectory p =- T.ufun1 acreateDirectory pcreateDirectory p hcreateDirectory--hcreateDirectory z1createDirectory kcreateDirectory =- (T.fromIO T.fromTuple0) kcreateDirectory- (Directory.createDirectory (toString kcreateDirectory z1createDirectory))--gremoveDirectory :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO T.Tuple0))--gremoveDirectory premoveDirectory p =- T.ufun1 aremoveDirectory premoveDirectory p hremoveDirectory--hremoveDirectory z1removeDirectory kremoveDirectory =- (T.fromIO T.fromTuple0) kremoveDirectory- (Directory.removeDirectory (toString kremoveDirectory z1removeDirectory))--gremoveFile :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO T.Tuple0))--gremoveFile premoveFile p = T.ufun1 aremoveFile premoveFile p hremoveFile--hremoveFile z1removeFile kremoveFile =- (T.fromIO T.fromTuple0) kremoveFile- (Directory.removeFile (toString kremoveFile z1removeFile))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun Int+ (T.Fun Permissions (T.Fun String String)))+gprimPermissionsShowsPrec pprimPermissionsShowsPrec p+ = T.ufun3 aprimPermissionsShowsPrec+ pprimPermissionsShowsPrec+ p+ hprimPermissionsShowsPrec+hprimPermissionsShowsPrec z1primPermissionsShowsPrec+ z2primPermissionsShowsPrec z3primPermissionsShowsPrec+ kprimPermissionsShowsPrec+ = T.fromString kprimPermissionsShowsPrec+ (Prelude.showsPrec+ (T.toInt kprimPermissionsShowsPrec+ z1primPermissionsShowsPrec)+ (T.toPermissions kprimPermissionsShowsPrec+ z2primPermissionsShowsPrec)+ (T.toString kprimPermissionsShowsPrec+ z3primPermissionsShowsPrec))+ +gcreateDirectory ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO T.Tuple0))+gcreateDirectory pcreateDirectory p+ = T.ufun1 acreateDirectory pcreateDirectory p+ hcreateDirectory+hcreateDirectory z1createDirectory kcreateDirectory+ = T.fromIO T.fromTuple0 kcreateDirectory+ (Directory.createDirectory+ (T.toString kcreateDirectory z1createDirectory))+ +gremoveDirectory ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO T.Tuple0))+gremoveDirectory premoveDirectory p+ = T.ufun1 aremoveDirectory premoveDirectory p+ hremoveDirectory+hremoveDirectory z1removeDirectory kremoveDirectory+ = T.fromIO T.fromTuple0 kremoveDirectory+ (Directory.removeDirectory+ (T.toString kremoveDirectory z1removeDirectory))+ +gremoveFile ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO T.Tuple0))+gremoveFile premoveFile p+ = T.ufun1 aremoveFile premoveFile p hremoveFile+hremoveFile z1removeFile kremoveFile+ = T.fromIO T.fromTuple0 kremoveFile+ (Directory.removeFile+ (T.toString kremoveFile z1removeFile))+ grenameDirectory ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (T.Fun String (IO T.Tuple0)))--grenameDirectory prenameDirectory p =- T.ufun2 arenameDirectory prenameDirectory p hrenameDirectory--hrenameDirectory z1renameDirectory z2renameDirectory krenameDirectory =- (T.fromIO T.fromTuple0) krenameDirectory- (Directory.renameDirectory (toString krenameDirectory z1renameDirectory)- (toString krenameDirectory z2renameDirectory))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun String (T.Fun String (IO T.Tuple0)))+grenameDirectory prenameDirectory p+ = T.ufun2 arenameDirectory prenameDirectory p+ hrenameDirectory+hrenameDirectory z1renameDirectory z2renameDirectory+ krenameDirectory+ = T.fromIO T.fromTuple0 krenameDirectory+ (Directory.renameDirectory+ (T.toString krenameDirectory z1renameDirectory)+ (T.toString krenameDirectory z2renameDirectory))+ grenameFile ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (T.Fun String (IO T.Tuple0)))--grenameFile prenameFile p = T.ufun2 arenameFile prenameFile p hrenameFile--hrenameFile z1renameFile z2renameFile krenameFile =- (T.fromIO T.fromTuple0) krenameFile- (Directory.renameFile (toString krenameFile z1renameFile)- (toString krenameFile z2renameFile))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun String (T.Fun String (IO T.Tuple0)))+grenameFile prenameFile p+ = T.ufun2 arenameFile prenameFile p hrenameFile+hrenameFile z1renameFile z2renameFile krenameFile+ = T.fromIO T.fromTuple0 krenameFile+ (Directory.renameFile+ (T.toString krenameFile z1renameFile)+ (T.toString krenameFile z2renameFile))+ ggetDirectoryContents ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO (T.List String)))--ggetDirectoryContents pgetDirectoryContents p =- T.ufun1 agetDirectoryContents pgetDirectoryContents p hgetDirectoryContents--hgetDirectoryContents z1getDirectoryContents kgetDirectoryContents =- (T.fromIO (fromList fromString)) kgetDirectoryContents- (Directory.getDirectoryContents- (toString kgetDirectoryContents z1getDirectoryContents))--ggetCurrentDirectory :: T.RefSrcPos -> T.RefExp -> T.R (IO String)--ggetCurrentDirectory pgetCurrentDirectory p =- T.uconstUse pgetCurrentDirectory p sgetCurrentDirectory--sgetCurrentDirectory =- T.uconstDef T.mkRoot agetCurrentDirectory- (\ p -> (T.fromIO fromString) p Directory.getCurrentDirectory)-+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO (T.List String)))+ggetDirectoryContents pgetDirectoryContents p+ = T.ufun1 agetDirectoryContents pgetDirectoryContents+ p+ hgetDirectoryContents+hgetDirectoryContents z1getDirectoryContents+ kgetDirectoryContents+ = T.fromIO (T.fromList T.fromString)+ kgetDirectoryContents+ (Directory.getDirectoryContents+ (T.toString kgetDirectoryContents+ z1getDirectoryContents))+ +ggetCurrentDirectory ::+ T.RefSrcPos -> T.RefExp -> T.R (IO String)+ggetCurrentDirectory pgetCurrentDirectory p+ = T.uconstUse pgetCurrentDirectory p+ sgetCurrentDirectory+sgetCurrentDirectory+ = T.uconstDef p agetCurrentDirectory+ (\ p ->+ T.fromIO T.fromString p+ Directory.getCurrentDirectory)+ gsetCurrentDirectory ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO T.Tuple0))--gsetCurrentDirectory psetCurrentDirectory p =- T.ufun1 asetCurrentDirectory psetCurrentDirectory p hsetCurrentDirectory--hsetCurrentDirectory z1setCurrentDirectory ksetCurrentDirectory =- (T.fromIO T.fromTuple0) ksetCurrentDirectory- (Directory.setCurrentDirectory- (toString ksetCurrentDirectory z1setCurrentDirectory))--gdoesFileExist :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO Bool))--gdoesFileExist pdoesFileExist p =- T.ufun1 adoesFileExist pdoesFileExist p hdoesFileExist--hdoesFileExist z1doesFileExist kdoesFileExist =- (T.fromIO fromBool) kdoesFileExist- (Directory.doesFileExist (toString kdoesFileExist z1doesFileExist))--gdoesDirectoryExist :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO Bool))--gdoesDirectoryExist pdoesDirectoryExist p =- T.ufun1 adoesDirectoryExist pdoesDirectoryExist p hdoesDirectoryExist--hdoesDirectoryExist z1doesDirectoryExist kdoesDirectoryExist =- (T.fromIO fromBool) kdoesDirectoryExist- (Directory.doesDirectoryExist- (toString kdoesDirectoryExist z1doesDirectoryExist))-+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO T.Tuple0))+gsetCurrentDirectory psetCurrentDirectory p+ = T.ufun1 asetCurrentDirectory psetCurrentDirectory p+ hsetCurrentDirectory+hsetCurrentDirectory z1setCurrentDirectory+ ksetCurrentDirectory+ = T.fromIO T.fromTuple0 ksetCurrentDirectory+ (Directory.setCurrentDirectory+ (T.toString ksetCurrentDirectory+ z1setCurrentDirectory))+ +gdoesFileExist ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO Bool))+gdoesFileExist pdoesFileExist p+ = T.ufun1 adoesFileExist pdoesFileExist p+ hdoesFileExist+hdoesFileExist z1doesFileExist kdoesFileExist+ = T.fromIO T.fromBool kdoesFileExist+ (Directory.doesFileExist+ (T.toString kdoesFileExist z1doesFileExist))+ +gdoesDirectoryExist ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO Bool))+gdoesDirectoryExist pdoesDirectoryExist p+ = T.ufun1 adoesDirectoryExist pdoesDirectoryExist p+ hdoesDirectoryExist+hdoesDirectoryExist z1doesDirectoryExist+ kdoesDirectoryExist+ = T.fromIO T.fromBool kdoesDirectoryExist+ (Directory.doesDirectoryExist+ (T.toString kdoesDirectoryExist+ z1doesDirectoryExist))+ ggetPermissions ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO Permissions))--ggetPermissions pgetPermissions p =- T.ufun1 agetPermissions pgetPermissions p hgetPermissions--hgetPermissions z1getPermissions kgetPermissions =- (T.fromIO fromPermissions) kgetPermissions- (Directory.getPermissions (toString kgetPermissions z1getPermissions))-+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO Permissions))+ggetPermissions pgetPermissions p+ = T.ufun1 agetPermissions pgetPermissions p+ hgetPermissions+hgetPermissions z1getPermissions kgetPermissions+ = T.fromIO T.fromPermissions kgetPermissions+ (Directory.getPermissions+ (T.toString kgetPermissions z1getPermissions))+ gsetPermissions ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun String (T.Fun Permissions (IO T.Tuple0)))--gsetPermissions psetPermissions p =- T.ufun2 asetPermissions psetPermissions p hsetPermissions--hsetPermissions z1setPermissions z2setPermissions ksetPermissions =- (T.fromIO T.fromTuple0) ksetPermissions- (Directory.setPermissions (toString ksetPermissions z1setPermissions)- (toPermissions ksetPermissions z2setPermissions))--tDirectory = T.mkModule "Directory" "Directory.hs" Prelude.False--aprimPermissionsEq =- T.mkVariable tDirectory 320001 330056 3 2 "primPermissionsEq" Prelude.False--aprimPermissionsCompare =- T.mkVariable tDirectory 350001 360065 3 2 "primPermissionsCompare"- Prelude.False--aprimPermissionsLeEq =- T.mkVariable tDirectory 380001 390058 3 2 "primPermissionsLeEq" Prelude.False--aprimPermissionsReadsPrec =- T.mkVariable tDirectory 410001 420047 3 2 "primPermissionsReadsPrec"- Prelude.False--aprimPermissionsShowsPrec =- T.mkVariable tDirectory 440001 450067 3 3 "primPermissionsShowsPrec"- Prelude.False--acreateDirectory =- T.mkVariable tDirectory 480001 490033 3 1 "createDirectory" Prelude.False--aremoveDirectory =- T.mkVariable tDirectory 500001 510033 3 1 "removeDirectory" Prelude.False--aremoveFile =- T.mkVariable tDirectory 520001 530028 3 1 "removeFile" Prelude.False--arenameDirectory =- T.mkVariable tDirectory 540001 550043 3 2 "renameDirectory" Prelude.False--arenameFile =- T.mkVariable tDirectory 560001 570038 3 2 "renameFile" Prelude.False--agetDirectoryContents =- T.mkVariable tDirectory 590001 600038 3 1 "getDirectoryContents" Prelude.False--agetCurrentDirectory =- T.mkVariable tDirectory 610001 620027 3 0 "getCurrentDirectory" Prelude.False--asetCurrentDirectory =- T.mkVariable tDirectory 630001 640037 3 1 "setCurrentDirectory" Prelude.False--adoesFileExist =- T.mkVariable tDirectory 660001 670030 3 1 "doesFileExist" Prelude.False--adoesDirectoryExist =- T.mkVariable tDirectory 680001 690035 3 1 "doesDirectoryExist" Prelude.False--agetPermissions =- T.mkVariable tDirectory 710001 720031 3 1 "getPermissions" Prelude.False--asetPermissions =- T.mkVariable tDirectory 730001 740046 3 2 "setPermissions" Prelude.False--(+$!=&=$!=$+==) = T.mkVariable tDirectory 200004 200026 16 0 "==" Prelude.False--a23v3v23v34compare =- T.mkVariable tDirectory 230003 230034 3 0 "compare" Prelude.False--(+$&=&=$&=$@<=) = T.mkVariable tDirectory 240004 240028 16 0 "<=" Prelude.False--a27v3v27v38readsPrec =- T.mkVariable tDirectory 270003 270038 3 0 "readsPrec" Prelude.False--a30v3v30v38showsPrec =- T.mkVariable tDirectory 300003 300038 3 0 "showsPrec" Prelude.False+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun String (T.Fun Permissions (IO T.Tuple0)))+gsetPermissions psetPermissions p+ = T.ufun2 asetPermissions psetPermissions p+ hsetPermissions+hsetPermissions z1setPermissions z2setPermissions+ ksetPermissions+ = T.fromIO T.fromTuple0 ksetPermissions+ (Directory.setPermissions+ (T.toString ksetPermissions z1setPermissions)+ (T.toPermissions ksetPermissions z2setPermissions))+acreateDirectory+ = T.mkVariable tDirectory 480001 490020 3 (1)+ "createDirectory"+ Prelude.False+adoesDirectoryExist+ = T.mkVariable tDirectory 680001 690022 3 (1)+ "doesDirectoryExist"+ Prelude.False+adoesFileExist+ = T.mkVariable tDirectory 660001 670017 3 (1)+ "doesFileExist"+ Prelude.False+agetCurrentDirectory+ = T.mkVariable tDirectory 610001 620024 3 (0)+ "getCurrentDirectory"+ Prelude.False+agetDirectoryContents+ = T.mkVariable tDirectory 590001 600025 3 (1)+ "getDirectoryContents"+ Prelude.False+agetPermissions+ = T.mkVariable tDirectory 710001 720018 3 (1)+ "getPermissions"+ Prelude.False+aprimPermissionsCompare+ = T.mkVariable tDirectory 350001 360026 3 (2)+ "primPermissionsCompare"+ Prelude.False+aprimPermissionsEq+ = T.mkVariable tDirectory 320001 330021 3 (2)+ "primPermissionsEq"+ Prelude.False+aprimPermissionsLeEq+ = T.mkVariable tDirectory 380001 390023 3 (2)+ "primPermissionsLeEq"+ Prelude.False+aprimPermissionsReadsPrec+ = T.mkVariable tDirectory 410001 420028 3 (2)+ "primPermissionsReadsPrec"+ Prelude.False+aprimPermissionsShowsPrec+ = T.mkVariable tDirectory 440001 450028 3 (3)+ "primPermissionsShowsPrec"+ Prelude.False+aremoveDirectory+ = T.mkVariable tDirectory 500001 510020 3 (1)+ "removeDirectory"+ Prelude.False+aremoveFile+ = T.mkVariable tDirectory 520001 530015 3 (1)+ "removeFile"+ Prelude.False+arenameDirectory+ = T.mkVariable tDirectory 540001 550020 3 (2)+ "renameDirectory"+ Prelude.False+arenameFile+ = T.mkVariable tDirectory 560001 570015 3 (2)+ "renameFile"+ Prelude.False+asetCurrentDirectory+ = T.mkVariable tDirectory 630001 640024 3 (1)+ "setCurrentDirectory"+ Prelude.False+asetPermissions+ = T.mkVariable tDirectory 730001 740018 3 (2)+ "setPermissions"+ Prelude.False+(+$!=%=$!=$+==)+ = T.mkVariable tDirectory 200003 200026 3 (-1) "=="+ Prelude.False+c23v3v23v34compare+ = T.mkVariable tDirectory 230003 230034 3 (-1)+ "compare"+ Prelude.False+(+$&=%=$&=$@<=)+ = T.mkVariable tDirectory 240003 240028 3 (-1) "<="+ Prelude.False+c27v3v27v38readsPrec+ = T.mkVariable tDirectory 270003 270038 3 (-1)+ "readsPrec"+ Prelude.False+c30v3v30v38showsPrec+ = T.mkVariable tDirectory 300003 300038 3 (-1)+ "showsPrec"+ Prelude.False+p = T.mkRoot+tDirectory+ = T.mkModule "Directory" "Directory.hs" Prelude.False
Hat/DirectoryBuiltinTypes.hs view
@@ -1,64 +1,78 @@ module Hat.DirectoryBuiltinTypes- (Permissions(..),greadable,hreadable,gwritable,hwritable,gexecutable- ,hexecutable,gsearchable,hsearchable,aPermissions,areadable,awritable- ,aexecutable,asearchable) 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 --data Permissions =- Permissions {breadable,bwritable,bexecutable,bsearchable :: T.R Bool}--instance T.WrapVal (Permissions)- where- - wrapVal pwrapVal- (kwrapVal@(Permissions (T.R _ z1wrapVal) (T.R _ z2wrapVal) (T.R _ z3wrapVal)- (T.R _ z4wrapVal))) p =- T.R kwrapVal- (T.mkValueApp4 p pwrapVal aPermissions z1wrapVal z2wrapVal z3wrapVal- z4wrapVal)- --greadable preadable p = T.ufun1 areadable preadable p hreadable--hreadable (T.R z1readable _) p =- T.projection T.mkNoSrcPos p (breadable z1readable)--gwritable pwritable p = T.ufun1 awritable pwritable p hwritable--hwritable (T.R z1writable _) p =- T.projection T.mkNoSrcPos p (bwritable z1writable)--gexecutable pexecutable p = T.ufun1 aexecutable pexecutable p hexecutable--hexecutable (T.R z1executable _) p =- T.projection T.mkNoSrcPos p (bexecutable z1executable)--gsearchable psearchable p = T.ufun1 asearchable psearchable p hsearchable--hsearchable (T.R z1searchable _) p =- T.projection T.mkNoSrcPos p (bsearchable z1searchable)--tDirectoryBuiltinTypes =- T.mkModule "DirectoryBuiltinTypes" "DirectoryBuiltinTypes.hs" Prelude.False--aPermissions =- T.mkConstructorWFields tDirectoryBuiltinTypes 30020 30030 3 4 "Permissions"- (areadable : (awritable : (aexecutable : (asearchable : []))))--areadable =- T.mkVariable tDirectoryBuiltinTypes 40002 40009 3 1 "readable" Prelude.False--awritable =- T.mkVariable tDirectoryBuiltinTypes 40014 40021 3 1 "writable" Prelude.False--aexecutable =- T.mkVariable tDirectoryBuiltinTypes 50002 50011 3 1 "executable" Prelude.False--asearchable =- T.mkVariable tDirectoryBuiltinTypes 50014 50023 3 1 "searchable" Prelude.False+ (Permissions(..), greadable, hreadable, gwritable,+ hwritable, gexecutable, hexecutable, gsearchable,+ hsearchable, aPermissions, aexecutable, areadable,+ asearchable, awritable)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+ +data Permissions = Permissions{breadable, bwritable,+ bexecutable, bsearchable :: T.R Bool}+ +instance T.WrapVal Permissions where+ wrapVal pwrapVal+ kwrapVal@(Permissions (T.R _ z1wrapVal)+ (T.R _ z2wrapVal) (T.R _ z3wrapVal)+ (T.R _ z4wrapVal))+ p+ = T.R kwrapVal+ (T.mkValueApp4 p pwrapVal aPermissions z1wrapVal+ z2wrapVal+ z3wrapVal+ z4wrapVal)+greadable preadable p+ = T.ufun1 areadable preadable p hreadable+hreadable (T.R z1readable _) p+ = T.projection T.mkNoSrcPos p (breadable z1readable)+gwritable pwritable p+ = T.ufun1 awritable pwritable p hwritable+hwritable (T.R z1writable _) p+ = T.projection T.mkNoSrcPos p (bwritable z1writable)+gexecutable pexecutable p+ = T.ufun1 aexecutable pexecutable p hexecutable+hexecutable (T.R z1executable _) p+ = T.projection T.mkNoSrcPos p+ (bexecutable z1executable)+gsearchable psearchable p+ = T.ufun1 asearchable psearchable p hsearchable+hsearchable (T.R z1searchable _) p+ = T.projection T.mkNoSrcPos p+ (bsearchable z1searchable)+aPermissions+ = T.mkConstructorWFields tDirectoryBuiltinTypes 30020+ 30030+ 3+ (4)+ "Permissions"+ ((:) areadable+ ((:) awritable+ ((:) aexecutable ((:) asearchable []))))+aexecutable+ = T.mkVariable tDirectoryBuiltinTypes 50002 50011 3+ (1)+ "executable"+ Prelude.False+areadable+ = T.mkVariable tDirectoryBuiltinTypes 40002 40009 3+ (1)+ "readable"+ Prelude.False+asearchable+ = T.mkVariable tDirectoryBuiltinTypes 50014 50023 3+ (1)+ "searchable"+ Prelude.False+awritable+ = T.mkVariable tDirectoryBuiltinTypes 40014 40021 3+ (1)+ "writable"+ Prelude.False+p = T.mkRoot+tDirectoryBuiltinTypes+ = T.mkModule "DirectoryBuiltinTypes"+ "DirectoryBuiltinTypes.hs"+ Prelude.False
Hat/Hat.hs view
@@ -21,7 +21,7 @@ ,Tuple12(Tuple12),aTuple12,Tuple13(Tuple13),aTuple13 ,Tuple14(Tuple14),aTuple14,Tuple15(Tuple15),aTuple15 ,toTuple0,fromTuple0,toTuple2,fromTuple2- ,List(Cons,List),aCons,aList+ ,List(Cons,Nil),aCons,aNil ,ap1,ap2,ap3,ap4,ap5,ap6,ap7,ap8,ap9,ap10,ap11,ap12,ap13,ap14,ap15 ,fun1,fun2,fun3,fun4,fun5,fun6,fun7,fun8,fun9,fun10,fun11,fun12,fun13,fun14 ,fun15@@ -231,11 +231,11 @@ (wrapForward h (f h x)) (wrapForward h (g h y)) -data List a = Cons (R a) (R (List a)) | List - -- type constructor and empty list constructor need to have same name,- -- because transformation doesn't distinguish between the two+data List a = Cons (R a) (R (List a)) | Nil + -- type constructor and empty list constructor don't need to have same name,+ -- old transformation didn't distinguish between the two aCons = mkConstructor tPrelude 0 0 21 2 ":"-aList = mkConstructor tPrelude 0 0 3 0 "[]"+aNil = mkConstructor tPrelude 0 0 3 0 "[]" -- ---------------------------------------------------------------------------- -- Main combinator@@ -1882,12 +1882,12 @@ fromExpList :: RefSrcPos -> RefExp -> [R a] -> R (List a) fromExpList sr h xs = - foldr (\y ys -> con2 sr h Cons aCons y ys) (con0 sr h List aList) xs+ foldr (\y ys -> con2 sr h Cons aCons y ys) (con0 sr h Nil aNil) xs fromLitString :: RefSrcPos -> RefExp -> Prelude.String -> R (List Char) fromLitString sr h xs = foldr (\x xs -> con2 sr h Cons aCons (conChar sr h x) xs) - (con0 sr h List aList) xs+ (con0 sr h Nil aNil) xs -- Create node directly with result
Hat/IO.hs view
@@ -1,657 +1,815 @@ module Hat.IO- (Handle(),HandlePosn(),IOMode(ReadMode,WriteMode,AppendMode,ReadWriteMode)- ,aReadMode,aWriteMode,aAppendMode,aReadWriteMode,BufferMode(NoBuffering- ,LineBuffering,BlockBuffering),aNoBuffering,aLineBuffering,aBlockBuffering- ,SeekMode(AbsoluteSeek,RelativeSeek,SeekFromEnd),aAbsoluteSeek,aRelativeSeek- ,aSeekFromEnd,gstdin,gstdout,gstderr,gopenFile,aopenFile,hopenFile,ghClose- ,ahClose,hhClose,ghFileSize,ahFileSize,hhFileSize,ghIsEOF,ahIsEOF,hhIsEOF- ,gisEOF,ghSetBuffering,ahSetBuffering,hhSetBuffering,ghGetBuffering- ,ahGetBuffering,hhGetBuffering,ghFlush,ahFlush,hhFlush,ghGetPosn,ahGetPosn- ,hhGetPosn,ghSetPosn,ahSetPosn,hhSetPosn,ghSeek,ahSeek,hhSeek,ghWaitForInput- ,ahWaitForInput,hhWaitForInput,ghReady,ahReady,hhReady,ghGetChar,ahGetChar- ,hhGetChar,ghGetLine,ahGetLine,hhGetLine,ghLookAhead,ahLookAhead,hhLookAhead- ,ghGetContents,ahGetContents,hhGetContents,ghPutChar,ahPutChar,hhPutChar- ,ghPutStr,ahPutStr,hhPutStr,ghPutStrLn,ahPutStrLn,hhPutStrLn,ghPrint,ahPrint- ,hhPrint,ghIsOpen,ahIsOpen,hhIsOpen,ghIsClosed,ahIsClosed,hhIsClosed- ,ghIsReadable,ahIsReadable,hhIsReadable,ghIsWritable,ahIsWritable- ,hhIsWritable,ghIsSeekable,ahIsSeekable,hhIsSeekable,gisAlreadyExistsError- ,aisAlreadyExistsError,hisAlreadyExistsError,gisDoesNotExistError- ,aisDoesNotExistError,hisDoesNotExistError,gisAlreadyInUseError- ,aisAlreadyInUseError,hisAlreadyInUseError,gisFullError,aisFullError- ,hisFullError,gisEOFError,aisEOFError,hisEOFError,gisIllegalOperation- ,aisIllegalOperation,hisIllegalOperation,gisPermissionError- ,aisPermissionError,hisPermissionError,gisUserError,aisUserError- ,hisUserError,gioeGetErrorString,aioeGetErrorString,hioeGetErrorString- ,gioeGetHandle,aioeGetHandle,hioeGetHandle,gioeGetFileName,aioeGetFileName- ,hioeGetFileName,gtry,atry,htry,gbracket,abracket,hbracket,gbracket_- ,abracket_,hbracket_,IO(),FilePath(),IOError(),gioError,aioError,hioError- ,guserError,auserError,huserError,gcatch,acatch,hcatch,ginteract,ainteract- ,hinteract,gputChar,aputChar,hputChar,gputStr,aputStr,hputStr,gputStrLn- ,aputStrLn,hputStrLn,gprint,aprint,hprint,ggetChar,ggetLine,ggetContents- ,greadFile,areadFile,hreadFile,gwriteFile,awriteFile,hwriteFile,gappendFile- ,aappendFile,happendFile,greadIO,areadIO,hreadIO,greadLn) 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.Ix (Ix(grange,gindex,ginRange,srange,sindex,sinRange))-import Hat.PreludeBuiltinTypes -import System.IO (Handle(),HandlePosn())-import qualified System.IO as IO -import qualified System.IO.Error as Error -import Hat.IOBuiltinTypes -import Hat.IOBuiltin --gprimHandleEq ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun Handle Bool))--gprimHandleEq pprimHandleEq p =- T.ufun2 aprimHandleEq pprimHandleEq p hprimHandleEq--hprimHandleEq z1primHandleEq z2primHandleEq kprimHandleEq =- fromBool kprimHandleEq- ((toHandle kprimHandleEq z1primHandleEq)- Prelude.==- (toHandle kprimHandleEq z2primHandleEq))--gprimHandleShowsPrec ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun Int (T.Fun Handle (T.Fun String String)))--gprimHandleShowsPrec pprimHandleShowsPrec p =- T.ufun3 aprimHandleShowsPrec pprimHandleShowsPrec p hprimHandleShowsPrec--hprimHandleShowsPrec z1primHandleShowsPrec z2primHandleShowsPrec- z3primHandleShowsPrec kprimHandleShowsPrec =- fromString kprimHandleShowsPrec- (Prelude.showsPrec (T.toInt kprimHandleShowsPrec z1primHandleShowsPrec)- (toHandle kprimHandleShowsPrec z2primHandleShowsPrec)- (toString kprimHandleShowsPrec z3primHandleShowsPrec))--instance Eq (Handle)- where- - (!==) (%==) p = T.uconstUse (%==) p (|==)- - (|==) =- T.uconstDef T.mkRoot (+&%=&=&%=$#==) (\ p -> gprimHandleEq T.mkNoSrcPos p)- --instance Show (Handle)- where- - gshowsPrec pshowsPrec p = T.uconstUse pshowsPrec p sshowsPrec- - sshowsPrec =- T.uconstDef T.mkRoot a46v3v46v33showsPrec- (\ p -> gprimHandleShowsPrec T.mkNoSrcPos p)- --gprimHandlePosnEq ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun HandlePosn (T.Fun HandlePosn Bool))--gprimHandlePosnEq pprimHandlePosnEq p =- T.ufun2 aprimHandlePosnEq pprimHandlePosnEq p hprimHandlePosnEq--hprimHandlePosnEq z1primHandlePosnEq z2primHandlePosnEq kprimHandlePosnEq =- fromBool kprimHandlePosnEq- ((toHandlePosn kprimHandlePosnEq z1primHandlePosnEq)- Prelude.==- (toHandlePosn kprimHandlePosnEq z2primHandlePosnEq))--instance Eq (HandlePosn)- where- - (!==) (%==) p = T.uconstUse (%==) p (|==)- - (|==) =- T.uconstDef T.mkRoot (+*&=&=*&=$*==)- (\ p -> gprimHandlePosnEq T.mkNoSrcPos p)- --gstdin :: T.RefSrcPos -> T.RefExp -> T.R Handle--gstdin pstdin p = T.uconstUse pstdin p sstdin--sstdin = T.uconstDef T.mkRoot astdin (\ p -> fromHandle p IO.stdin)--gstdout :: T.RefSrcPos -> T.RefExp -> T.R Handle--gstdout pstdout p = T.uconstUse pstdout p sstdout--sstdout = T.uconstDef T.mkRoot astdout (\ p -> fromHandle p IO.stdout)--gstderr :: T.RefSrcPos -> T.RefExp -> T.R Handle--gstderr pstderr p = T.uconstUse pstderr p sstderr--sstderr = T.uconstDef T.mkRoot astderr (\ p -> fromHandle p IO.stderr)--gopenFile ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (T.Fun IOMode (IO Handle)))--gopenFile popenFile p = T.ufun2 aopenFile popenFile p hopenFile--hopenFile z1openFile z2openFile kopenFile =- (T.fromIO fromHandle) kopenFile- (IO.openFile (toString kopenFile z1openFile)- (toIOMode kopenFile z2openFile))--ghClose :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO T.Tuple0))--ghClose phClose p = T.ufun1 ahClose phClose p hhClose--hhClose z1hClose khClose =- (T.fromIO T.fromTuple0) khClose (IO.hClose (toHandle khClose z1hClose))--ghFileSize :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Integer))--ghFileSize phFileSize p = T.ufun1 ahFileSize phFileSize p hhFileSize--hhFileSize z1hFileSize khFileSize =- (T.fromIO T.fromInteger) khFileSize- (IO.hFileSize (toHandle khFileSize z1hFileSize))--ghIsEOF :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--ghIsEOF phIsEOF p = T.ufun1 ahIsEOF phIsEOF p hhIsEOF--hhIsEOF z1hIsEOF khIsEOF =- (T.fromIO fromBool) khIsEOF (IO.hIsEOF (toHandle khIsEOF z1hIsEOF))--gisEOF :: T.RefSrcPos -> T.RefExp -> T.R (IO Bool)--sisEOF :: T.R (IO Bool)--gisEOF pisEOF p = T.uconstUse pisEOF p sisEOF--sisEOF =- T.uconstDef T.mkRoot aisEOF- (\ p -> T.uwrapForward p (hhIsEOF (gstdin T.mkNoSrcPos p) p))--ghSetBuffering ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun BufferMode (IO T.Tuple0)))--ghSetBuffering phSetBuffering p =- T.ufun2 ahSetBuffering phSetBuffering p hhSetBuffering--hhSetBuffering z1hSetBuffering z2hSetBuffering khSetBuffering =- (T.fromIO T.fromTuple0) khSetBuffering- (IO.hSetBuffering (toHandle khSetBuffering z1hSetBuffering)- (toBufferMode khSetBuffering z2hSetBuffering))--ghGetBuffering :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO BufferMode))--ghGetBuffering phGetBuffering p =- T.ufun1 ahGetBuffering phGetBuffering p hhGetBuffering--hhGetBuffering z1hGetBuffering khGetBuffering =- (T.fromIO fromBufferMode) khGetBuffering- (IO.hGetBuffering (toHandle khGetBuffering z1hGetBuffering))--ghFlush :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO T.Tuple0))--ghFlush phFlush p = T.ufun1 ahFlush phFlush p hhFlush--hhFlush z1hFlush khFlush =- (T.fromIO T.fromTuple0) khFlush (IO.hFlush (toHandle khFlush z1hFlush))--ghGetPosn :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO HandlePosn))--ghGetPosn phGetPosn p = T.ufun1 ahGetPosn phGetPosn p hhGetPosn--hhGetPosn z1hGetPosn khGetPosn =- (T.fromIO fromHandlePosn) khGetPosn- (IO.hGetPosn (toHandle khGetPosn z1hGetPosn))--ghSetPosn :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun HandlePosn (IO T.Tuple0))--ghSetPosn phSetPosn p = T.ufun1 ahSetPosn phSetPosn p hhSetPosn--hhSetPosn z1hSetPosn khSetPosn =- (T.fromIO T.fromTuple0) khSetPosn- (IO.hSetPosn (toHandlePosn khSetPosn z1hSetPosn))--ghSeek ::- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun Handle (T.Fun SeekMode (T.Fun Integer (IO T.Tuple0))))--ghSeek phSeek p = T.ufun3 ahSeek phSeek p hhSeek--hhSeek z1hSeek z2hSeek z3hSeek khSeek =- (T.fromIO T.fromTuple0) khSeek- (IO.hSeek (toHandle khSeek z1hSeek) (toSeekMode khSeek z2hSeek)- (T.toInteger khSeek z3hSeek))--ghWaitForInput ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun Int (IO Bool)))--ghWaitForInput phWaitForInput p =- T.ufun2 ahWaitForInput phWaitForInput p hhWaitForInput--hhWaitForInput z1hWaitForInput z2hWaitForInput khWaitForInput =- (T.fromIO fromBool) khWaitForInput- (IO.hWaitForInput (toHandle khWaitForInput z1hWaitForInput)- (T.toInt khWaitForInput z2hWaitForInput))--ghReady :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--hhReady :: (T.R Handle) -> T.RefExp -> T.R (IO Bool)--ghReady phReady p = T.ufun1 ahReady phReady p hhReady--hhReady fh p =- T.uwrapForward p- (hhWaitForInput fh- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) p)--ghGetChar :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Char))--ghGetChar phGetChar p = T.ufun1 ahGetChar phGetChar p hhGetChar--hhGetChar z1hGetChar khGetChar =- (T.fromIO T.fromChar) khGetChar (IO.hGetChar (toHandle khGetChar z1hGetChar))--ghGetLine :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO String))--ghGetLine phGetLine p = T.ufun1 ahGetLine phGetLine p hhGetLine--hhGetLine z1hGetLine khGetLine =- (T.fromIO fromString) khGetLine (IO.hGetLine (toHandle khGetLine z1hGetLine))--ghLookAhead :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Char))--ghLookAhead phLookAhead p = T.ufun1 ahLookAhead phLookAhead p hhLookAhead--hhLookAhead z1hLookAhead khLookAhead =- (T.fromIO T.fromChar) khLookAhead- (IO.hLookAhead (toHandle khLookAhead z1hLookAhead))--ghGetContents :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO String))--ghGetContents phGetContents p =- T.ufun1 ahGetContents phGetContents p hhGetContents--hhGetContents z1hGetContents khGetContents =- (T.fromIO fromString) khGetContents- (IO.hGetContents (toHandle khGetContents z1hGetContents))--ghPutChar ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun Char (IO T.Tuple0)))--ghPutChar phPutChar p = T.ufun2 ahPutChar phPutChar p hhPutChar--hhPutChar z1hPutChar z2hPutChar khPutChar =- (T.fromIO T.fromTuple0) khPutChar- ((\_ h c -> T.outputTrace khPutChar [c] Prelude.>> IO.hPutChar h c) Prelude.True- (toHandle khPutChar z1hPutChar) (T.toChar khPutChar z2hPutChar))--ghPutStr ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun String (IO T.Tuple0)))--ghPutStr phPutStr p = T.ufun2 ahPutStr phPutStr p hhPutStr--hhPutStr z1hPutStr z2hPutStr khPutStr =- (T.fromIO T.fromTuple0) khPutStr- ((\_ h s -> T.outputTrace khPutStr s Prelude.>> IO.hPutStr h s) Prelude.True- (toHandle khPutStr z1hPutStr) (toString khPutStr z2hPutStr))--ghPutStrLn ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun String (IO T.Tuple0)))--hhPutStrLn :: (T.R Handle) -> (T.R String) -> T.RefExp -> T.R (IO T.Tuple0)--ghPutStrLn phPutStrLn p = T.ufun2 ahPutStrLn phPutStrLn p hhPutStrLn--hhPutStrLn fh fs p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>> p)- (T.uwrapForward p (hhPutStr fh fs p))- (T.uwrapForward p (hhPutStr fh (T.fromLitString T.mkNoSrcPos p "\n") p))--ghPrint ::- Show a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun a (IO T.Tuple0)))--hhPrint :: Show a => (T.R Handle) -> (T.R a) -> T.RefExp -> T.R (IO T.Tuple0)--ghPrint phPrint p = T.ufun2 ahPrint phPrint p hhPrint--hhPrint fh fx p =- T.uwrapForward p- (hhPutStrLn fh (T.uap1 T.mkNoSrcPos p (gshow T.mkNoSrcPos p) fx) p)--ghIsOpen :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--ghIsOpen phIsOpen p = T.ufun1 ahIsOpen phIsOpen p hhIsOpen--hhIsOpen z1hIsOpen khIsOpen =- (T.fromIO fromBool) khIsOpen (IO.hIsOpen (toHandle khIsOpen z1hIsOpen))--ghIsClosed :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--ghIsClosed phIsClosed p = T.ufun1 ahIsClosed phIsClosed p hhIsClosed--hhIsClosed z1hIsClosed khIsClosed =- (T.fromIO fromBool) khIsClosed- (IO.hIsClosed (toHandle khIsClosed z1hIsClosed))--ghIsReadable :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--ghIsReadable phIsReadable p = T.ufun1 ahIsReadable phIsReadable p hhIsReadable--hhIsReadable z1hIsReadable khIsReadable =- (T.fromIO fromBool) khIsReadable- (IO.hIsReadable (toHandle khIsReadable z1hIsReadable))--ghIsWritable :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--ghIsWritable phIsWritable p = T.ufun1 ahIsWritable phIsWritable p hhIsWritable--hhIsWritable z1hIsWritable khIsWritable =- (T.fromIO fromBool) khIsWritable- (IO.hIsWritable (toHandle khIsWritable z1hIsWritable))--ghIsSeekable :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--ghIsSeekable phIsSeekable p = T.ufun1 ahIsSeekable phIsSeekable p hhIsSeekable--hhIsSeekable z1hIsSeekable khIsSeekable =- (T.fromIO fromBool) khIsSeekable- (IO.hIsSeekable (toHandle khIsSeekable z1hIsSeekable))--gisAlreadyExistsError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)--gisAlreadyExistsError pisAlreadyExistsError p =- T.ufun1 aisAlreadyExistsError pisAlreadyExistsError p hisAlreadyExistsError--hisAlreadyExistsError z1isAlreadyExistsError kisAlreadyExistsError =- fromBool kisAlreadyExistsError- (Error.isAlreadyExistsError- (toIOError kisAlreadyExistsError z1isAlreadyExistsError))--gisDoesNotExistError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)--gisDoesNotExistError pisDoesNotExistError p =- T.ufun1 aisDoesNotExistError pisDoesNotExistError p hisDoesNotExistError--hisDoesNotExistError z1isDoesNotExistError kisDoesNotExistError =- fromBool kisDoesNotExistError- (Error.isDoesNotExistError- (toIOError kisDoesNotExistError z1isDoesNotExistError))--gisAlreadyInUseError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)--gisAlreadyInUseError pisAlreadyInUseError p =- T.ufun1 aisAlreadyInUseError pisAlreadyInUseError p hisAlreadyInUseError--hisAlreadyInUseError z1isAlreadyInUseError kisAlreadyInUseError =- fromBool kisAlreadyInUseError- (Error.isAlreadyInUseError- (toIOError kisAlreadyInUseError z1isAlreadyInUseError))--gisFullError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)--gisFullError pisFullError p = T.ufun1 aisFullError pisFullError p hisFullError--hisFullError z1isFullError kisFullError =- fromBool kisFullError- (Error.isFullError (toIOError kisFullError z1isFullError))--gisEOFError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)--gisEOFError pisEOFError p = T.ufun1 aisEOFError pisEOFError p hisEOFError--hisEOFError z1isEOFError kisEOFError =- fromBool kisEOFError (Error.isEOFError (toIOError kisEOFError z1isEOFError))--gisIllegalOperation :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)--gisIllegalOperation pisIllegalOperation p =- T.ufun1 aisIllegalOperation pisIllegalOperation p hisIllegalOperation--hisIllegalOperation z1isIllegalOperation kisIllegalOperation =- fromBool kisIllegalOperation- (Error.isIllegalOperation- (toIOError kisIllegalOperation z1isIllegalOperation))--gisPermissionError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)--gisPermissionError pisPermissionError p =- T.ufun1 aisPermissionError pisPermissionError p hisPermissionError--hisPermissionError z1isPermissionError kisPermissionError =- fromBool kisPermissionError- (Error.isPermissionError (toIOError kisPermissionError z1isPermissionError))--gisUserError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)--gisUserError pisUserError p = T.ufun1 aisUserError pisUserError p hisUserError--hisUserError z1isUserError kisUserError =- fromBool kisUserError- (Error.isUserError (toIOError kisUserError z1isUserError))--gioeGetErrorString :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError String)--gioeGetErrorString pioeGetErrorString p =- T.ufun1 aioeGetErrorString pioeGetErrorString p hioeGetErrorString--hioeGetErrorString z1ioeGetErrorString kioeGetErrorString =- fromString kioeGetErrorString- (Error.ioeGetErrorString (toIOError kioeGetErrorString z1ioeGetErrorString))--gioeGetHandle :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError (Maybe Handle))--gioeGetHandle pioeGetHandle p =- T.ufun1 aioeGetHandle pioeGetHandle p hioeGetHandle--hioeGetHandle z1ioeGetHandle kioeGetHandle =- (fromMaybe fromHandle) kioeGetHandle- (Error.ioeGetHandle (toIOError kioeGetHandle z1ioeGetHandle))--gioeGetFileName :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError (Maybe String))--gioeGetFileName pioeGetFileName p =- T.ufun1 aioeGetFileName pioeGetFileName p hioeGetFileName--hioeGetFileName z1ioeGetFileName kioeGetFileName =- (fromMaybe fromString) kioeGetFileName- (Error.ioeGetFileName (toIOError kioeGetFileName z1ioeGetFileName))--gtry :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (IO a) (IO (Either IOError a)))--htry :: (T.R (IO a)) -> T.RefExp -> T.R (IO (Either IOError a))--gtry ptry p = T.ufun1 atry ptry p htry--htry ff p =- T.uwrapForward p- (hcatch- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) ff- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fr p ->- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.con1 T.mkNoSrcPos p Right aRight fr))))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (greturn T.mkNoSrcPos p)- (T.pa0 Left T.cn1 T.mkNoSrcPos p aLeft)) p)--gbracket ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (IO a) (T.Fun (T.Fun a (IO b)) (T.Fun (T.Fun a (IO c)) (IO c))))--hbracket ::- (T.R (IO a)) ->- (T.R (T.Fun a (IO b))) -> (T.R (T.Fun a (IO c))) -> T.RefExp -> T.R (IO c)--gbracket pbracket p = T.ufun3 abracket pbracket p hbracket--hbracket fbefore fafter fm p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fbefore- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fx p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p)- (T.uwrapForward p (htry (T.uap1 T.mkNoSrcPos p fm fx) p))- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ frs p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>> p)- (T.uap1 T.mkNoSrcPos p fafter fx)- (T.uccase T.mkNoSrcPos p- (let- v173v9v175v31v1 (T.R (Right fr) _) p =- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p) fr- v173v9v175v31v1 (T.R (Left fe) _) p =- T.uwrapForward p (hioError fe p)- v173v9v175v31v1 _ p = T.fatal p in (v173v9v175v31v1))- frs)))))--gbracket_ ::- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (IO a) (T.Fun (T.Fun a (IO b)) (T.Fun (IO c) (IO c))))--hbracket_ ::- (T.R (IO a)) ->- (T.R (T.Fun a (IO b))) -> (T.R (IO c)) -> T.RefExp -> T.R (IO c)--gbracket_ pbracket_ p = T.ufun3 abracket_ pbracket_ p hbracket_--hbracket_ fbefore fafter fm p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fbefore- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fx p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p)- (T.uwrapForward p (htry fm p))- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ frs p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>> p)- (T.uap1 T.mkNoSrcPos p fafter fx)- (T.uccase T.mkNoSrcPos p- (let- v183v10v185v32v1 (T.R (Right fr) _) p =- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p) fr- v183v10v185v32v1 (T.R (Left fe) _) p =- T.uwrapForward p (hioError fe p)- v183v10v185v32v1 _ p = T.fatal p in (v183v10v185v32v1))- frs)))))--tIO = T.mkModule "IO" "IO.hs" Prelude.False--aprimHandleEq = T.mkVariable tIO 360001 370041 3 2 "primHandleEq" Prelude.False--aprimHandleShowsPrec =- T.mkVariable tIO 390001 400057 3 3 "primHandleShowsPrec" Prelude.False--aprimHandlePosnEq =- T.mkVariable tIO 500001 510053 3 2 "primHandlePosnEq" Prelude.False--astdin = T.mkVariable tIO 650001 660016 3 0 "stdin" Prelude.False--astdout = T.mkVariable tIO 670001 680017 3 0 "stdout" Prelude.False--astderr = T.mkVariable tIO 690001 700017 3 0 "stderr" Prelude.False--aopenFile = T.mkVariable tIO 720001 730048 3 2 "openFile" Prelude.False--ahClose = T.mkVariable tIO 740001 750038 3 1 "hClose" Prelude.False--ahFileSize = T.mkVariable tIO 770001 780038 3 1 "hFileSize" Prelude.False--ahIsEOF = T.mkVariable tIO 790001 800038 3 1 "hIsEOF" Prelude.False--aisEOF = T.mkVariable tIO 830001 830037 3 0 "isEOF" Prelude.False--ahSetBuffering =- T.mkVariable tIO 850001 860053 3 2 "hSetBuffering" Prelude.False--ahGetBuffering =- T.mkVariable tIO 870001 880039 3 1 "hGetBuffering" Prelude.False--ahFlush = T.mkVariable tIO 890001 900038 3 1 "hFlush" Prelude.False--ahGetPosn = T.mkVariable tIO 910001 920038 3 1 "hGetPosn" Prelude.False--ahSetPosn = T.mkVariable tIO 930001 940042 3 1 "hSetPosn" Prelude.False--ahSeek = T.mkVariable tIO 950001 960061 3 3 "hSeek" Prelude.False--ahWaitForInput =- T.mkVariable tIO 980001 990043 3 2 "hWaitForInput" Prelude.False--ahReady = T.mkVariable tIO 1020001 1020028 3 1 "hReady" Prelude.False--ahGetChar = T.mkVariable tIO 1040001 1050038 3 1 "hGetChar" Prelude.False--ahGetLine = T.mkVariable tIO 1060001 1070038 3 1 "hGetLine" Prelude.False--ahLookAhead = T.mkVariable tIO 1080001 1090038 3 1 "hLookAhead" Prelude.False--ahGetContents =- T.mkVariable tIO 1100001 1110038 3 1 "hGetContents" Prelude.False--ahPutChar = T.mkVariable tIO 1120001 1130046 3 2 "hPutChar" Prelude.False--ahPutStr = T.mkVariable tIO 1140001 1150048 3 2 "hPutStr" Prelude.False--ahPutStrLn = T.mkVariable tIO 1180001 1190038 3 2 "hPutStrLn" Prelude.False--ahPrint = T.mkVariable tIO 1220001 1220032 3 2 "hPrint" Prelude.False--ahIsOpen = T.mkVariable tIO 1240001 1250038 3 1 "hIsOpen" Prelude.False--ahIsClosed = T.mkVariable tIO 1260001 1270038 3 1 "hIsClosed" Prelude.False--ahIsReadable = T.mkVariable tIO 1280001 1290038 3 1 "hIsReadable" Prelude.False--ahIsWritable = T.mkVariable tIO 1300001 1310038 3 1 "hIsWritable" Prelude.False--ahIsSeekable = T.mkVariable tIO 1320001 1330038 3 1 "hIsSeekable" Prelude.False--aisAlreadyExistsError =- T.mkVariable tIO 1350001 1360041 3 1 "isAlreadyExistsError" Prelude.False--aisDoesNotExistError =- T.mkVariable tIO 1370001 1380041 3 1 "isDoesNotExistError" Prelude.False--aisAlreadyInUseError =- T.mkVariable tIO 1390001 1400041 3 1 "isAlreadyInUseError" Prelude.False--aisFullError = T.mkVariable tIO 1410001 1420041 3 1 "isFullError" Prelude.False--aisEOFError = T.mkVariable tIO 1430001 1440041 3 1 "isEOFError" Prelude.False--aisIllegalOperation =- T.mkVariable tIO 1450001 1460041 3 1 "isIllegalOperation" Prelude.False--aisPermissionError =- T.mkVariable tIO 1470001 1480041 3 1 "isPermissionError" Prelude.False--aisUserError = T.mkVariable tIO 1490001 1500041 3 1 "isUserError" Prelude.False--aioeGetErrorString =- T.mkVariable tIO 1520001 1530043 3 1 "ioeGetErrorString" Prelude.False--aioeGetHandle =- T.mkVariable tIO 1540001 1550042 3 1 "ioeGetHandle" Prelude.False--aioeGetFileName =- T.mkVariable tIO 1570001 1580042 3 1 "ioeGetFileName" Prelude.False--atry = T.mkVariable tIO 1640001 1660038 3 1 "try" Prelude.False--abracket = T.mkVariable tIO 1690001 1750031 3 3 "bracket" Prelude.False--abracket_ = T.mkVariable tIO 1790001 1850032 3 3 "bracket_" Prelude.False--(+&%=&=&%=$#==) = T.mkVariable tIO 430004 430021 16 0 "==" Prelude.False--a46v3v46v33showsPrec =- T.mkVariable tIO 460003 460033 3 0 "showsPrec" Prelude.False--(+*&=&=*&=$*==) = T.mkVariable tIO 540004 540025 16 0 "==" Prelude.False+ (Handle, HandlePosn,+ IOMode(ReadMode, WriteMode, AppendMode,+ ReadWriteMode),+ aReadMode, aWriteMode, aAppendMode, aReadWriteMode,+ BufferMode(NoBuffering, LineBuffering,+ BlockBuffering),+ aNoBuffering, aLineBuffering, aBlockBuffering,+ SeekMode(AbsoluteSeek, RelativeSeek, SeekFromEnd),+ aAbsoluteSeek, aRelativeSeek, aSeekFromEnd, gstdin,+ gstdout, gstderr, gopenFile, aopenFile, hopenFile,+ ghClose, ahClose, hhClose, ghFileSize, ahFileSize,+ hhFileSize, ghIsEOF, ahIsEOF, hhIsEOF, gisEOF,+ ghSetBuffering, ahSetBuffering, hhSetBuffering,+ ghGetBuffering, ahGetBuffering, hhGetBuffering,+ ghFlush, ahFlush, hhFlush, ghGetPosn, ahGetPosn,+ hhGetPosn, ghSetPosn, ahSetPosn, hhSetPosn, ghSeek,+ ahSeek, hhSeek, ghWaitForInput, ahWaitForInput,+ hhWaitForInput, ghReady, ahReady, hhReady, ghGetChar,+ ahGetChar, hhGetChar, ghGetLine, ahGetLine,+ hhGetLine, ghLookAhead, ahLookAhead, hhLookAhead,+ ghGetContents, ahGetContents, hhGetContents,+ ghPutChar, ahPutChar, hhPutChar, ghPutStr, ahPutStr,+ hhPutStr, ghPutStrLn, ahPutStrLn, hhPutStrLn,+ ghPrint, ahPrint, hhPrint, ghIsOpen, ahIsOpen,+ hhIsOpen, ghIsClosed, ahIsClosed, hhIsClosed,+ ghIsReadable, ahIsReadable, hhIsReadable,+ ghIsWritable, ahIsWritable, hhIsWritable,+ ghIsSeekable, ahIsSeekable, hhIsSeekable,+ gisAlreadyExistsError, aisAlreadyExistsError,+ hisAlreadyExistsError, gisDoesNotExistError,+ aisDoesNotExistError, hisDoesNotExistError,+ gisAlreadyInUseError, aisAlreadyInUseError,+ hisAlreadyInUseError, gisFullError, aisFullError,+ hisFullError, gisEOFError, aisEOFError, hisEOFError,+ gisIllegalOperation, aisIllegalOperation,+ hisIllegalOperation, gisPermissionError,+ aisPermissionError, hisPermissionError, gisUserError,+ aisUserError, hisUserError, gioeGetErrorString,+ aioeGetErrorString, hioeGetErrorString,+ gioeGetHandle, aioeGetHandle, hioeGetHandle,+ gioeGetFileName, aioeGetFileName, hioeGetFileName,+ gtry, atry, htry, gbracket, abracket, hbracket,+ gbracket_, abracket_, hbracket_, IO, FilePath,+ IOError, gioError, aioError, hioError, guserError,+ auserError, huserError, gcatch, acatch, hcatch,+ ginteract, ainteract, hinteract, gputChar, aputChar,+ hputChar, gputStr, aputStr, hputStr, gputStrLn,+ aputStrLn, hputStrLn, gprint, aprint, hprint,+ ggetChar, ggetLine, ggetContents, greadFile,+ areadFile, hreadFile, gwriteFile, awriteFile,+ hwriteFile, gappendFile, aappendFile, happendFile,+ greadIO, areadIO, hreadIO, greadLn)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.Ix+ (Ix(grange, gindex, ginRange, srange, sindex,+ sinRange))+import Hat.PreludeBuiltinTypes as T+import System.IO (Handle, HandlePosn)+import qualified System.IO as IO+import qualified System.IO.Error as Error+import Hat.IOBuiltinTypes+import Hat.IOBuiltin as T+ +gprimHandleEq ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (T.Fun Handle Bool))+gprimHandleEq pprimHandleEq p+ = T.ufun2 aprimHandleEq pprimHandleEq p hprimHandleEq+hprimHandleEq z1primHandleEq z2primHandleEq+ kprimHandleEq+ = T.fromBool kprimHandleEq+ ((Prelude.==)+ (T.toHandle kprimHandleEq z1primHandleEq)+ (T.toHandle kprimHandleEq z2primHandleEq))+ +gprimHandleShowsPrec ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Int (T.Fun Handle (T.Fun String String)))+gprimHandleShowsPrec pprimHandleShowsPrec p+ = T.ufun3 aprimHandleShowsPrec pprimHandleShowsPrec p+ hprimHandleShowsPrec+hprimHandleShowsPrec z1primHandleShowsPrec+ z2primHandleShowsPrec z3primHandleShowsPrec+ kprimHandleShowsPrec+ = T.fromString kprimHandleShowsPrec+ (Prelude.showsPrec+ (T.toInt kprimHandleShowsPrec z1primHandleShowsPrec)+ (T.toHandle kprimHandleShowsPrec+ z2primHandleShowsPrec)+ (T.toString kprimHandleShowsPrec+ z3primHandleShowsPrec))+ +instance Eq Handle where+ (%==) !== p = T.uconstUse (%==) p (|==)+ (|==)+ = T.uconstDef p (+&%=%=&%=$#==)+ (\ p -> gprimHandleEq T.mkNoSrcPos p)+ +instance Show Handle where+ gshowsPrec pshowsPrec p+ = T.uconstUse pshowsPrec p sshowsPrec+ sshowsPrec+ = T.uconstDef p c46v3v46v33showsPrec+ (\ p -> gprimHandleShowsPrec T.mkNoSrcPos p)+ +gprimHandlePosnEq ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun HandlePosn (T.Fun HandlePosn Bool))+gprimHandlePosnEq pprimHandlePosnEq p+ = T.ufun2 aprimHandlePosnEq pprimHandlePosnEq p+ hprimHandlePosnEq+hprimHandlePosnEq z1primHandlePosnEq+ z2primHandlePosnEq kprimHandlePosnEq+ = T.fromBool kprimHandlePosnEq+ ((Prelude.==)+ (T.toHandlePosn kprimHandlePosnEq z1primHandlePosnEq)+ (T.toHandlePosn kprimHandlePosnEq+ z2primHandlePosnEq))+ +instance Eq HandlePosn where+ (%==) !== p = T.uconstUse (%==) p (|==)+ (|==)+ = T.uconstDef p (+*&=%=*&=$*==)+ (\ p -> gprimHandlePosnEq T.mkNoSrcPos p)+ +gstdin :: T.RefSrcPos -> T.RefExp -> T.R Handle+gstdin pstdin p = T.uconstUse pstdin p sstdin+sstdin+ = T.uconstDef p astdin+ (\ p -> T.fromHandle p IO.stdin)+ +gstdout :: T.RefSrcPos -> T.RefExp -> T.R Handle+gstdout pstdout p = T.uconstUse pstdout p sstdout+sstdout+ = T.uconstDef p astdout+ (\ p -> T.fromHandle p IO.stdout)+ +gstderr :: T.RefSrcPos -> T.RefExp -> T.R Handle+gstderr pstderr p = T.uconstUse pstderr p sstderr+sstderr+ = T.uconstDef p astderr+ (\ p -> T.fromHandle p IO.stderr)+ +gopenFile ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun String (T.Fun IOMode (IO Handle)))+gopenFile popenFile p+ = T.ufun2 aopenFile popenFile p hopenFile+hopenFile z1openFile z2openFile kopenFile+ = T.fromIO T.fromHandle kopenFile+ (IO.openFile (T.toString kopenFile z1openFile)+ (T.toIOMode kopenFile z2openFile))+ +ghClose ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO T.Tuple0))+ghClose phClose p = T.ufun1 ahClose phClose p hhClose+hhClose z1hClose khClose+ = T.fromIO T.fromTuple0 khClose+ (IO.hClose (T.toHandle khClose z1hClose))+ +ghFileSize ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Integer))+ghFileSize phFileSize p+ = T.ufun1 ahFileSize phFileSize p hhFileSize+hhFileSize z1hFileSize khFileSize+ = T.fromIO T.fromInteger khFileSize+ (IO.hFileSize (T.toHandle khFileSize z1hFileSize))+ +ghIsEOF ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ghIsEOF phIsEOF p = T.ufun1 ahIsEOF phIsEOF p hhIsEOF+hhIsEOF z1hIsEOF khIsEOF+ = T.fromIO T.fromBool khIsEOF+ (IO.hIsEOF (T.toHandle khIsEOF z1hIsEOF))+ +gisEOF :: T.RefSrcPos -> T.RefExp -> T.R (IO Bool)+ +sisEOF :: T.R (IO Bool)+gisEOF pisEOF p = T.uconstUse pisEOF p sisEOF+sisEOF+ = T.uconstDef p aisEOF+ (\ p ->+ T.uwrapForward p (hhIsEOF (gstdin T.mkNoSrcPos p) p))+ +ghSetBuffering ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Handle (T.Fun BufferMode (IO T.Tuple0)))+ghSetBuffering phSetBuffering p+ = T.ufun2 ahSetBuffering phSetBuffering p+ hhSetBuffering+hhSetBuffering z1hSetBuffering z2hSetBuffering+ khSetBuffering+ = T.fromIO T.fromTuple0 khSetBuffering+ (IO.hSetBuffering+ (T.toHandle khSetBuffering z1hSetBuffering)+ (T.toBufferMode khSetBuffering z2hSetBuffering))+ +ghGetBuffering ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO BufferMode))+ghGetBuffering phGetBuffering p+ = T.ufun1 ahGetBuffering phGetBuffering p+ hhGetBuffering+hhGetBuffering z1hGetBuffering khGetBuffering+ = T.fromIO T.fromBufferMode khGetBuffering+ (IO.hGetBuffering+ (T.toHandle khGetBuffering z1hGetBuffering))+ +ghFlush ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO T.Tuple0))+ghFlush phFlush p = T.ufun1 ahFlush phFlush p hhFlush+hhFlush z1hFlush khFlush+ = T.fromIO T.fromTuple0 khFlush+ (IO.hFlush (T.toHandle khFlush z1hFlush))+ +ghGetPosn ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO HandlePosn))+ghGetPosn phGetPosn p+ = T.ufun1 ahGetPosn phGetPosn p hhGetPosn+hhGetPosn z1hGetPosn khGetPosn+ = T.fromIO T.fromHandlePosn khGetPosn+ (IO.hGetPosn (T.toHandle khGetPosn z1hGetPosn))+ +ghSetPosn ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun HandlePosn (IO T.Tuple0))+ghSetPosn phSetPosn p+ = T.ufun1 ahSetPosn phSetPosn p hhSetPosn+hhSetPosn z1hSetPosn khSetPosn+ = T.fromIO T.fromTuple0 khSetPosn+ (IO.hSetPosn (T.toHandlePosn khSetPosn z1hSetPosn))+ +ghSeek ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun Handle+ (T.Fun SeekMode (T.Fun Integer (IO T.Tuple0))))+ghSeek phSeek p = T.ufun3 ahSeek phSeek p hhSeek+hhSeek z1hSeek z2hSeek z3hSeek khSeek+ = T.fromIO T.fromTuple0 khSeek+ (IO.hSeek (T.toHandle khSeek z1hSeek)+ (T.toSeekMode khSeek z2hSeek)+ (T.toInteger khSeek z3hSeek))+ +ghWaitForInput ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (T.Fun Int (IO Bool)))+ghWaitForInput phWaitForInput p+ = T.ufun2 ahWaitForInput phWaitForInput p+ hhWaitForInput+hhWaitForInput z1hWaitForInput z2hWaitForInput+ khWaitForInput+ = T.fromIO T.fromBool khWaitForInput+ (IO.hWaitForInput+ (T.toHandle khWaitForInput z1hWaitForInput)+ (T.toInt khWaitForInput z2hWaitForInput))+ +ghReady ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ +hhReady :: T.R Handle -> T.RefExp -> T.R (IO Bool)+ghReady phReady p = T.ufun1 ahReady phReady p hhReady+hhReady fh p+ = T.uwrapForward p+ (hhWaitForInput fh+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0)))+ p)+ +ghGetChar ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Char))+ghGetChar phGetChar p+ = T.ufun1 ahGetChar phGetChar p hhGetChar+hhGetChar z1hGetChar khGetChar+ = T.fromIO T.fromChar khGetChar+ (IO.hGetChar (T.toHandle khGetChar z1hGetChar))+ +ghGetLine ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO String))+ghGetLine phGetLine p+ = T.ufun1 ahGetLine phGetLine p hhGetLine+hhGetLine z1hGetLine khGetLine+ = T.fromIO T.fromString khGetLine+ (IO.hGetLine (T.toHandle khGetLine z1hGetLine))+ +ghLookAhead ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Char))+ghLookAhead phLookAhead p+ = T.ufun1 ahLookAhead phLookAhead p hhLookAhead+hhLookAhead z1hLookAhead khLookAhead+ = T.fromIO T.fromChar khLookAhead+ (IO.hLookAhead (T.toHandle khLookAhead z1hLookAhead))+ +ghGetContents ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO String))+ghGetContents phGetContents p+ = T.ufun1 ahGetContents phGetContents p hhGetContents+hhGetContents z1hGetContents khGetContents+ = T.fromIO T.fromString khGetContents+ (IO.hGetContents+ (T.toHandle khGetContents z1hGetContents))+ +ghPutChar ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Handle (T.Fun Char (IO T.Tuple0)))+ghPutChar phPutChar p+ = T.ufun2 ahPutChar phPutChar p hhPutChar+hhPutChar z1hPutChar z2hPutChar khPutChar+ = T.fromIO T.fromTuple0 khPutChar+ ((\_ h c -> T.outputTrace khPutChar [c] Prelude.>> IO.hPutChar h c) Prelude.True+ (T.toHandle khPutChar z1hPutChar)+ (T.toChar khPutChar z2hPutChar))+ +ghPutStr ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Handle (T.Fun String (IO T.Tuple0)))+ghPutStr phPutStr p+ = T.ufun2 ahPutStr phPutStr p hhPutStr+hhPutStr z1hPutStr z2hPutStr khPutStr+ = T.fromIO T.fromTuple0 khPutStr+ ((\_ h s -> T.outputTrace khPutStr s Prelude.>> IO.hPutStr h s) Prelude.True+ (T.toHandle khPutStr z1hPutStr)+ (T.toString khPutStr z2hPutStr))+ +ghPutStrLn ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Handle (T.Fun String (IO T.Tuple0)))+ +hhPutStrLn ::+ T.R Handle ->+ T.R String -> T.RefExp -> T.R (IO T.Tuple0)+ghPutStrLn phPutStrLn p+ = T.ufun2 ahPutStrLn phPutStrLn p hhPutStrLn+hhPutStrLn fh fs p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>) T.mkNoSrcPos p)+ (T.uwrapForward p (hhPutStr fh fs p))+ (T.uwrapForward p+ (hhPutStr fh (T.fromLitString T.mkNoSrcPos p "\n")+ p))+ +ghPrint ::+ (Show a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Handle (T.Fun a (IO T.Tuple0)))+ +hhPrint ::+ (Show a) =>+ T.R Handle -> T.R a -> T.RefExp -> T.R (IO T.Tuple0)+ghPrint phPrint p = T.ufun2 ahPrint phPrint p hhPrint+hhPrint fh fx p+ = T.uwrapForward p+ (hhPutStrLn fh+ (T.uap1 T.mkNoSrcPos p (gshow T.mkNoSrcPos p) fx)+ p)+ +ghIsOpen ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ghIsOpen phIsOpen p+ = T.ufun1 ahIsOpen phIsOpen p hhIsOpen+hhIsOpen z1hIsOpen khIsOpen+ = T.fromIO T.fromBool khIsOpen+ (IO.hIsOpen (T.toHandle khIsOpen z1hIsOpen))+ +ghIsClosed ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ghIsClosed phIsClosed p+ = T.ufun1 ahIsClosed phIsClosed p hhIsClosed+hhIsClosed z1hIsClosed khIsClosed+ = T.fromIO T.fromBool khIsClosed+ (IO.hIsClosed (T.toHandle khIsClosed z1hIsClosed))+ +ghIsReadable ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ghIsReadable phIsReadable p+ = T.ufun1 ahIsReadable phIsReadable p hhIsReadable+hhIsReadable z1hIsReadable khIsReadable+ = T.fromIO T.fromBool khIsReadable+ (IO.hIsReadable+ (T.toHandle khIsReadable z1hIsReadable))+ +ghIsWritable ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ghIsWritable phIsWritable p+ = T.ufun1 ahIsWritable phIsWritable p hhIsWritable+hhIsWritable z1hIsWritable khIsWritable+ = T.fromIO T.fromBool khIsWritable+ (IO.hIsWritable+ (T.toHandle khIsWritable z1hIsWritable))+ +ghIsSeekable ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ghIsSeekable phIsSeekable p+ = T.ufun1 ahIsSeekable phIsSeekable p hhIsSeekable+hhIsSeekable z1hIsSeekable khIsSeekable+ = T.fromIO T.fromBool khIsSeekable+ (IO.hIsSeekable+ (T.toHandle khIsSeekable z1hIsSeekable))+ +gisAlreadyExistsError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)+gisAlreadyExistsError pisAlreadyExistsError p+ = T.ufun1 aisAlreadyExistsError pisAlreadyExistsError+ p+ hisAlreadyExistsError+hisAlreadyExistsError z1isAlreadyExistsError+ kisAlreadyExistsError+ = T.fromBool kisAlreadyExistsError+ (Error.isAlreadyExistsError+ (T.toIOError kisAlreadyExistsError+ z1isAlreadyExistsError))+ +gisDoesNotExistError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)+gisDoesNotExistError pisDoesNotExistError p+ = T.ufun1 aisDoesNotExistError pisDoesNotExistError p+ hisDoesNotExistError+hisDoesNotExistError z1isDoesNotExistError+ kisDoesNotExistError+ = T.fromBool kisDoesNotExistError+ (Error.isDoesNotExistError+ (T.toIOError kisDoesNotExistError+ z1isDoesNotExistError))+ +gisAlreadyInUseError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)+gisAlreadyInUseError pisAlreadyInUseError p+ = T.ufun1 aisAlreadyInUseError pisAlreadyInUseError p+ hisAlreadyInUseError+hisAlreadyInUseError z1isAlreadyInUseError+ kisAlreadyInUseError+ = T.fromBool kisAlreadyInUseError+ (Error.isAlreadyInUseError+ (T.toIOError kisAlreadyInUseError+ z1isAlreadyInUseError))+ +gisFullError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)+gisFullError pisFullError p+ = T.ufun1 aisFullError pisFullError p hisFullError+hisFullError z1isFullError kisFullError+ = T.fromBool kisFullError+ (Error.isFullError+ (T.toIOError kisFullError z1isFullError))+ +gisEOFError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)+gisEOFError pisEOFError p+ = T.ufun1 aisEOFError pisEOFError p hisEOFError+hisEOFError z1isEOFError kisEOFError+ = T.fromBool kisEOFError+ (Error.isEOFError+ (T.toIOError kisEOFError z1isEOFError))+ +gisIllegalOperation ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)+gisIllegalOperation pisIllegalOperation p+ = T.ufun1 aisIllegalOperation pisIllegalOperation p+ hisIllegalOperation+hisIllegalOperation z1isIllegalOperation+ kisIllegalOperation+ = T.fromBool kisIllegalOperation+ (Error.isIllegalOperation+ (T.toIOError kisIllegalOperation+ z1isIllegalOperation))+ +gisPermissionError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)+gisPermissionError pisPermissionError p+ = T.ufun1 aisPermissionError pisPermissionError p+ hisPermissionError+hisPermissionError z1isPermissionError+ kisPermissionError+ = T.fromBool kisPermissionError+ (Error.isPermissionError+ (T.toIOError kisPermissionError z1isPermissionError))+ +gisUserError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError Bool)+gisUserError pisUserError p+ = T.ufun1 aisUserError pisUserError p hisUserError+hisUserError z1isUserError kisUserError+ = T.fromBool kisUserError+ (Error.isUserError+ (T.toIOError kisUserError z1isUserError))+ +gioeGetErrorString ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError String)+gioeGetErrorString pioeGetErrorString p+ = T.ufun1 aioeGetErrorString pioeGetErrorString p+ hioeGetErrorString+hioeGetErrorString z1ioeGetErrorString+ kioeGetErrorString+ = T.fromString kioeGetErrorString+ (Error.ioeGetErrorString+ (T.toIOError kioeGetErrorString z1ioeGetErrorString))+ +gioeGetHandle ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun IOError (Maybe Handle))+gioeGetHandle pioeGetHandle p+ = T.ufun1 aioeGetHandle pioeGetHandle p hioeGetHandle+hioeGetHandle z1ioeGetHandle kioeGetHandle+ = T.fromMaybe T.fromHandle kioeGetHandle+ (Error.ioeGetHandle+ (T.toIOError kioeGetHandle z1ioeGetHandle))+ +gioeGetFileName ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun IOError (Maybe String))+gioeGetFileName pioeGetFileName p+ = T.ufun1 aioeGetFileName pioeGetFileName p+ hioeGetFileName+hioeGetFileName z1ioeGetFileName kioeGetFileName+ = T.fromMaybe T.fromString kioeGetFileName+ (Error.ioeGetFileName+ (T.toIOError kioeGetFileName z1ioeGetFileName))+ +gtry ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (IO a) (IO (Either IOError a)))+ +htry ::+ T.R (IO a) -> T.RefExp -> T.R (IO (Either IOError a))+gtry ptry p = T.ufun1 atry ptry p htry+htry ff p+ = T.uwrapForward p+ (hcatch+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ ff+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fr p ->+ T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.con1 T.mkNoSrcPos p Right aRight fr))))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (greturn T.mkNoSrcPos p)+ (T.pa0 Left T.cn1 T.mkNoSrcPos p aLeft))+ p)+ +gbracket ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (IO a)+ (T.Fun (T.Fun a (IO b))+ (T.Fun (T.Fun a (IO c)) (IO c))))+ +hbracket ::+ T.R (IO a) ->+ T.R (T.Fun a (IO b)) ->+ T.R (T.Fun a (IO c)) -> T.RefExp -> T.R (IO c)+gbracket pbracket p+ = T.ufun3 abracket pbracket p hbracket+hbracket fbefore fafter fm p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fbefore+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fx p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uwrapForward p+ (htry (T.uap1 T.mkNoSrcPos p fm fx) p))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ frs p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p fafter fx)+ (T.uccase T.mkNoSrcPos p+ (let v173v9v178v0v1 (T.R (Right fr) _) p+ = T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ fr+ v173v9v178v0v1 (T.R (Left fe) _) p+ = T.uwrapForward p (hioError fe p)+ v173v9v178v0v1 _ p = T.fatal p+ in v173v9v178v0v1)+ frs)))))+ +gbracket_ ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (IO a)+ (T.Fun (T.Fun a (IO b)) (T.Fun (IO c) (IO c))))+ +hbracket_ ::+ T.R (IO a) ->+ T.R (T.Fun a (IO b)) ->+ T.R (IO c) -> T.RefExp -> T.R (IO c)+gbracket_ pbracket_ p+ = T.ufun3 abracket_ pbracket_ p hbracket_+hbracket_ fbefore fafter fm p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fbefore+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fx p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uwrapForward p (htry fm p))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ frs p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p fafter fx)+ (T.uccase T.mkNoSrcPos p+ (let v183v10v186v0v1 (T.R (Right fr) _) p+ = T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ fr+ v183v10v186v0v1 (T.R (Left fe) _) p+ = T.uwrapForward p (hioError fe p)+ v183v10v186v0v1 _ p = T.fatal p+ in v183v10v186v0v1)+ frs)))))+abracket+ = T.mkVariable tIO 1690001 1780000 3 (3) "bracket"+ Prelude.False+abracket_+ = T.mkVariable tIO 1790001 1860000 3 (3) "bracket_"+ Prelude.False+ahClose+ = T.mkVariable tIO 740001 750025 3 (1) "hClose"+ Prelude.False+ahFileSize+ = T.mkVariable tIO 770001 780025 3 (1) "hFileSize"+ Prelude.False+ahFlush+ = T.mkVariable tIO 890001 900025 3 (1) "hFlush"+ Prelude.False+ahGetBuffering+ = T.mkVariable tIO 870001 880025 3 (1)+ "hGetBuffering"+ Prelude.False+ahGetChar+ = T.mkVariable tIO 1040001 1050025 3 (1) "hGetChar"+ Prelude.False+ahGetContents+ = T.mkVariable tIO 1100001 1110025 3 (1)+ "hGetContents"+ Prelude.False+ahGetLine+ = T.mkVariable tIO 1060001 1070025 3 (1) "hGetLine"+ Prelude.False+ahGetPosn+ = T.mkVariable tIO 910001 920025 3 (1) "hGetPosn"+ Prelude.False+ahIsClosed+ = T.mkVariable tIO 1260001 1270025 3 (1) "hIsClosed"+ Prelude.False+ahIsEOF+ = T.mkVariable tIO 790001 800025 3 (1) "hIsEOF"+ Prelude.False+ahIsOpen+ = T.mkVariable tIO 1240001 1250025 3 (1) "hIsOpen"+ Prelude.False+ahIsReadable+ = T.mkVariable tIO 1280001 1290025 3 (1)+ "hIsReadable"+ Prelude.False+ahIsSeekable+ = T.mkVariable tIO 1320001 1330025 3 (1)+ "hIsSeekable"+ Prelude.False+ahIsWritable+ = T.mkVariable tIO 1300001 1310025 3 (1)+ "hIsWritable"+ Prelude.False+ahLookAhead+ = T.mkVariable tIO 1080001 1090025 3 (1) "hLookAhead"+ Prelude.False+ahPrint+ = T.mkVariable tIO 1220001 1220033 3 (2) "hPrint"+ Prelude.False+ahPutChar+ = T.mkVariable tIO 1120001 1130025 3 (2) "hPutChar"+ Prelude.False+ahPutStr+ = T.mkVariable tIO 1140001 1150025 3 (2) "hPutStr"+ Prelude.False+ahPutStrLn+ = T.mkVariable tIO 1180001 1210000 3 (2) "hPutStrLn"+ Prelude.False+ahReady+ = T.mkVariable tIO 1020001 1020028 3 (1) "hReady"+ Prelude.False+ahSeek+ = T.mkVariable tIO 950001 960025 3 (3) "hSeek"+ Prelude.False+ahSetBuffering+ = T.mkVariable tIO 850001 860025 3 (2)+ "hSetBuffering"+ Prelude.False+ahSetPosn+ = T.mkVariable tIO 930001 940025 3 (1) "hSetPosn"+ Prelude.False+ahWaitForInput+ = T.mkVariable tIO 980001 990023 3 (2)+ "hWaitForInput"+ Prelude.False+aioeGetErrorString+ = T.mkVariable tIO 1520001 1530025 3 (1)+ "ioeGetErrorString"+ Prelude.False+aioeGetFileName+ = T.mkVariable tIO 1570001 1580025 3 (1)+ "ioeGetFileName"+ Prelude.False+aioeGetHandle+ = T.mkVariable tIO 1540001 1550025 3 (1)+ "ioeGetHandle"+ Prelude.False+aisAlreadyExistsError+ = T.mkVariable tIO 1350001 1360025 3 (1)+ "isAlreadyExistsError"+ Prelude.False+aisAlreadyInUseError+ = T.mkVariable tIO 1390001 1400025 3 (1)+ "isAlreadyInUseError"+ Prelude.False+aisDoesNotExistError+ = T.mkVariable tIO 1370001 1380025 3 (1)+ "isDoesNotExistError"+ Prelude.False+aisEOF+ = T.mkVariable tIO 830001 830037 3 (0) "isEOF"+ Prelude.False+aisEOFError+ = T.mkVariable tIO 1430001 1440025 3 (1) "isEOFError"+ Prelude.False+aisFullError+ = T.mkVariable tIO 1410001 1420025 3 (1)+ "isFullError"+ Prelude.False+aisIllegalOperation+ = T.mkVariable tIO 1450001 1460025 3 (1)+ "isIllegalOperation"+ Prelude.False+aisPermissionError+ = T.mkVariable tIO 1470001 1480025 3 (1)+ "isPermissionError"+ Prelude.False+aisUserError+ = T.mkVariable tIO 1490001 1500025 3 (1)+ "isUserError"+ Prelude.False+aopenFile+ = T.mkVariable tIO 720001 730025 3 (2) "openFile"+ Prelude.False+aprimHandleEq+ = T.mkVariable tIO 360001 370016 3 (2) "primHandleEq"+ Prelude.False+aprimHandlePosnEq+ = T.mkVariable tIO 500001 510020 3 (2)+ "primHandlePosnEq"+ Prelude.False+aprimHandleShowsPrec+ = T.mkVariable tIO 390001 400023 3 (3)+ "primHandleShowsPrec"+ Prelude.False+astderr+ = T.mkVariable tIO 690001 700010 3 (0) "stderr"+ Prelude.False+astdin+ = T.mkVariable tIO 650001 660009 3 (0) "stdin"+ Prelude.False+astdout+ = T.mkVariable tIO 670001 680010 3 (0) "stdout"+ Prelude.False+atry+ = T.mkVariable tIO 1640001 1660039 3 (1) "try"+ Prelude.False+(+&%=%=&%=$#==)+ = T.mkVariable tIO 430003 430021 3 (-1) "=="+ Prelude.False+c46v3v46v33showsPrec+ = T.mkVariable tIO 460003 460033 3 (-1) "showsPrec"+ Prelude.False+(+*&=%=*&=$*==)+ = T.mkVariable tIO 540003 540025 3 (-1) "=="+ Prelude.False+p = T.mkRoot+tIO = T.mkModule "IO" "IO.hs" Prelude.False
Hat/IOBuiltinTypes.hs view
@@ -1,1120 +1,1206 @@ module Hat.IOBuiltinTypes- (IOMode(..),BufferMode(..),SeekMode(..),aReadMode,aWriteMode,aAppendMode- ,aReadWriteMode,aNoBuffering,aLineBuffering,aBlockBuffering,aAbsoluteSeek- ,aRelativeSeek,aSeekFromEnd) 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.Ix (Ix(..))--data IOMode = ReadMode | WriteMode | AppendMode | ReadWriteMode --instance T.WrapVal (IOMode)- where- - wrapVal pwrapVal (kwrapVal@ReadMode) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aReadMode)- wrapVal pwrapVal (kwrapVal@WriteMode) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aWriteMode)- wrapVal pwrapVal (kwrapVal@AppendMode) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aAppendMode)- wrapVal pwrapVal (kwrapVal@ReadWriteMode) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aReadWriteMode)- --instance Eq (IOMode)- where- - (!==) (%==) p =- T.ufun2 (++=%$=+=%%==) (%==) p (*==)- where- - (*==) (T.R ReadMode _) (T.R ReadMode _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R WriteMode _) (T.R WriteMode _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R AppendMode _) (T.R AppendMode _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R ReadWriteMode _) (T.R ReadWriteMode _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (IOMode)- where- - gcompare pcompare p =- T.ufun2 a6v36v6v38compare pcompare p hcompare- where- - hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a6v36v6v38localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a6v36v6v38localFromEnum- - hlocalFromEnum (T.R (ReadMode) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R (WriteMode) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R (AppendMode) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R (ReadWriteMode) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum _ p = T.fatal p- - - --instance Ix (IOMode)- where- - grange prange p =- T.ufun1 a6v41v6v42range prange p hrange- where- - hrange (T.R (T.Tuple2 fy1 fy2) _) p =- T.uwrapForward p- (Hat.PreludeBasic.hmap (glocalToEnum T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p))) p)- where- - glocalToEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Hat.Prelude.Int IOMode)- - hlocalToEnum :: (T.R Hat.Prelude.Int) -> T.RefExp -> T.R IOMode- - glocalToEnum plocalToEnum p =- T.ufun1 a6v41v6v42localToEnum plocalToEnum p hlocalToEnum- - alocalToEnum = a6v41v6v42localToEnum- - hlocalToEnum fv6v41v6v42n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv6v41v6v42n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p)- (y1localToEnum fv6v41v6v42n p)- where- - h p = T.con0 T.mkNoSrcPos p ReadMode aReadMode- h p = y1localToEnum fv6v41v6v42n p- - hlocalToEnum fv6v41v6v42n p = y1localToEnum fv6v41v6v42n p- - y1localToEnum fv6v41v6v42n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv6v41v6v42n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p)- (y2localToEnum fv6v41v6v42n p)- where- - h p = T.con0 T.mkNoSrcPos p WriteMode aWriteMode- h p = y2localToEnum fv6v41v6v42n p- - y1localToEnum fv6v41v6v42n p = y2localToEnum fv6v41v6v42n p- - y2localToEnum fv6v41v6v42n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv6v41v6v42n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p)- (y3localToEnum fv6v41v6v42n p)- where- - h p = T.con0 T.mkNoSrcPos p AppendMode aAppendMode- h p = y3localToEnum fv6v41v6v42n p- - y2localToEnum fv6v41v6v42n p = y3localToEnum fv6v41v6v42n p- - y3localToEnum fv6v41v6v42n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv6v41v6v42n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3))) (h p) (T.fatal p)- where- - h p = T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode- h p = T.fatal p- - y3localToEnum _ p = T.fatal p- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOMode Hat.Prelude.Int)- - hlocalFromEnum :: (T.R IOMode) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a6v41v6v42localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a6v41v6v42localFromEnum- - hlocalFromEnum (T.R ReadMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R WriteMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R AppendMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R ReadWriteMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum _ p = T.fatal p- - hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a6v41v6v42index pindex p hindex- where- - hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!- p)- (T.uwrapForward p (hlocalFromEnum fy3 p))- (T.uwrapForward p (hlocalFromEnum fy1 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOMode Hat.Prelude.Int)- - hlocalFromEnum :: (T.R IOMode) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a6v41v6v42localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a6v41v6v42localFromEnum- - hlocalFromEnum (T.R ReadMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R WriteMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R AppendMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R ReadWriteMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum _ p = T.fatal p- - hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a6v41v6v42inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (Hat.Ix.ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p)))- (T.uwrapForward p (hlocalFromEnum fy3 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOMode Hat.Prelude.Int)- - hlocalFromEnum :: (T.R IOMode) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a6v41v6v42localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a6v41v6v42localFromEnum- - hlocalFromEnum (T.R ReadMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R WriteMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R AppendMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R ReadWriteMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum _ p = T.fatal p- - hinRange _ _ p = T.fatal p- - --instance Bounded (IOMode)- where- - gminBound pminBound p = T.uconstUse pminBound p sminBound- - sminBound =- T.uconstDef T.mkRoot a6v45v6v51minBound- (\ p -> T.con0 T.mkNoSrcPos p ReadMode aReadMode)- - gmaxBound pmaxBound p = T.uconstUse pmaxBound p smaxBound- - smaxBound =- T.uconstDef T.mkRoot a6v45v6v51maxBound- (\ p -> T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode)- --instance Enum (IOMode)- where- - gfromEnum pfromEnum p =- T.ufun1 a6v54v6v57fromEnum pfromEnum p hfromEnum- where- - hfromEnum (T.R ReadMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hfromEnum (T.R WriteMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hfromEnum (T.R AppendMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hfromEnum (T.R ReadWriteMode _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hfromEnum _ p = T.fatal p- - - gtoEnum ptoEnum p =- T.ufun1 a6v54v6v57toEnum ptoEnum p htoEnum- where- - htoEnum fv6v54v6v57n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv6v54v6v57n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1toEnum fv6v54v6v57n p)- where- - h p = T.con0 T.mkNoSrcPos p ReadMode aReadMode- h p = y1toEnum fv6v54v6v57n p- - htoEnum fv6v54v6v57n p = y1toEnum fv6v54v6v57n p- - y1toEnum fv6v54v6v57n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv6v54v6v57n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p) (y2toEnum fv6v54v6v57n p)- where- - h p = T.con0 T.mkNoSrcPos p WriteMode aWriteMode- h p = y2toEnum fv6v54v6v57n p- - y1toEnum fv6v54v6v57n p = y2toEnum fv6v54v6v57n p- - y2toEnum fv6v54v6v57n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv6v54v6v57n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p) (y3toEnum fv6v54v6v57n p)- where- - h p = T.con0 T.mkNoSrcPos p AppendMode aAppendMode- h p = y3toEnum fv6v54v6v57n p- - y2toEnum fv6v54v6v57n p = y3toEnum fv6v54v6v57n p- - y3toEnum fv6v54v6v57n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv6v54v6v57n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3))) (h p) (y4toEnum fv6v54v6v57n p)- where- - h p = T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode- h p = y4toEnum fv6v54v6v57n p- - y3toEnum fv6v54v6v57n p = y4toEnum fv6v54v6v57n p- - y4toEnum _ p =- T.uwrapForward p- (Hat.Prelude.herror- (T.fromLitString T.mkNoSrcPos p "toEnum: argument out of bounds") p)- - - genumFrom penumFrom p =- T.ufun1 a6v54v6v57enumFrom penumFrom p henumFrom- where- - henumFrom fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fy1- (T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode)- - - genumFromThen penumFromThen p =- T.ufun2 a6v54v6v57enumFromThen penumFromThen p henumFromThen- where- - henumFromThen fy1 fy2 p =- T.uap3 T.mkNoSrcPos p (Hat.Prelude.genumFromThenTo T.mkNoSrcPos p) fy1 fy2- (T.ucif p- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>= p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy1)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy2))- (T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode)- (T.con0 T.mkNoSrcPos p ReadMode aReadMode))- - --instance Read (IOMode)- where- - greadsPrec preadsPrec p =- T.ufun1 a6v60v6v63readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p ReadMode aReadMode))- (T.fromLitString T.mkNoSrcPos p "ReadMode") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p WriteMode aWriteMode))- (T.fromLitString T.mkNoSrcPos p "WriteMode") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p AppendMode aAppendMode))- (T.fromLitString T.mkNoSrcPos p "AppendMode") p)) p))- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode))- (T.fromLitString T.mkNoSrcPos p "ReadWriteMode") p)) p))))- - --instance Show (IOMode)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a6v66v6v69showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (ReadMode) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ReadMode")- hshowsPrec fy1 (T.R (WriteMode) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "WriteMode")- hshowsPrec fy1 (T.R (AppendMode) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "AppendMode")- hshowsPrec fy1 (T.R (ReadWriteMode) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ReadWriteMode")- hshowsPrec _ _ p = T.fatal p- - --data BufferMode =- NoBuffering | LineBuffering | BlockBuffering (T.R (Maybe Int))--instance T.WrapVal (BufferMode)- where- - wrapVal pwrapVal (kwrapVal@NoBuffering) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aNoBuffering)- wrapVal pwrapVal (kwrapVal@LineBuffering) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aLineBuffering)- wrapVal pwrapVal (kwrapVal@(BlockBuffering (T.R _ z1wrapVal))) p =- T.R kwrapVal (T.mkValueApp1 p pwrapVal aBlockBuffering z1wrapVal)- --instance Eq (BufferMode)- where- - (!==) (%==) p =- T.ufun2 (+>=%$=>=%%==) (%==) p (*==)- where- - (*==) (T.R NoBuffering _) (T.R NoBuffering _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R LineBuffering _) (T.R LineBuffering _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R (BlockBuffering fy1) _) (T.R (BlockBuffering fy2) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy1 fy2- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (BufferMode)- where- - gcompare pcompare p =- T.ufun2 a9v36v9v38compare pcompare p hcompare- where- - hcompare (T.R (BlockBuffering fy3) _) (T.R (BlockBuffering fy4) _) p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p) fy3 fy4- hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a9v36v9v38localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a9v36v9v38localFromEnum- - hlocalFromEnum (T.R (NoBuffering) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R (LineBuffering) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R (BlockBuffering _) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum _ p = T.fatal p- - - --instance Read (BufferMode)- where- - greadsPrec preadsPrec p =- T.ufun1 a9v41v9v44readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p NoBuffering aNoBuffering))- (T.fromLitString T.mkNoSrcPos p "NoBuffering") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p LineBuffering aLineBuffering))- (T.fromLitString T.mkNoSrcPos p "LineBuffering") p)) p))- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!> p) fy1- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.pa0 BlockBuffering T.cn1 T.mkNoSrcPos p- aBlockBuffering))- (T.fromLitString T.mkNoSrcPos p "BlockBuffering") p))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.greadsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)))) p)))- - --instance Show (BufferMode)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a9v47v9v50showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (NoBuffering) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "NoBuffering")- hshowsPrec fy1 (T.R (LineBuffering) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "LineBuffering")- hshowsPrec fy1 (T.R (BlockBuffering fy2) _) p =- T.uwrapForward p- (Hat.Prelude.hshowParen- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!> p) fy1- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "BlockBuffering "))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)) fy2)) p)- hshowsPrec _ _ p = T.fatal p- - --data SeekMode = AbsoluteSeek | RelativeSeek | SeekFromEnd --instance T.WrapVal (SeekMode)- where- - wrapVal pwrapVal (kwrapVal@AbsoluteSeek) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aAbsoluteSeek)- wrapVal pwrapVal (kwrapVal@RelativeSeek) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aRelativeSeek)- wrapVal pwrapVal (kwrapVal@SeekFromEnd) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aSeekFromEnd)- --instance Eq (SeekMode)- where- - (!==) (%==) p =- T.ufun2 (+##=%$=##=%%==) (%==) p (*==)- where- - (*==) (T.R AbsoluteSeek _) (T.R AbsoluteSeek _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R RelativeSeek _) (T.R RelativeSeek _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R SeekFromEnd _) (T.R SeekFromEnd _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (SeekMode)- where- - gcompare pcompare p =- T.ufun2 a11v36v11v38compare pcompare p hcompare- where- - hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a11v36v11v38localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a11v36v11v38localFromEnum- - hlocalFromEnum (T.R (AbsoluteSeek) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R (RelativeSeek) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R (SeekFromEnd) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum _ p = T.fatal p- - - --instance Ix (SeekMode)- where- - grange prange p =- T.ufun1 a11v41v11v42range prange p hrange- where- - hrange (T.R (T.Tuple2 fy1 fy2) _) p =- T.uwrapForward p- (Hat.PreludeBasic.hmap (glocalToEnum T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p))) p)- where- - glocalToEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Hat.Prelude.Int SeekMode)- - hlocalToEnum :: (T.R Hat.Prelude.Int) -> T.RefExp -> T.R SeekMode- - glocalToEnum plocalToEnum p =- T.ufun1 a11v41v11v42localToEnum plocalToEnum p hlocalToEnum- - alocalToEnum = a11v41v11v42localToEnum- - hlocalToEnum fv11v41v11v42n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv11v41v11v42n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p)- (y1localToEnum fv11v41v11v42n p)- where- - h p = T.con0 T.mkNoSrcPos p AbsoluteSeek aAbsoluteSeek- h p = y1localToEnum fv11v41v11v42n p- - hlocalToEnum fv11v41v11v42n p = y1localToEnum fv11v41v11v42n p- - y1localToEnum fv11v41v11v42n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv11v41v11v42n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p)- (y2localToEnum fv11v41v11v42n p)- where- - h p = T.con0 T.mkNoSrcPos p RelativeSeek aRelativeSeek- h p = y2localToEnum fv11v41v11v42n p- - y1localToEnum fv11v41v11v42n p = y2localToEnum fv11v41v11v42n p- - y2localToEnum fv11v41v11v42n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv11v41v11v42n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p) (T.fatal p)- where- - h p = T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd- h p = T.fatal p- - y2localToEnum _ p = T.fatal p- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun SeekMode Hat.Prelude.Int)- - hlocalFromEnum :: (T.R SeekMode) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a11v41v11v42localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a11v41v11v42localFromEnum- - hlocalFromEnum (T.R AbsoluteSeek _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R RelativeSeek _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R SeekFromEnd _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum _ p = T.fatal p- - hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a11v41v11v42index pindex p hindex- where- - hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!- p)- (T.uwrapForward p (hlocalFromEnum fy3 p))- (T.uwrapForward p (hlocalFromEnum fy1 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun SeekMode Hat.Prelude.Int)- - hlocalFromEnum :: (T.R SeekMode) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a11v41v11v42localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a11v41v11v42localFromEnum- - hlocalFromEnum (T.R AbsoluteSeek _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R RelativeSeek _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R SeekFromEnd _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum _ p = T.fatal p- - hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a11v41v11v42inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (Hat.Ix.ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p)))- (T.uwrapForward p (hlocalFromEnum fy3 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun SeekMode Hat.Prelude.Int)- - hlocalFromEnum :: (T.R SeekMode) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a11v41v11v42localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a11v41v11v42localFromEnum- - hlocalFromEnum (T.R AbsoluteSeek _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R RelativeSeek _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R SeekFromEnd _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum _ p = T.fatal p- - hinRange _ _ p = T.fatal p- - --instance Bounded (SeekMode)- where- - gminBound pminBound p = T.uconstUse pminBound p sminBound- - sminBound =- T.uconstDef T.mkRoot a11v45v11v51minBound- (\ p -> T.con0 T.mkNoSrcPos p AbsoluteSeek aAbsoluteSeek)- - gmaxBound pmaxBound p = T.uconstUse pmaxBound p smaxBound- - smaxBound =- T.uconstDef T.mkRoot a11v45v11v51maxBound- (\ p -> T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd)- --instance Enum (SeekMode)- where- - gfromEnum pfromEnum p =- T.ufun1 a11v54v11v57fromEnum pfromEnum p hfromEnum- where- - hfromEnum (T.R AbsoluteSeek _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hfromEnum (T.R RelativeSeek _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hfromEnum (T.R SeekFromEnd _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hfromEnum _ p = T.fatal p- - - gtoEnum ptoEnum p =- T.ufun1 a11v54v11v57toEnum ptoEnum p htoEnum- where- - htoEnum fv11v54v11v57n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv11v54v11v57n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1toEnum fv11v54v11v57n p)- where- - h p = T.con0 T.mkNoSrcPos p AbsoluteSeek aAbsoluteSeek- h p = y1toEnum fv11v54v11v57n p- - htoEnum fv11v54v11v57n p = y1toEnum fv11v54v11v57n p- - y1toEnum fv11v54v11v57n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv11v54v11v57n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p) (y2toEnum fv11v54v11v57n p)- where- - h p = T.con0 T.mkNoSrcPos p RelativeSeek aRelativeSeek- h p = y2toEnum fv11v54v11v57n p- - y1toEnum fv11v54v11v57n p = y2toEnum fv11v54v11v57n p- - y2toEnum fv11v54v11v57n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv11v54v11v57n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p) (y3toEnum fv11v54v11v57n p)- where- - h p = T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd- h p = y3toEnum fv11v54v11v57n p- - y2toEnum fv11v54v11v57n p = y3toEnum fv11v54v11v57n p- - y3toEnum _ p =- T.uwrapForward p- (Hat.Prelude.herror- (T.fromLitString T.mkNoSrcPos p "toEnum: argument out of bounds") p)- - - genumFrom penumFrom p =- T.ufun1 a11v54v11v57enumFrom penumFrom p henumFrom- where- - henumFrom fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fy1- (T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd)- - - genumFromThen penumFromThen p =- T.ufun2 a11v54v11v57enumFromThen penumFromThen p henumFromThen- where- - henumFromThen fy1 fy2 p =- T.uap3 T.mkNoSrcPos p (Hat.Prelude.genumFromThenTo T.mkNoSrcPos p) fy1 fy2- (T.ucif p- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>= p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy1)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy2))- (T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd)- (T.con0 T.mkNoSrcPos p AbsoluteSeek aAbsoluteSeek))- - --instance Read (SeekMode)- where- - greadsPrec preadsPrec p =- T.ufun1 a11v60v11v63readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p AbsoluteSeek aAbsoluteSeek))- (T.fromLitString T.mkNoSrcPos p "AbsoluteSeek") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p RelativeSeek aRelativeSeek))- (T.fromLitString T.mkNoSrcPos p "RelativeSeek") p)) p))- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd))- (T.fromLitString T.mkNoSrcPos p "SeekFromEnd") p)) p)))- - --instance Show (SeekMode)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a11v66v11v69showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (AbsoluteSeek) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "AbsoluteSeek")- hshowsPrec fy1 (T.R (RelativeSeek) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "RelativeSeek")- hshowsPrec fy1 (T.R (SeekFromEnd) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "SeekFromEnd")- hshowsPrec _ _ p = T.fatal p- - --tIOBuiltinTypes = T.mkModule "IOBuiltinTypes" "IOBuiltinTypes.hs" Prelude.False--aReadMode = T.mkConstructor tIOBuiltinTypes 50021 50028 3 0 "ReadMode"--aWriteMode = T.mkConstructor tIOBuiltinTypes 50032 50040 3 0 "WriteMode"--aAppendMode = T.mkConstructor tIOBuiltinTypes 50044 50053 3 0 "AppendMode"--aReadWriteMode = T.mkConstructor tIOBuiltinTypes 50057 50069 3 0 "ReadWriteMode"--aNoBuffering = T.mkConstructor tIOBuiltinTypes 70021 70031 3 0 "NoBuffering"--aLineBuffering = T.mkConstructor tIOBuiltinTypes 70035 70047 3 0 "LineBuffering"--aBlockBuffering =- T.mkConstructor tIOBuiltinTypes 80022 80035 3 1 "BlockBuffering"--aAbsoluteSeek = T.mkConstructor tIOBuiltinTypes 100021 100032 3 0 "AbsoluteSeek"--aRelativeSeek = T.mkConstructor tIOBuiltinTypes 100036 100047 3 0 "RelativeSeek"--aSeekFromEnd = T.mkConstructor tIOBuiltinTypes 100051 100061 3 0 "SeekFromEnd"--(++=%$=+=%%==) = T.mkVariable tIOBuiltinTypes 60032 60033 3 2 "==" Prelude.False--a6v36v6v38compare =- T.mkVariable tIOBuiltinTypes 60036 60038 3 2 "compare" Prelude.False--a6v41v6v42range =- T.mkVariable tIOBuiltinTypes 60041 60042 3 1 "range" Prelude.False--a6v41v6v42index =- T.mkVariable tIOBuiltinTypes 60041 60042 3 2 "index" Prelude.False--a6v41v6v42inRange =- T.mkVariable tIOBuiltinTypes 60041 60042 3 2 "inRange" Prelude.False--a6v45v6v51minBound =- T.mkVariable tIOBuiltinTypes 60045 60051 3 0 "minBound" Prelude.False--a6v45v6v51maxBound =- T.mkVariable tIOBuiltinTypes 60045 60051 3 0 "maxBound" Prelude.False--a6v54v6v57fromEnum =- T.mkVariable tIOBuiltinTypes 60054 60057 3 1 "fromEnum" Prelude.False--a6v54v6v57toEnum =- T.mkVariable tIOBuiltinTypes 60054 60057 3 1 "toEnum" Prelude.False--a6v54v6v57enumFrom =- T.mkVariable tIOBuiltinTypes 60054 60057 3 1 "enumFrom" Prelude.False--a6v54v6v57enumFromThen =- T.mkVariable tIOBuiltinTypes 60054 60057 3 2 "enumFromThen" Prelude.False--a6v60v6v63readsPrec =- T.mkVariable tIOBuiltinTypes 60060 60063 3 1 "readsPrec" Prelude.False--a6v66v6v69showsPrec =- T.mkVariable tIOBuiltinTypes 60066 60069 3 2 "showsPrec" Prelude.False--(+>=%$=>=%%==) = T.mkVariable tIOBuiltinTypes 90032 90033 3 2 "==" Prelude.False--a9v36v9v38compare =- T.mkVariable tIOBuiltinTypes 90036 90038 3 2 "compare" Prelude.False--a9v41v9v44readsPrec =- T.mkVariable tIOBuiltinTypes 90041 90044 3 1 "readsPrec" Prelude.False--a9v47v9v50showsPrec =- T.mkVariable tIOBuiltinTypes 90047 90050 3 2 "showsPrec" Prelude.False--(+##=%$=##=%%==) =- T.mkVariable tIOBuiltinTypes 110032 110033 3 2 "==" Prelude.False--a11v36v11v38compare =- T.mkVariable tIOBuiltinTypes 110036 110038 3 2 "compare" Prelude.False--a11v41v11v42range =- T.mkVariable tIOBuiltinTypes 110041 110042 3 1 "range" Prelude.False--a11v41v11v42index =- T.mkVariable tIOBuiltinTypes 110041 110042 3 2 "index" Prelude.False--a11v41v11v42inRange =- T.mkVariable tIOBuiltinTypes 110041 110042 3 2 "inRange" Prelude.False--a11v45v11v51minBound =- T.mkVariable tIOBuiltinTypes 110045 110051 3 0 "minBound" Prelude.False--a11v45v11v51maxBound =- T.mkVariable tIOBuiltinTypes 110045 110051 3 0 "maxBound" Prelude.False--a11v54v11v57fromEnum =- T.mkVariable tIOBuiltinTypes 110054 110057 3 1 "fromEnum" Prelude.False--a11v54v11v57toEnum =- T.mkVariable tIOBuiltinTypes 110054 110057 3 1 "toEnum" Prelude.False--a11v54v11v57enumFrom =- T.mkVariable tIOBuiltinTypes 110054 110057 3 1 "enumFrom" Prelude.False--a11v54v11v57enumFromThen =- T.mkVariable tIOBuiltinTypes 110054 110057 3 2 "enumFromThen" Prelude.False--a11v60v11v63readsPrec =- T.mkVariable tIOBuiltinTypes 110060 110063 3 1 "readsPrec" Prelude.False--a11v66v11v69showsPrec =- T.mkVariable tIOBuiltinTypes 110066 110069 3 2 "showsPrec" Prelude.False--a6v36v6v38localFromEnum =- T.mkVariable tIOBuiltinTypes 60036 60038 3 1 "localFromEnum" Prelude.True--a6v41v6v42localToEnum =- T.mkVariable tIOBuiltinTypes 60041 60042 3 1 "localToEnum" Prelude.True--a6v41v6v42localFromEnum =- T.mkVariable tIOBuiltinTypes 60041 60042 3 1 "localFromEnum" Prelude.True--a9v36v9v38localFromEnum =- T.mkVariable tIOBuiltinTypes 90036 90038 3 1 "localFromEnum" Prelude.True--a11v36v11v38localFromEnum =- T.mkVariable tIOBuiltinTypes 110036 110038 3 1 "localFromEnum" Prelude.True--a11v41v11v42localToEnum =- T.mkVariable tIOBuiltinTypes 110041 110042 3 1 "localToEnum" Prelude.True--a11v41v11v42localFromEnum =- T.mkVariable tIOBuiltinTypes 110041 110042 3 1 "localFromEnum" Prelude.True+ (IOMode(..), BufferMode(..), SeekMode(..),+ aAbsoluteSeek, aAppendMode, aBlockBuffering,+ aLineBuffering, aNoBuffering, aReadMode,+ aReadWriteMode, aRelativeSeek, aSeekFromEnd,+ aWriteMode, (++=%$=+=%%==), (+>=%$=>=%%==),+ (+##=%$=##=%%==))+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.Ix (Ix(..))+ +data IOMode = ReadMode+ | WriteMode+ | AppendMode+ | ReadWriteMode+ +instance T.WrapVal IOMode where+ wrapVal pwrapVal kwrapVal@ReadMode p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aReadMode)+ wrapVal pwrapVal kwrapVal@WriteMode p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aWriteMode)+ wrapVal pwrapVal kwrapVal@AppendMode p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aAppendMode)+ wrapVal pwrapVal kwrapVal@ReadWriteMode p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aReadWriteMode)+ +instance Eq IOMode where+ (%==) !== p = T.ufun2 (++=%$=+=%%==) (%==) p (*==)+ where (T.R ReadMode _ *== T.R ReadMode _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R WriteMode _ *== T.R WriteMode _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R AppendMode _ *== T.R AppendMode _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R ReadWriteMode _ *== T.R ReadWriteMode _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord IOMode where+ gcompare pcompare p+ = T.ufun2 c6v36v6v38compare pcompare p hcompare+ where hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c6v36v6v38localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c6v36v6v38localFromEnum+ hlocalFromEnum (T.R ReadMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R WriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R AppendMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R ReadWriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Ix IOMode where+ grange prange p+ = T.ufun1 c6v41v6v42range prange p hrange+ where hrange (T.R (T.Tuple2 fy1 fy2) _) p+ = T.uwrapForward p+ (hmap (grtoEnum T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ (T.uwrapForward p (hrfromEnum fy1 p))+ (T.uwrapForward p (hrfromEnum fy2 p)))+ p)+ where + grtoEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int IOMode)+ + hrtoEnum :: T.R Int -> T.RefExp -> T.R IOMode+ grtoEnum prtoEnum p+ = T.ufun1 c6v41v6v42rtoEnum prtoEnum p hrtoEnum+ artoEnum = c6v41v6v42rtoEnum+ hrtoEnum fv6v41v6v42n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv6v41v6v42n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h6v41v6v42n p)+ (y1rtoEnum fv6v41v6v42n p)+ where h6v41v6v42n p+ = T.con0 T.mkNoSrcPos p ReadMode aReadMode+ h6v41v6v42n p = y1rtoEnum fv6v41v6v42n p+ hrtoEnum fv6v41v6v42n p = y1rtoEnum fv6v41v6v42n p+ y1rtoEnum fv6v41v6v42n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv6v41v6v42n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h6v41v6v42n p)+ (y2rtoEnum fv6v41v6v42n p)+ where h6v41v6v42n p+ = T.con0 T.mkNoSrcPos p WriteMode aWriteMode+ h6v41v6v42n p = y2rtoEnum fv6v41v6v42n p+ y1rtoEnum fv6v41v6v42n p = y2rtoEnum fv6v41v6v42n p+ y2rtoEnum fv6v41v6v42n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv6v41v6v42n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h6v41v6v42n p)+ (y3rtoEnum fv6v41v6v42n p)+ where h6v41v6v42n p+ = T.con0 T.mkNoSrcPos p AppendMode aAppendMode+ h6v41v6v42n p = y3rtoEnum fv6v41v6v42n p+ y2rtoEnum fv6v41v6v42n p = y3rtoEnum fv6v41v6v42n p+ y3rtoEnum fv6v41v6v42n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv6v41v6v42n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (3))))+ (h6v41v6v42n p)+ (T.fatal p)+ where h6v41v6v42n p+ = T.con0 T.mkNoSrcPos p ReadWriteMode+ aReadWriteMode+ h6v41v6v42n p = T.fatal p+ y3rtoEnum _ p = T.fatal p+ + grfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun IOMode Int)+ + hrfromEnum :: T.R IOMode -> T.RefExp -> T.R Int+ grfromEnum prfromEnum p+ = T.ufun1 c6v41v6v42rfromEnum prfromEnum p hrfromEnum+ arfromEnum = c6v41v6v42rfromEnum+ hrfromEnum (T.R ReadMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hrfromEnum (T.R WriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hrfromEnum (T.R AppendMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hrfromEnum (T.R ReadWriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hrfromEnum _ p = T.fatal p+ gindex pindex p+ = T.ufun2 c6v41v6v42index pindex p hindex+ where hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uwrapForward p (hifromEnum fy3 p))+ (T.uwrapForward p (hifromEnum fy2 p))+ where + gifromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun IOMode Int)+ + hifromEnum :: T.R IOMode -> T.RefExp -> T.R Int+ gifromEnum pifromEnum p+ = T.ufun1 c6v41v6v42ifromEnum pifromEnum p hifromEnum+ aifromEnum = c6v41v6v42ifromEnum+ hifromEnum (T.R ReadMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hifromEnum (T.R WriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hifromEnum (T.R AppendMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hifromEnum (T.R ReadWriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hifromEnum _ p = T.fatal p+ ginRange pinRange p+ = T.ufun2 c6v41v6v42inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hnfromEnum fy1 p))+ (T.uwrapForward p (hnfromEnum fy2 p)))+ (T.uwrapForward p (hnfromEnum fy3 p))+ where + gnfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun IOMode Int)+ + hnfromEnum :: T.R IOMode -> T.RefExp -> T.R Int+ gnfromEnum pnfromEnum p+ = T.ufun1 c6v41v6v42nfromEnum pnfromEnum p hnfromEnum+ anfromEnum = c6v41v6v42nfromEnum+ hnfromEnum (T.R ReadMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hnfromEnum (T.R WriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hnfromEnum (T.R AppendMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hnfromEnum (T.R ReadWriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hnfromEnum _ p = T.fatal p+ +instance Bounded IOMode where+ gminBound pminBound p+ = T.uconstUse pminBound p sminBound+ sminBound+ = T.uconstDef p c6v45v6v51minBound+ (\ p -> T.con0 T.mkNoSrcPos p ReadMode aReadMode)+ gmaxBound pmaxBound p+ = T.uconstUse pmaxBound p smaxBound+ smaxBound+ = T.uconstDef p c6v45v6v51maxBound+ (\ p ->+ T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode)+ +instance Enum IOMode where+ gfromEnum pfromEnum p+ = T.ufun1 c6v54v6v57fromEnum pfromEnum p hfromEnum+ where hfromEnum (T.R ReadMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hfromEnum (T.R WriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hfromEnum (T.R AppendMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hfromEnum (T.R ReadWriteMode _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hfromEnum _ p = T.fatal p+ gtoEnum ptoEnum p+ = T.ufun1 c6v54v6v57toEnum ptoEnum p htoEnum+ where htoEnum fv6v54v6v57n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv6v54v6v57n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h6v54v6v57n p)+ (y1toEnum fv6v54v6v57n p)+ where h6v54v6v57n p+ = T.con0 T.mkNoSrcPos p ReadMode aReadMode+ h6v54v6v57n p = y1toEnum fv6v54v6v57n p+ htoEnum fv6v54v6v57n p = y1toEnum fv6v54v6v57n p+ y1toEnum fv6v54v6v57n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv6v54v6v57n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h6v54v6v57n p)+ (y2toEnum fv6v54v6v57n p)+ where h6v54v6v57n p+ = T.con0 T.mkNoSrcPos p WriteMode aWriteMode+ h6v54v6v57n p = y2toEnum fv6v54v6v57n p+ y1toEnum fv6v54v6v57n p = y2toEnum fv6v54v6v57n p+ y2toEnum fv6v54v6v57n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv6v54v6v57n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h6v54v6v57n p)+ (y3toEnum fv6v54v6v57n p)+ where h6v54v6v57n p+ = T.con0 T.mkNoSrcPos p AppendMode aAppendMode+ h6v54v6v57n p = y3toEnum fv6v54v6v57n p+ y2toEnum fv6v54v6v57n p = y3toEnum fv6v54v6v57n p+ y3toEnum fv6v54v6v57n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv6v54v6v57n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))))+ (h6v54v6v57n p)+ (y4toEnum fv6v54v6v57n p)+ where h6v54v6v57n p+ = T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode+ h6v54v6v57n p = y4toEnum fv6v54v6v57n p+ y3toEnum fv6v54v6v57n p = y4toEnum fv6v54v6v57n p+ y4toEnum _ p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "toEnum: argument out of bounds")+ p)+ genumFrom penumFrom p+ = T.ufun1 c6v54v6v57enumFrom penumFrom p henumFrom+ where henumFrom fy1 p+ = T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ fy1+ (T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode)+ genumFromThen penumFromThen p+ = T.ufun2 c6v54v6v57enumFromThen penumFromThen p+ henumFromThen+ where henumFromThen fy1 fy2 p+ = T.uap3 T.mkNoSrcPos p+ (genumFromThenTo T.mkNoSrcPos p)+ fy1+ fy2+ (T.ucif p+ (T.uap2 T.mkNoSrcPos p ((!>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy2)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy1))+ (T.con0 T.mkNoSrcPos p ReadWriteMode aReadWriteMode)+ (T.con0 T.mkNoSrcPos p ReadMode aReadMode))+ +instance Read IOMode where+ greadsPrec preadsPrec p+ = T.ufun1 c6v60v6v63readsPrec preadsPrec p hreadsPrec+ where hreadsPrec fy1 p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p ReadMode aReadMode))+ (T.fromLitString T.mkNoSrcPos p "ReadMode")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p WriteMode+ aWriteMode))+ (T.fromLitString T.mkNoSrcPos p+ "WriteMode")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p AppendMode+ aAppendMode))+ (T.fromLitString T.mkNoSrcPos p+ "AppendMode")+ p))+ p))+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p ReadWriteMode+ aReadWriteMode))+ (T.fromLitString T.mkNoSrcPos p+ "ReadWriteMode")+ p))+ p))))+ +instance Show IOMode where+ gshowsPrec pshowsPrec p+ = T.ufun2 c6v66v6v69showsPrec pshowsPrec p hshowsPrec+ where hshowsPrec fy1 (T.R ReadMode _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "ReadMode")+ hshowsPrec fy1 (T.R WriteMode _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "WriteMode")+ hshowsPrec fy1 (T.R AppendMode _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "AppendMode")+ hshowsPrec fy1 (T.R ReadWriteMode _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "ReadWriteMode")+ hshowsPrec _ _ p = T.fatal p+ +data BufferMode = NoBuffering+ | LineBuffering+ | BlockBuffering (T.R (Maybe Int))+ +instance T.WrapVal BufferMode where+ wrapVal pwrapVal kwrapVal@NoBuffering p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aNoBuffering)+ wrapVal pwrapVal kwrapVal@LineBuffering p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aLineBuffering)+ wrapVal pwrapVal+ kwrapVal@(BlockBuffering (T.R _ z1wrapVal)) p+ = T.R kwrapVal+ (T.mkValueApp1 p pwrapVal aBlockBuffering z1wrapVal)+ +instance Eq BufferMode where+ (%==) !== p = T.ufun2 (+>=%$=>=%%==) (%==) p (*==)+ where (T.R NoBuffering _ *== T.R NoBuffering _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R LineBuffering _ *== T.R LineBuffering _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R (BlockBuffering fy1) _ *==+ T.R (BlockBuffering fy2) _)+ p+ = T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy1+ fy2)+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue)+ p)+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord BufferMode where+ gcompare pcompare p+ = T.ufun2 c9v36v9v38compare pcompare p hcompare+ where hcompare (T.R (BlockBuffering fy3) _)+ (T.R (BlockBuffering fy4) _) p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p) fy3+ fy4+ hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c9v36v9v38localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c9v36v9v38localFromEnum+ hlocalFromEnum (T.R NoBuffering _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R LineBuffering _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R (BlockBuffering _) _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Read BufferMode where+ greadsPrec preadsPrec p+ = T.ufun1 c9v41v9v44readsPrec preadsPrec p hreadsPrec+ where hreadsPrec fy1 p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p NoBuffering+ aNoBuffering))+ (T.fromLitString T.mkNoSrcPos p "NoBuffering")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p LineBuffering+ aLineBuffering))+ (T.fromLitString T.mkNoSrcPos p+ "LineBuffering")+ p))+ p))+ (T.uwrapForward p+ (hreadParen+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fy1+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos+ p)+ (T.pa0 BlockBuffering T.cn1+ T.mkNoSrcPos+ p+ aBlockBuffering))+ (T.fromLitString T.mkNoSrcPos p+ "BlockBuffering")+ p))+ (T.uap1 T.mkNoSrcPos p+ (greadsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (10)))))+ p)))+ +instance Show BufferMode where+ gshowsPrec pshowsPrec p+ = T.ufun2 c9v47v9v50showsPrec pshowsPrec p hshowsPrec+ where hshowsPrec fy1 (T.R NoBuffering _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "NoBuffering")+ hshowsPrec fy1 (T.R LineBuffering _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "LineBuffering")+ hshowsPrec fy1 (T.R (BlockBuffering fy2) _) p+ = T.uwrapForward p+ (hshowParen+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fy1+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "BlockBuffering "))+ (T.uap2 T.mkNoSrcPos p (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10)))+ fy2))+ p)+ hshowsPrec _ _ p = T.fatal p+ +data SeekMode = AbsoluteSeek+ | RelativeSeek+ | SeekFromEnd+ +instance T.WrapVal SeekMode where+ wrapVal pwrapVal kwrapVal@AbsoluteSeek p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aAbsoluteSeek)+ wrapVal pwrapVal kwrapVal@RelativeSeek p+ = T.R kwrapVal+ (T.mkValueUse p pwrapVal aRelativeSeek)+ wrapVal pwrapVal kwrapVal@SeekFromEnd p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aSeekFromEnd)+ +instance Eq SeekMode where+ (%==) !== p = T.ufun2 (+##=%$=##=%%==) (%==) p (*==)+ where (T.R AbsoluteSeek _ *== T.R AbsoluteSeek _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R RelativeSeek _ *== T.R RelativeSeek _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R SeekFromEnd _ *== T.R SeekFromEnd _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord SeekMode where+ gcompare pcompare p+ = T.ufun2 c11v36v11v38compare pcompare p hcompare+ where hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c11v36v11v38localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c11v36v11v38localFromEnum+ hlocalFromEnum (T.R AbsoluteSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R RelativeSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R SeekFromEnd _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Ix SeekMode where+ grange prange p+ = T.ufun1 c11v41v11v42range prange p hrange+ where hrange (T.R (T.Tuple2 fy1 fy2) _) p+ = T.uwrapForward p+ (hmap (grtoEnum T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ (T.uwrapForward p (hrfromEnum fy1 p))+ (T.uwrapForward p (hrfromEnum fy2 p)))+ p)+ where + grtoEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int SeekMode)+ + hrtoEnum :: T.R Int -> T.RefExp -> T.R SeekMode+ grtoEnum prtoEnum p+ = T.ufun1 c11v41v11v42rtoEnum prtoEnum p hrtoEnum+ artoEnum = c11v41v11v42rtoEnum+ hrtoEnum fv11v41v11v42n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv11v41v11v42n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h11v41v11v42n p)+ (y1rtoEnum fv11v41v11v42n p)+ where h11v41v11v42n p+ = T.con0 T.mkNoSrcPos p AbsoluteSeek+ aAbsoluteSeek+ h11v41v11v42n p = y1rtoEnum fv11v41v11v42n p+ hrtoEnum fv11v41v11v42n p+ = y1rtoEnum fv11v41v11v42n p+ y1rtoEnum fv11v41v11v42n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv11v41v11v42n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h11v41v11v42n p)+ (y2rtoEnum fv11v41v11v42n p)+ where h11v41v11v42n p+ = T.con0 T.mkNoSrcPos p RelativeSeek+ aRelativeSeek+ h11v41v11v42n p = y2rtoEnum fv11v41v11v42n p+ y1rtoEnum fv11v41v11v42n p+ = y2rtoEnum fv11v41v11v42n p+ y2rtoEnum fv11v41v11v42n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv11v41v11v42n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h11v41v11v42n p)+ (T.fatal p)+ where h11v41v11v42n p+ = T.con0 T.mkNoSrcPos p SeekFromEnd+ aSeekFromEnd+ h11v41v11v42n p = T.fatal p+ y2rtoEnum _ p = T.fatal p+ + grfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun SeekMode Int)+ + hrfromEnum :: T.R SeekMode -> T.RefExp -> T.R Int+ grfromEnum prfromEnum p+ = T.ufun1 c11v41v11v42rfromEnum prfromEnum p+ hrfromEnum+ arfromEnum = c11v41v11v42rfromEnum+ hrfromEnum (T.R AbsoluteSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hrfromEnum (T.R RelativeSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hrfromEnum (T.R SeekFromEnd _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hrfromEnum _ p = T.fatal p+ gindex pindex p+ = T.ufun2 c11v41v11v42index pindex p hindex+ where hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uwrapForward p (hifromEnum fy3 p))+ (T.uwrapForward p (hifromEnum fy2 p))+ where + gifromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun SeekMode Int)+ + hifromEnum :: T.R SeekMode -> T.RefExp -> T.R Int+ gifromEnum pifromEnum p+ = T.ufun1 c11v41v11v42ifromEnum pifromEnum p+ hifromEnum+ aifromEnum = c11v41v11v42ifromEnum+ hifromEnum (T.R AbsoluteSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hifromEnum (T.R RelativeSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hifromEnum (T.R SeekFromEnd _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hifromEnum _ p = T.fatal p+ ginRange pinRange p+ = T.ufun2 c11v41v11v42inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hnfromEnum fy1 p))+ (T.uwrapForward p (hnfromEnum fy2 p)))+ (T.uwrapForward p (hnfromEnum fy3 p))+ where + gnfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun SeekMode Int)+ + hnfromEnum :: T.R SeekMode -> T.RefExp -> T.R Int+ gnfromEnum pnfromEnum p+ = T.ufun1 c11v41v11v42nfromEnum pnfromEnum p+ hnfromEnum+ anfromEnum = c11v41v11v42nfromEnum+ hnfromEnum (T.R AbsoluteSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hnfromEnum (T.R RelativeSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hnfromEnum (T.R SeekFromEnd _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hnfromEnum _ p = T.fatal p+ +instance Bounded SeekMode where+ gminBound pminBound p+ = T.uconstUse pminBound p sminBound+ sminBound+ = T.uconstDef p c11v45v11v51minBound+ (\ p ->+ T.con0 T.mkNoSrcPos p AbsoluteSeek aAbsoluteSeek)+ gmaxBound pmaxBound p+ = T.uconstUse pmaxBound p smaxBound+ smaxBound+ = T.uconstDef p c11v45v11v51maxBound+ (\ p ->+ T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd)+ +instance Enum SeekMode where+ gfromEnum pfromEnum p+ = T.ufun1 c11v54v11v57fromEnum pfromEnum p hfromEnum+ where hfromEnum (T.R AbsoluteSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hfromEnum (T.R RelativeSeek _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hfromEnum (T.R SeekFromEnd _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hfromEnum _ p = T.fatal p+ gtoEnum ptoEnum p+ = T.ufun1 c11v54v11v57toEnum ptoEnum p htoEnum+ where htoEnum fv11v54v11v57n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv11v54v11v57n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h11v54v11v57n p)+ (y1toEnum fv11v54v11v57n p)+ where h11v54v11v57n p+ = T.con0 T.mkNoSrcPos p AbsoluteSeek aAbsoluteSeek+ h11v54v11v57n p = y1toEnum fv11v54v11v57n p+ htoEnum fv11v54v11v57n p = y1toEnum fv11v54v11v57n p+ y1toEnum fv11v54v11v57n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv11v54v11v57n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h11v54v11v57n p)+ (y2toEnum fv11v54v11v57n p)+ where h11v54v11v57n p+ = T.con0 T.mkNoSrcPos p RelativeSeek aRelativeSeek+ h11v54v11v57n p = y2toEnum fv11v54v11v57n p+ y1toEnum fv11v54v11v57n p = y2toEnum fv11v54v11v57n p+ y2toEnum fv11v54v11v57n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv11v54v11v57n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h11v54v11v57n p)+ (y3toEnum fv11v54v11v57n p)+ where h11v54v11v57n p+ = T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd+ h11v54v11v57n p = y3toEnum fv11v54v11v57n p+ y2toEnum fv11v54v11v57n p = y3toEnum fv11v54v11v57n p+ y3toEnum _ p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "toEnum: argument out of bounds")+ p)+ genumFrom penumFrom p+ = T.ufun1 c11v54v11v57enumFrom penumFrom p henumFrom+ where henumFrom fy1 p+ = T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ fy1+ (T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd)+ genumFromThen penumFromThen p+ = T.ufun2 c11v54v11v57enumFromThen penumFromThen p+ henumFromThen+ where henumFromThen fy1 fy2 p+ = T.uap3 T.mkNoSrcPos p+ (genumFromThenTo T.mkNoSrcPos p)+ fy1+ fy2+ (T.ucif p+ (T.uap2 T.mkNoSrcPos p ((!>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy2)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy1))+ (T.con0 T.mkNoSrcPos p SeekFromEnd aSeekFromEnd)+ (T.con0 T.mkNoSrcPos p AbsoluteSeek aAbsoluteSeek))+ +instance Read SeekMode where+ greadsPrec preadsPrec p+ = T.ufun1 c11v60v11v63readsPrec preadsPrec p+ hreadsPrec+ where hreadsPrec fy1 p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p AbsoluteSeek+ aAbsoluteSeek))+ (T.fromLitString T.mkNoSrcPos p+ "AbsoluteSeek")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p RelativeSeek+ aRelativeSeek))+ (T.fromLitString T.mkNoSrcPos p+ "RelativeSeek")+ p))+ p))+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p SeekFromEnd+ aSeekFromEnd))+ (T.fromLitString T.mkNoSrcPos p+ "SeekFromEnd")+ p))+ p)))+ +instance Show SeekMode where+ gshowsPrec pshowsPrec p+ = T.ufun2 c11v66v11v69showsPrec pshowsPrec p+ hshowsPrec+ where hshowsPrec fy1 (T.R AbsoluteSeek _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "AbsoluteSeek")+ hshowsPrec fy1 (T.R RelativeSeek _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "RelativeSeek")+ hshowsPrec fy1 (T.R SeekFromEnd _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "SeekFromEnd")+ hshowsPrec _ _ p = T.fatal p+aAbsoluteSeek+ = T.mkConstructor tIOBuiltinTypes 100021 100032 3 (0)+ "AbsoluteSeek"+aAppendMode+ = T.mkConstructor tIOBuiltinTypes 50044 50053 3 (0)+ "AppendMode"+aBlockBuffering+ = T.mkConstructor tIOBuiltinTypes 80022 80035 3 (1)+ "BlockBuffering"+aLineBuffering+ = T.mkConstructor tIOBuiltinTypes 70035 70047 3 (0)+ "LineBuffering"+aNoBuffering+ = T.mkConstructor tIOBuiltinTypes 70021 70031 3 (0)+ "NoBuffering"+aReadMode+ = T.mkConstructor tIOBuiltinTypes 50021 50028 3 (0)+ "ReadMode"+aReadWriteMode+ = T.mkConstructor tIOBuiltinTypes 50057 50069 3 (0)+ "ReadWriteMode"+aRelativeSeek+ = T.mkConstructor tIOBuiltinTypes 100036 100047 3 (0)+ "RelativeSeek"+aSeekFromEnd+ = T.mkConstructor tIOBuiltinTypes 100051 100061 3 (0)+ "SeekFromEnd"+aWriteMode+ = T.mkConstructor tIOBuiltinTypes 50032 50040 3 (0)+ "WriteMode"+(++=%$=+=%%==)+ = T.mkVariable tIOBuiltinTypes 60032 60033 3 (-1)+ "=="+ Prelude.False+c6v36v6v38localFromEnum+ = T.mkVariable tIOBuiltinTypes 60036 60038 3 (1)+ "localFromEnum"+ Prelude.True+c6v36v6v38compare+ = T.mkVariable tIOBuiltinTypes 60036 60038 3 (-1)+ "compare"+ Prelude.False+c6v41v6v42rfromEnum+ = T.mkVariable tIOBuiltinTypes 60041 60042 3 (1)+ "rfromEnum"+ Prelude.True+c6v41v6v42rtoEnum+ = T.mkVariable tIOBuiltinTypes 60041 60042 3 (1)+ "rtoEnum"+ Prelude.True+c6v41v6v42ifromEnum+ = T.mkVariable tIOBuiltinTypes 60041 60042 3 (1)+ "ifromEnum"+ Prelude.True+c6v41v6v42nfromEnum+ = T.mkVariable tIOBuiltinTypes 60041 60042 3 (1)+ "nfromEnum"+ Prelude.True+c6v41v6v42inRange+ = T.mkVariable tIOBuiltinTypes 60041 60042 3 (-1)+ "inRange"+ Prelude.False+c6v41v6v42index+ = T.mkVariable tIOBuiltinTypes 60041 60042 3 (-1)+ "index"+ Prelude.False+c6v41v6v42range+ = T.mkVariable tIOBuiltinTypes 60041 60042 3 (-1)+ "range"+ Prelude.False+c6v45v6v51maxBound+ = T.mkVariable tIOBuiltinTypes 60045 60051 3 (-1)+ "maxBound"+ Prelude.False+c6v45v6v51minBound+ = T.mkVariable tIOBuiltinTypes 60045 60051 3 (-1)+ "minBound"+ Prelude.False+c6v54v6v57enumFrom+ = T.mkVariable tIOBuiltinTypes 60054 60057 3 (-1)+ "enumFrom"+ Prelude.False+c6v54v6v57enumFromThen+ = T.mkVariable tIOBuiltinTypes 60054 60057 3 (-1)+ "enumFromThen"+ Prelude.False+c6v54v6v57fromEnum+ = T.mkVariable tIOBuiltinTypes 60054 60057 3 (-1)+ "fromEnum"+ Prelude.False+c6v54v6v57toEnum+ = T.mkVariable tIOBuiltinTypes 60054 60057 3 (-1)+ "toEnum"+ Prelude.False+c6v60v6v63readsPrec+ = T.mkVariable tIOBuiltinTypes 60060 60063 3 (-1)+ "readsPrec"+ Prelude.False+c6v66v6v69showsPrec+ = T.mkVariable tIOBuiltinTypes 60066 60069 3 (-1)+ "showsPrec"+ Prelude.False+(+>=%$=>=%%==)+ = T.mkVariable tIOBuiltinTypes 90032 90033 3 (-1)+ "=="+ Prelude.False+c9v36v9v38localFromEnum+ = T.mkVariable tIOBuiltinTypes 90036 90038 3 (1)+ "localFromEnum"+ Prelude.True+c9v36v9v38compare+ = T.mkVariable tIOBuiltinTypes 90036 90038 3 (-1)+ "compare"+ Prelude.False+c9v41v9v44readsPrec+ = T.mkVariable tIOBuiltinTypes 90041 90044 3 (-1)+ "readsPrec"+ Prelude.False+c9v47v9v50showsPrec+ = T.mkVariable tIOBuiltinTypes 90047 90050 3 (-1)+ "showsPrec"+ Prelude.False+(+##=%$=##=%%==)+ = T.mkVariable tIOBuiltinTypes 110032 110033 3 (-1)+ "=="+ Prelude.False+c11v36v11v38localFromEnum+ = T.mkVariable tIOBuiltinTypes 110036 110038 3 (1)+ "localFromEnum"+ Prelude.True+c11v36v11v38compare+ = T.mkVariable tIOBuiltinTypes 110036 110038 3 (-1)+ "compare"+ Prelude.False+c11v41v11v42rfromEnum+ = T.mkVariable tIOBuiltinTypes 110041 110042 3 (1)+ "rfromEnum"+ Prelude.True+c11v41v11v42rtoEnum+ = T.mkVariable tIOBuiltinTypes 110041 110042 3 (1)+ "rtoEnum"+ Prelude.True+c11v41v11v42ifromEnum+ = T.mkVariable tIOBuiltinTypes 110041 110042 3 (1)+ "ifromEnum"+ Prelude.True+c11v41v11v42nfromEnum+ = T.mkVariable tIOBuiltinTypes 110041 110042 3 (1)+ "nfromEnum"+ Prelude.True+c11v41v11v42inRange+ = T.mkVariable tIOBuiltinTypes 110041 110042 3 (-1)+ "inRange"+ Prelude.False+c11v41v11v42index+ = T.mkVariable tIOBuiltinTypes 110041 110042 3 (-1)+ "index"+ Prelude.False+c11v41v11v42range+ = T.mkVariable tIOBuiltinTypes 110041 110042 3 (-1)+ "range"+ Prelude.False+c11v45v11v51maxBound+ = T.mkVariable tIOBuiltinTypes 110045 110051 3 (-1)+ "maxBound"+ Prelude.False+c11v45v11v51minBound+ = T.mkVariable tIOBuiltinTypes 110045 110051 3 (-1)+ "minBound"+ Prelude.False+c11v54v11v57enumFrom+ = T.mkVariable tIOBuiltinTypes 110054 110057 3 (-1)+ "enumFrom"+ Prelude.False+c11v54v11v57enumFromThen+ = T.mkVariable tIOBuiltinTypes 110054 110057 3 (-1)+ "enumFromThen"+ Prelude.False+c11v54v11v57fromEnum+ = T.mkVariable tIOBuiltinTypes 110054 110057 3 (-1)+ "fromEnum"+ Prelude.False+c11v54v11v57toEnum+ = T.mkVariable tIOBuiltinTypes 110054 110057 3 (-1)+ "toEnum"+ Prelude.False+c11v60v11v63readsPrec+ = T.mkVariable tIOBuiltinTypes 110060 110063 3 (-1)+ "readsPrec"+ Prelude.False+c11v66v11v69showsPrec+ = T.mkVariable tIOBuiltinTypes 110066 110069 3 (-1)+ "showsPrec"+ Prelude.False+p = T.mkRoot+tIOBuiltinTypes+ = T.mkModule "IOBuiltinTypes" "IOBuiltinTypes.hs"+ Prelude.False
Hat/Ix.hs view
@@ -1,6997 +1,7139 @@ module Hat.Ix- (Ix(grange,gindex,ginRange,grangeSize,srange,sindex,sinRange- ,srangeSize)) 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 --class Ord a => Ix a- where- - grange :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.List a))- - gindex :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun a Int))- - ginRange ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun a Bool))- - grangeSize :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Tuple2 a a) Int)- - grangeSize prangeSize p =- T.ufun1 a9v5v10v54rangeSize prangeSize p hrangeSize- where- - hrangeSize (fb@(T.R (T.Tuple2 fl fh) _)) p =- T.ucguard- (T.uwrapForward p- (hnull (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p) fb) p))- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p) fb fh)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (T.fatal p))- hrangeSize _ p = T.fatal p- - - srange :: T.R (T.Fun (T.Tuple2 a a) (T.List a))- - sindex :: T.R (T.Fun (T.Tuple2 a a) (T.Fun a Int))- - sinRange :: T.R (T.Fun (T.Tuple2 a a) (T.Fun a Bool))- - srangeSize :: T.R (T.Fun (T.Tuple2 a a) Int)- --instance Ix (Char)- where- - grange prange p =- T.ufun1 a18v5v18v19range prange p hrange- where- - hrange (T.R (T.Tuple2 fm fn) _) p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fm fn- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a19v5v21v64index pindex p hindex- where- - hindex (fb@(T.R (T.Tuple2 fc fc') _)) fci p =- T.ucguard (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb fci)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p) fci)- (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p) fc))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p "Ix.index: Index out of range.")- p)) (T.fatal p))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a22v5v22v44inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fc fc') _) fi p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fc fi)- *&&- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fi fc')) p)- hinRange _ _ p = T.fatal p- - --instance Ix (Int)- where- - grange prange p =- T.ufun1 a25v5v25v19range prange p hrange- where- - hrange (T.R (T.Tuple2 fm fn) _) p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fm fn- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a26v5v28v64index pindex p hindex- where- - hindex (fb@(T.R (T.Tuple2 fm fn) _)) fi p =- T.ucguard (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb fi)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fi fm)- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p "Ix.index: Index out of range.")- p)) (T.fatal p))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a29v5v29v43inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fm fn) _) fi p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fm fi)- *&&- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fi fn)) p)- hinRange _ _ p = T.fatal p- - --instance Ix (Integer)- where- - grange prange p =- T.ufun1 a32v5v32v19range prange p hrange- where- - hrange (T.R (T.Tuple2 fm fn) _) p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fm fn- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a33v5v35v64index pindex p hindex- where- - hindex (fb@(T.R (T.Tuple2 fm fn) _)) fi p =- T.ucguard (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb fi)- (T.uap1 T.mkNoSrcPos p (gfromInteger T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fi fm))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p "Ix.index: Index out of range.")- p)) (T.fatal p))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a36v5v36v43inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fm fn) _) fi p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fm fi)- *&&- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fi fn)) p)- hinRange _ _ p = T.fatal p- - --instance Ix (Bool)- where- - grange prange p =- T.ufun1 a39v3v39v19range prange p hrange- where- - hrange (T.R (T.Tuple2 fc fc') _) p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fc fc'- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a41v3v43v67index pindex p hindex- where- - hindex (fb@(T.R (T.Tuple2 fc fc') _)) fci p =- T.ucguard (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb fci)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p) fci)- (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p) fc))- (T.ucguard (T.con0 T.mkNoSrcPos p True aTrue)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p- "Ix.Bool.index: Index out of range.") p)) (T.fatal p))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a44v3v44v44inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fc fc') _) fci p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fc fci)- *&&- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fci fc')) p)- hinRange _ _ p = T.fatal p- - --instance Ix (Ordering)- where- - grange prange p =- T.ufun1 a48v3v48v19range prange p hrange- where- - hrange (T.R (T.Tuple2 fc fc') _) p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fc fc'- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a50v3v52v71index pindex p hindex- where- - hindex (fb@(T.R (T.Tuple2 fc fc') _)) fci p =- T.ucguard (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb fci)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p) fci)- (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p) fc))- (T.ucguard (T.con0 T.mkNoSrcPos p True aTrue)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p- "Ix.Ordering.index: Index out of range.") p)) (T.fatal p))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a53v3v53v44inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fc fc') _) fci p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fc fci)- *&&- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !<= p) fci fc')) p)- hinRange _ _ p = T.fatal p- - --instance Ix (T.Tuple0)- where- - grange prange p =- T.ufun1 a57v3v57v25range prange p hrange- where- - hrange (T.R (T.Tuple2 (T.R T.Tuple0 _) (T.R T.Tuple0 _)) _) p =- T.fromExpList T.mkNoSrcPos p [T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0]- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a58v3v58v25index pindex p hindex- where- - hindex (T.R (T.Tuple2 (T.R T.Tuple0 _) (T.R T.Tuple0 _)) _) (T.R T.Tuple0 _)- p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a59v3v59v30inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 (T.R T.Tuple0 _) (T.R T.Tuple0 _)) _)- (T.R T.Tuple0 _) p =- T.con0 T.mkNoSrcPos p True aTrue- hinRange _ _ p = T.fatal p- - --instance (Ix a,Ix b) => Ix ((T.Tuple2 a b))- where- - grange prange p =- T.ufun1 a62v10v62v14range prange p hrange- where- - hrange- (T.R (T.Tuple2 (T.R (T.Tuple2 fl fl') _) (T.R (T.Tuple2 fu fu') _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi' p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fi fi')) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl' fu')))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl fu)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a64v10v65v72index pindex p hindex- where- - hindex- (T.R (T.Tuple2 (T.R (T.Tuple2 fl fl') _) (T.R (T.Tuple2 fu fu') _)) _)- (T.R (T.Tuple2 fi fi') _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl fu) fi)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl' fu')))- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl' fu') fi')- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a66v10v67v56inRange pinRange p hinRange- where- - hinRange- (T.R (T.Tuple2 (T.R (T.Tuple2 fl fl') _) (T.R (T.Tuple2 fu fu') _)) _)- (T.R (T.Tuple2 fi fi') _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl fu) fi)- *&&- (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl' fu') fi')) p)- hinRange _ _ p = T.fatal p- - --instance (Ix a1,Ix a2,Ix a3) => Ix ((T.Tuple3 a1 a2 a3))- where- - grange prange p =- T.ufun1 a70v5v70v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2 (T.R (T.Tuple3 fl1 fl2 fl3) _) (T.R (T.Tuple3 fu1 fu2 fu3) _))- _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1- T.mkNoSrcPos p T.aCons- (T.con3 T.mkNoSrcPos p- T.Tuple3 T.aTuple3 fi1 fi2- fi3)) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a75v5v78v27index pindex p hindex- where- - hindex- (T.R- (T.Tuple2 (T.R (T.Tuple3 fl1 fl2 fl3) _) (T.R (T.Tuple3 fu1 fu2 fu3) _))- _) (T.R (T.Tuple3 fi1 fi2 fi3) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3) fi3)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2))- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a80v5v83v32inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2 (T.R (T.Tuple3 fl1 fl2 fl3) _) (T.R (T.Tuple3 fu1 fu2 fu3) _))- _) (T.R (T.Tuple3 fi1 fi2 fi3) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3) fi3))- p))) p)- hinRange _ _ p = T.fatal p- - --instance (Ix a1,Ix a2,Ix a3,Ix a4) => Ix ((T.Tuple4 a1 a2 a3 a4))- where- - grange prange p =- T.ufun1 a86v5v86v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2 (T.R (T.Tuple4 fl1 fl2 fl3 fl4) _)- (T.R (T.Tuple4 fu1 fu2 fu3 fu4) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.pa1 T.Cons- T.cn1- T.mkNoSrcPos p- T.aCons- (T.con4- T.mkNoSrcPos- p T.Tuple4- T.aTuple4- fi1 fi2 fi3- fi4)) f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a92v5v96v29index pindex p hindex- where- - hindex- (T.R- (T.Tuple2 (T.R (T.Tuple4 fl1 fl2 fl3 fl4) _)- (T.R (T.Tuple4 fu1 fu2 fu3 fu4) _)) _)- (T.R (T.Tuple4 fi1 fi2 fi3 fi4) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4) fi4)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3) fi3)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2))- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a98v5v102v32inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2 (T.R (T.Tuple4 fl1 fl2 fl3 fl4) _)- (T.R (T.Tuple4 fu1 fu2 fu3 fu4) _)) _)- (T.R (T.Tuple4 fi1 fi2 fi3 fi4) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4)- fi4)) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5) => Ix ((T.Tuple5 a1 a2 a3 a4 a5))- where- - grange prange p =- T.ufun1 a106v5v106v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2 (T.R (T.Tuple5 fl1 fl2 fl3 fl4 fl5) _)- (T.R (T.Tuple5 fu1 fu2 fu3 fu4 fu5) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con5- T.mkNoSrcPos- p- T.Tuple5- T.aTuple5- fi1- fi2- fi3- fi4- fi5))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a113v5v118v28index pindex p hindex- where- - hindex- (T.R- (T.Tuple2 (T.R (T.Tuple5 fl1 fl2 fl3 fl4 fl5) _)- (T.R (T.Tuple5 fu1 fu2 fu3 fu4 fu5) _)) _)- (T.R (T.Tuple5 fi1 fi2 fi3 fi4 fi5) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5) fi5)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4) fi4)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3) fi3)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2))- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)- fi1))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a120v5v125v32inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2 (T.R (T.Tuple5 fl1 fl2 fl3 fl4 fl5) _)- (T.R (T.Tuple5 fu1 fu2 fu3 fu4 fu5) _)) _)- (T.R (T.Tuple5 fi1 fi2 fi3 fi4 fi5) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5- fu5) fi5)) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6) => Ix ((T.Tuple6 a1 a2 a3 a4 a5 a6))- where- - grange prange p =- T.ufun1 a129v5v129v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2 (T.R (T.Tuple6 fl1 fl2 fl3 fl4 fl5 fl6) _)- (T.R (T.Tuple6 fu1 fu2 fu3 fu4 fu5 fu6) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con6- T.mkNoSrcPos- p- T.Tuple6- T.aTuple6- fi1- fi2- fi3- fi4- fi5- fi6))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a137v5v143v29index pindex p hindex- where- - hindex- (T.R- (T.Tuple2 (T.R (T.Tuple6 fl1 fl2 fl3 fl4 fl5 fl6) _)- (T.R (T.Tuple6 fu1 fu2 fu3 fu4 fu5 fu6) _)) _)- (T.R (T.Tuple6 fi1 fi2 fi3 fi4 fi5 fi6) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6) fi6)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5) fi5)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4) fi4)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3) fi3)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)- fi2)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2))- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)- fi1))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a145v5v151v32inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2 (T.R (T.Tuple6 fl1 fl2 fl3 fl4 fl5 fl6) _)- (T.R (T.Tuple6 fu1 fu2 fu3 fu4 fu5 fu6) _)) _)- (T.R (T.Tuple6 fi1 fi2 fi3 fi4 fi5 fi6) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl6 fu6) fi6)) p))) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7) =>- Ix ((T.Tuple7 a1 a2 a3 a4 a5 a6 a7))- where- - grange prange p =- T.ufun1 a155v5v155v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2 (T.R (T.Tuple7 fl1 fl2 fl3 fl4 fl5 fl6 fl7) _)- (T.R (T.Tuple7 fu1 fu2 fu3 fu4 fu5 fu6 fu7) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con7- T.mkNoSrcPos- p- T.Tuple7- T.aTuple7- fi1- fi2- fi3- fi4- fi5- fi6- fi7))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a164v5v171v29index pindex p hindex- where- - hindex- (T.R- (T.Tuple2 (T.R (T.Tuple7 fl1 fl2 fl3 fl4 fl5 fl6 fl7) _)- (T.R (T.Tuple7 fu1 fu2 fu3 fu4 fu5 fu6 fu7) _)) _)- (T.R (T.Tuple7 fi1 fi2 fi3 fi4 fi5 fi6 fi7) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7) fi7)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6) fi6)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5) fi5)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4) fi4)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)- fi2)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2- fu2))- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1- fu1) fi1))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a173v5v180v32inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2 (T.R (T.Tuple7 fl1 fl2 fl3 fl4 fl5 fl6 fl7) _)- (T.R (T.Tuple7 fu1 fu2 fu3 fu4 fu5 fu6 fu7) _)) _)- (T.R (T.Tuple7 fi1 fi2 fi3 fi4 fi5 fi6 fi7) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl7 fu7) fi7)) p))) p)))- p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7,Ix a8) =>- Ix ((T.Tuple8 a1 a2 a3 a4 a5 a6 a7 a8))- where- - grange prange p =- T.ufun1 a184v5v184v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2 (T.R (T.Tuple8 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8) _)- (T.R (T.Tuple8 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi8- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con8- T.mkNoSrcPos- p- T.Tuple8- T.aTuple8- fi1- fi2- fi3- fi4- fi5- fi6- fi7- fi8))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl8- fu8)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a194v5v203v30index pindex p hindex- where- - hindex- (T.R- (T.Tuple2 (T.R (T.Tuple8 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8) _)- (T.R (T.Tuple8 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8) _)) _)- (T.R (T.Tuple8 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8) fi8)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7) fi7)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6) fi6)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5) fi5)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4)- fi4)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3- fu3))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2- fu2) fi2)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl2 fu2))- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl1 fu1) fi1))))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a205v5v214v32inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2 (T.R (T.Tuple8 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8) _)- (T.R (T.Tuple8 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8) _)) _)- (T.R (T.Tuple8 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- *&&- (T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl8 fu8)- fi8)) p))) p))) p))) p))) p)))- p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7,Ix a8,Ix a9) =>- Ix ((T.Tuple9 a1 a2 a3 a4 a5 a6 a7 a8 a9))- where- - grange prange p =- T.ufun1 a218v5v218v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2 (T.R (T.Tuple9 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9) _)- (T.R (T.Tuple9 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi8- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi9- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con9- T.mkNoSrcPos- p- T.Tuple9- T.aTuple9- fi1- fi2- fi3- fi4- fi5- fi6- fi7- fi8- fi9))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl9- fu9)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl8- fu8)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a230v5v240v36index pindex p hindex- where- - hindex- (T.R- (T.Tuple2 (T.R (T.Tuple9 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9) _)- (T.R (T.Tuple9 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9) _)) _)- (T.R (T.Tuple9 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9) fi9)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8) fi8)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7) fi7)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6) fi6)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5)- fi5)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4)- fi4)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3- fu3) fi3)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl3 fu3))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl2 fu2) fi2)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl2 fu2))- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl1 fu1) fi1))))))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a242v5v252v32inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2 (T.R (T.Tuple9 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9) _)- (T.R (T.Tuple9 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9) _)) _)- (T.R (T.Tuple9 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl8- fu8) fi8)- *&&- (T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl9- fu9) fi9)) p))) p)))- p))) p))) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7,Ix a8,Ix a9,Ix a10) =>- Ix ((T.Tuple10 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10))- where- - grange prange p =- T.ufun1 a257v5v257v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2 (T.R (T.Tuple10 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10) _)- (T.R (T.Tuple10 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi8- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi9- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi10- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con10- T.mkNoSrcPos- p- T.Tuple10- T.aTuple10- fi1- fi2- fi3- fi4- fi5- fi6- fi7- fi8- fi9- fi10))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl10- fu10)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl9- fu9)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl8- fu8)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a271v5v283v36index pindex p hindex- where- - hindex- (T.R- (T.Tuple2 (T.R (T.Tuple10 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10) _)- (T.R (T.Tuple10 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10) _)) _)- (T.R (T.Tuple10 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10) fi10)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9) fi9)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8) fi8)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7) fi7)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6)- fi6)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5)- fi5)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5- fu5))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl4 fu4))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl3 fu3) fi3)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl2 fu2) fi2)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl2 fu2))- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl1 fu1)- fi1))))))))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a285v5v297v35inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2 (T.R (T.Tuple10 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10) _)- (T.R (T.Tuple10 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10) _)) _)- (T.R (T.Tuple10 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl8- fu8) fi8)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange- T.mkNoSrcPos p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl9- fu9) fi9)- *&&- (T.uap2 T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl10- fu10) fi10))- p))) p))) p))) p)))- p))) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7,Ix a8,Ix a9,Ix a10,Ix a11) =>- Ix ((T.Tuple11 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11))- where- - grange prange p =- T.ufun1 a302v5v302v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2- (T.R (T.Tuple11 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11) _)- (T.R (T.Tuple11 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11) _)) _)- p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi8- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi9- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi10- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi11- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con11- T.mkNoSrcPos- p- T.Tuple11- T.aTuple11- fi1- fi2- fi3- fi4- fi5- fi6- fi7- fi8- fi9- fi10- fi11))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl10- fu10)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl9- fu9)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl8- fu8)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a317v5v330v36index pindex p hindex- where- - hindex- (T.R- (T.Tuple2- (T.R (T.Tuple11 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11) _)- (T.R (T.Tuple11 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11) _)) _)- (T.R (T.Tuple11 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11) fi11)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10) fi10)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9) fi9)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8) fi8)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6)- fi6)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6- fu6))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5- fu5) fi5)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl4 fu4) fi4)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl4 fu4))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3) fi3)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl2 fu2) fi2)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl2 fu2))- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl1 fu1)- fi1))))))))))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a332v5v345v35inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2- (T.R (T.Tuple11 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11) _)- (T.R (T.Tuple11 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11) _)) _)- (T.R (T.Tuple11 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl8- fu8) fi8)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange- T.mkNoSrcPos p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl9- fu9) fi9)- *&&- (T.uwrapForward p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl10 fu10)- fi10)- *&&- (T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl11 fu11)- fi11)) p)))- p))) p))) p))) p)))- p))) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7,Ix a8,Ix a9,Ix a10,Ix a11- ,Ix a12) => Ix ((T.Tuple12 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12))- where- - grange prange p =- T.ufun1 a350v5v350v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2- (T.R (T.Tuple12 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12) _)- (T.R (T.Tuple12 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12)- _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi8- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi9- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi10- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi11- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi12- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con12- T.mkNoSrcPos- p- T.Tuple12- T.aTuple12- fi1- fi2- fi3- fi4- fi5- fi6- fi7- fi8- fi9- fi10- fi11- fi12))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl12- fu12)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl10- fu10)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl9- fu9)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl8- fu8)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a366v5v380v36index pindex p hindex- where- - hindex- (T.R- (T.Tuple2- (T.R (T.Tuple12 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12) _)- (T.R (T.Tuple12 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12)- _)) _)- (T.R (T.Tuple12 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11 fi12) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12) fi12)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11) fi11)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10) fi10)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9) fi9)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8)- fi8)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7- fu7))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6- fu6) fi6)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl6 fu6))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl5 fu5))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl4 fu4) fi4)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl4 fu4))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3) fi3)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl2 fu2)- fi2)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl2- fu2))- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl1- fu1)- fi1))))))))))))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a382v5v396v35inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2- (T.R (T.Tuple12 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12) _)- (T.R (T.Tuple12 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12)- _)) _)- (T.R (T.Tuple12 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11 fi12) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl8- fu8) fi8)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange- T.mkNoSrcPos p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl9- fu9) fi9)- *&&- (T.uwrapForward p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl10 fu10)- fi10)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)- fi11)- *&&- (T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl12- fu12)- fi12))- p))) p)))- p))) p))) p))) p)))- p))) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7,Ix a8,Ix a9,Ix a10,Ix a11,Ix a12- ,Ix a13) => Ix ((T.Tuple13 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13))- where- - grange prange p =- T.ufun1 a401v5v401v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2- (T.R- (T.Tuple13 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13)- _)- (T.R- (T.Tuple13 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13)- _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi8- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi9- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi10- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi11- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi12- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi13- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con13- T.mkNoSrcPos- p- T.Tuple13- T.aTuple13- fi1- fi2- fi3- fi4- fi5- fi6- fi7- fi8- fi9- fi10- fi11- fi12- fi13))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl13- fu13)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl12- fu12)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl10- fu10)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl9- fu9)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl8- fu8)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a418v5v433v36index pindex p hindex- where- - hindex- (T.R- (T.Tuple2- (T.R- (T.Tuple13 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13)- _)- (T.R- (T.Tuple13 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13)- _)) _)- (T.R (T.Tuple13 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11 fi12 fi13)- _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13 fu13) fi13)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13 fu13))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12) fi12)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11) fi11)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10) fi10)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9)- fi9)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8)- fi8)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8- fu8))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7- fu7) fi7)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl7 fu7))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl6 fu6) fi6)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl5 fu5) fi5)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl5 fu5))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl4 fu4) fi4)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl4 fu4))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl3- fu3))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl2- fu2) fi2)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl2- fu2))- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl1- fu1)- fi1))))))))))))))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a435v5v450v35inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2- (T.R- (T.Tuple13 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13)- _)- (T.R- (T.Tuple13 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13)- _)) _)- (T.R (T.Tuple13 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11 fi12 fi13)- _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl8- fu8) fi8)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange- T.mkNoSrcPos p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl9- fu9) fi9)- *&&- (T.uwrapForward p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl10 fu10)- fi10)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)- fi11)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl12- fu12)- fi12)- *&&- (T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl13- fu13)- fi13))- p)))- p))) p)))- p))) p))) p))) p)))- p))) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7,Ix a8,Ix a9,Ix a10,Ix a11,Ix a12- ,Ix a13,Ix a14) =>- Ix ((T.Tuple14 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14))- where- - grange prange p =- T.ufun1 a455v5v455v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2- (T.R- (T.Tuple14 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13- fl14) _)- (T.R- (T.Tuple14 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13- fu14) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi8- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi9- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi10- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi11- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi12- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi13- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi14- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con14- T.mkNoSrcPos- p- T.Tuple14- T.aTuple14- fi1- fi2- fi3- fi4- fi5- fi6- fi7- fi8- fi9- fi10- fi11- fi12- fi13- fi14))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl14- fu14)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl13- fu13)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl12- fu12)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl10- fu10)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl9- fu9)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl8- fu8)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a473v5v489v36index pindex p hindex- where- - hindex- (T.R- (T.Tuple2- (T.R- (T.Tuple14 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13- fl14) _)- (T.R- (T.Tuple14 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13- fu14) _)) _)- (T.R- (T.Tuple14 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11 fi12 fi13 fi14)- _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl14 fu14) fi14)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl14 fu14))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13 fu13) fi13)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13 fu13))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12) fi12)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11) fi11)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10)- fi10)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10- fu10))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9)- fi9)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9- fu9))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8- fu8) fi8)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl8 fu8))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl7 fu7) fi7)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl7 fu7))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl5 fu5) fi5)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl5 fu5))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4 fu4)- fi4)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl3- fu3) fi3)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl3- fu3))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2- fl2 fu2) fi2)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize- T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos- p T.Tuple2- T.aTuple2 fl2- fu2))- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos- p T.Tuple2- T.aTuple2 fl1 fu1)- fi1))))))))))))))))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a491v5v507v35inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2- (T.R- (T.Tuple14 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13- fl14) _)- (T.R- (T.Tuple14 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13- fu14) _)) _)- (T.R- (T.Tuple14 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11 fi12 fi13 fi14)- _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl8- fu8) fi8)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange- T.mkNoSrcPos p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl9- fu9) fi9)- *&&- (T.uwrapForward p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl10 fu10)- fi10)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)- fi11)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl12- fu12)- fi12)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl13- fu13)- fi13)- *&&- (T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl14- fu14)- fi14))- p)))- p)))- p))) p)))- p))) p))) p))) p)))- p))) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --instance- (Ix a1,Ix a2,Ix a3,Ix a4,Ix a5,Ix a6,Ix a7,Ix a8,Ix a9,Ix a10,Ix a11,Ix a12- ,Ix a13,Ix a14,Ix a15) =>- Ix ((T.Tuple15 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15))- where- - grange prange p =- T.ufun1 a512v5v512v9range prange p hrange- where- - hrange- (T.R- (T.Tuple2- (T.R- (T.Tuple15 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13- fl14 fl15) _)- (T.R- (T.Tuple15 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13- fu14 fu15) _)) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi1 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi2 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi3 p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos p)- (T.ufun2 T.mkLambda- T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fi4 p =- T.uap1- T.mkNoSrcPos p- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi5- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi6- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi7- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi8- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi9- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi10- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi11- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi12- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi13- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi14- p =- T.uap1- T.mkNoSrcPos- p- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.g_foldr- T.mkNoSrcPos- p)- (T.ufun2- T.mkLambda- T.mkNoSrcPos- p- (\ f_x- f_y- p ->- T.uccase- T.mkNoSrcPos- p- (let- v0v0v0v0v1- fi15- p =- T.uap1- T.mkNoSrcPos- p- (T.pa1- T.Cons- T.cn1- T.mkNoSrcPos- p- T.aCons- (T.con15- T.mkNoSrcPos- p- T.Tuple15- T.aTuple15- fi1- fi2- fi3- fi4- fi5- fi6- fi7- fi8- fi9- fi10- fi11- fi12- fi13- fi14- fi15))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl15- fu15)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl14- fu14)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl13- fu13)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl12- fu12)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl10- fu10)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl9- fu9)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl8- fu8)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl7- fu7)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl6- fu6)))- f_y- v0v0v0v0v1- _- p =- T.projection- T.mkNoSrcPos- p- f_y- in- (v0v0v0v0v1))- f_x))- (T.uap1- T.mkNoSrcPos- p- (grange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl5 fu5)))- f_y- v0v0v0v0v1 _ p =- T.projection- T.mkNoSrcPos p- f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))) f_y- v0v0v0v0v1 _ p =- T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p- (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl3 fu3))) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y- in (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2)))- f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x))- (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)))- (T.fromExpList T.mkNoSrcPos p [])- hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a531v5v548v36index pindex p hindex- where- - hindex- (T.R- (T.Tuple2- (T.R- (T.Tuple15 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13- fl14 fl15) _)- (T.R- (T.Tuple15 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13- fu14 fu15) _)) _)- (T.R- (T.Tuple15 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11 fi12 fi13 fi14- fi15) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl15 fu15) fi15)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl15 fu15))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl14 fu14) fi14)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl14 fu14))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13 fu13) fi13)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13 fu13))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12) fi12)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11)- fi11)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11- fu11))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10- fu10) fi10)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10- fu10))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9- fu9) fi9)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl9 fu9))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl8 fu8) fi8)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl8 fu8))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl7 fu7) fi7)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl7 fu7))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl5 fu5)- fi5)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl5- fu5))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4) fi4)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl4- fu4))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p- (gindex T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2- fl3 fu3) fi3)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p- (grangeSize- T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos- p T.Tuple2- T.aTuple2 fl3- fu3))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos- p- (gindex- T.mkNoSrcPos p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl2- fu2) fi2)- (T.uap2 T.mkNoSrcPos- p- (T.mkNoSrcPos- !*- p)- (T.uap1- T.mkNoSrcPos p- (grangeSize- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl2- fu2))- (T.uap2- T.mkNoSrcPos p- (gindex- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl1- fu1)- fi1))))))))))))))))))))))))))))- hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a550v5v567v35inRange pinRange p hinRange- where- - hinRange- (T.R- (T.Tuple2- (T.R- (T.Tuple15 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10 fl11 fl12 fl13- fl14 fl15) _)- (T.R- (T.Tuple15 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10 fu11 fu12 fu13- fu14 fu15) _)) _)- (T.R- (T.Tuple15 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10 fi11 fi12 fi13 fi14- fi15) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1) fi1)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2 fu2) fi2)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)- fi3)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4- fu4) fi4)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- fl5 fu5) fi5)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2- T.aTuple2 fl6 fu6) fi6)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl7 fu7)- fi7)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange T.mkNoSrcPos- p)- (T.con2 T.mkNoSrcPos p- T.Tuple2 T.aTuple2 fl8- fu8) fi8)- *&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (ginRange- T.mkNoSrcPos p)- (T.con2- T.mkNoSrcPos p- T.Tuple2- T.aTuple2 fl9- fu9) fi9)- *&&- (T.uwrapForward p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p T.Tuple2- T.aTuple2- fl10 fu10)- fi10)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl11- fu11)- fi11)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl12- fu12)- fi12)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl13- fu13)- fi13)- *&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl14- fu14)- fi14)- *&&- (T.uap2- T.mkNoSrcPos- p- (ginRange- T.mkNoSrcPos- p)- (T.con2- T.mkNoSrcPos- p- T.Tuple2- T.aTuple2- fl15- fu15)- fi15))- p)))- p)))- p)))- p))) p)))- p))) p))) p))) p)))- p))) p))) p))) p))) p)- hinRange _ _ p = T.fatal p- - --tIx = T.mkModule "Ix" "Ix.hs" Prelude.False--a9v5v10v54rangeSize =- T.mkVariable tIx 90005 100054 3 1 "rangeSize" Prelude.False--a18v5v18v19range = T.mkVariable tIx 180005 180019 3 1 "range" Prelude.False--a19v5v21v64index = T.mkVariable tIx 190005 210064 3 2 "index" Prelude.False--a22v5v22v44inRange = T.mkVariable tIx 220005 220044 3 2 "inRange" Prelude.False--a25v5v25v19range = T.mkVariable tIx 250005 250019 3 1 "range" Prelude.False--a26v5v28v64index = T.mkVariable tIx 260005 280064 3 2 "index" Prelude.False--a29v5v29v43inRange = T.mkVariable tIx 290005 290043 3 2 "inRange" Prelude.False--a32v5v32v19range = T.mkVariable tIx 320005 320019 3 1 "range" Prelude.False--a33v5v35v64index = T.mkVariable tIx 330005 350064 3 2 "index" Prelude.False--a36v5v36v43inRange = T.mkVariable tIx 360005 360043 3 2 "inRange" Prelude.False--a39v3v39v19range = T.mkVariable tIx 390003 390019 3 1 "range" Prelude.False--a41v3v43v67index = T.mkVariable tIx 410003 430067 3 2 "index" Prelude.False--a44v3v44v44inRange = T.mkVariable tIx 440003 440044 3 2 "inRange" Prelude.False--a48v3v48v19range = T.mkVariable tIx 480003 480019 3 1 "range" Prelude.False--a50v3v52v71index = T.mkVariable tIx 500003 520071 3 2 "index" Prelude.False--a53v3v53v44inRange = T.mkVariable tIx 530003 530044 3 2 "inRange" Prelude.False--a57v3v57v25range = T.mkVariable tIx 570003 570025 3 1 "range" Prelude.False--a58v3v58v25index = T.mkVariable tIx 580003 580025 3 2 "index" Prelude.False--a59v3v59v30inRange = T.mkVariable tIx 590003 590030 3 2 "inRange" Prelude.False--a62v10v62v14range = T.mkVariable tIx 620010 620014 3 1 "range" Prelude.False--a64v10v65v72index = T.mkVariable tIx 640010 650072 3 2 "index" Prelude.False--a66v10v67v56inRange = T.mkVariable tIx 660010 670056 3 2 "inRange" Prelude.False--a70v5v70v9range = T.mkVariable tIx 700005 700009 3 1 "range" Prelude.False--a75v5v78v27index = T.mkVariable tIx 750005 780027 3 2 "index" Prelude.False--a80v5v83v32inRange = T.mkVariable tIx 800005 830032 3 2 "inRange" Prelude.False--a86v5v86v9range = T.mkVariable tIx 860005 860009 3 1 "range" Prelude.False--a92v5v96v29index = T.mkVariable tIx 920005 960029 3 2 "index" Prelude.False--a98v5v102v32inRange =- T.mkVariable tIx 980005 1020032 3 2 "inRange" Prelude.False--a106v5v106v9range = T.mkVariable tIx 1060005 1060009 3 1 "range" Prelude.False--a113v5v118v28index = T.mkVariable tIx 1130005 1180028 3 2 "index" Prelude.False--a120v5v125v32inRange =- T.mkVariable tIx 1200005 1250032 3 2 "inRange" Prelude.False--a129v5v129v9range = T.mkVariable tIx 1290005 1290009 3 1 "range" Prelude.False--a137v5v143v29index = T.mkVariable tIx 1370005 1430029 3 2 "index" Prelude.False--a145v5v151v32inRange =- T.mkVariable tIx 1450005 1510032 3 2 "inRange" Prelude.False--a155v5v155v9range = T.mkVariable tIx 1550005 1550009 3 1 "range" Prelude.False--a164v5v171v29index = T.mkVariable tIx 1640005 1710029 3 2 "index" Prelude.False--a173v5v180v32inRange =- T.mkVariable tIx 1730005 1800032 3 2 "inRange" Prelude.False--a184v5v184v9range = T.mkVariable tIx 1840005 1840009 3 1 "range" Prelude.False--a194v5v203v30index = T.mkVariable tIx 1940005 2030030 3 2 "index" Prelude.False--a205v5v214v32inRange =- T.mkVariable tIx 2050005 2140032 3 2 "inRange" Prelude.False--a218v5v218v9range = T.mkVariable tIx 2180005 2180009 3 1 "range" Prelude.False--a230v5v240v36index = T.mkVariable tIx 2300005 2400036 3 2 "index" Prelude.False--a242v5v252v32inRange =- T.mkVariable tIx 2420005 2520032 3 2 "inRange" Prelude.False--a257v5v257v9range = T.mkVariable tIx 2570005 2570009 3 1 "range" Prelude.False--a271v5v283v36index = T.mkVariable tIx 2710005 2830036 3 2 "index" Prelude.False--a285v5v297v35inRange =- T.mkVariable tIx 2850005 2970035 3 2 "inRange" Prelude.False--a302v5v302v9range = T.mkVariable tIx 3020005 3020009 3 1 "range" Prelude.False--a317v5v330v36index = T.mkVariable tIx 3170005 3300036 3 2 "index" Prelude.False--a332v5v345v35inRange =- T.mkVariable tIx 3320005 3450035 3 2 "inRange" Prelude.False--a350v5v350v9range = T.mkVariable tIx 3500005 3500009 3 1 "range" Prelude.False--a366v5v380v36index = T.mkVariable tIx 3660005 3800036 3 2 "index" Prelude.False--a382v5v396v35inRange =- T.mkVariable tIx 3820005 3960035 3 2 "inRange" Prelude.False--a401v5v401v9range = T.mkVariable tIx 4010005 4010009 3 1 "range" Prelude.False--a418v5v433v36index = T.mkVariable tIx 4180005 4330036 3 2 "index" Prelude.False--a435v5v450v35inRange =- T.mkVariable tIx 4350005 4500035 3 2 "inRange" Prelude.False--a455v5v455v9range = T.mkVariable tIx 4550005 4550009 3 1 "range" Prelude.False--a473v5v489v36index = T.mkVariable tIx 4730005 4890036 3 2 "index" Prelude.False--a491v5v507v35inRange =- T.mkVariable tIx 4910005 5070035 3 2 "inRange" Prelude.False--a512v5v512v9range = T.mkVariable tIx 5120005 5120009 3 1 "range" Prelude.False--a531v5v548v36index = T.mkVariable tIx 5310005 5480036 3 2 "index" Prelude.False--a550v5v567v35inRange =- T.mkVariable tIx 5500005 5670035 3 2 "inRange" Prelude.False+ (Ix(grange, gindex, ginRange, grangeSize, srange,+ sindex, sinRange, srangeSize))+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+ +class (Ord a) => Ix a where+ + grange ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.List a))+ + srange :: T.R (T.Fun (T.Tuple2 a a) (T.List a))+ srange = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ + gindex ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun a Int))+ + sindex :: T.R (T.Fun (T.Tuple2 a a) (T.Fun a Int))+ sindex = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ + ginRange ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun a Bool))+ + sinRange :: T.R (T.Fun (T.Tuple2 a a) (T.Fun a Bool))+ sinRange = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ + grangeSize ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.Tuple2 a a) Int)+ + srangeSize :: T.R (T.Fun (T.Tuple2 a a) Int)+ srangeSize+ = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ grangeSize prangeSize p+ = T.ufun1 c9v5v10v54rangeSize prangeSize p hrangeSize+ where hrangeSize fb@(T.R (T.Tuple2 fl fh) _) p+ = T.ucguard+ (T.uwrapForward p+ (hnull+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p) fb)+ p))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0)))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p) fb+ fh)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (T.fatal p))+ +instance Ix Char where+ grange prange p+ = T.ufun1 c18v5v18v24range prange p hrange+ where hrange (T.R (T.Tuple2 fm fn) _) p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.genumFromTo T.mkNoSrcPos p)+ fm+ fn+ gindex pindex p+ = T.ufun2 c19v5v21v64index pindex p hindex+ where hindex fb@(T.R (T.Tuple2 fc fc') _) fci p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb+ fci)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fci)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fc))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Ix.index: Index out of range.")+ p))+ (T.fatal p))+ ginRange pinRange p+ = T.ufun2 c22v5v22v44inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fc fc') _) fi p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fc fi)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fi fc')+ p)+ +instance Ix Int where+ grange prange p+ = T.ufun1 c25v5v25v24range prange p hrange+ where hrange (T.R (T.Tuple2 fm fn) _) p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.genumFromTo T.mkNoSrcPos p)+ fm+ fn+ gindex pindex p+ = T.ufun2 c26v5v28v64index pindex p hindex+ where hindex fb@(T.R (T.Tuple2 fm fn) _) fi p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb+ fi)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fi fm)+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Ix.index: Index out of range.")+ p))+ (T.fatal p))+ ginRange pinRange p+ = T.ufun2 c29v5v29v43inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fm fn) _) fi p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fm fi)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fi fn)+ p)+ +instance Ix Integer where+ grange prange p+ = T.ufun1 c32v5v32v24range prange p hrange+ where hrange (T.R (T.Tuple2 fm fn) _) p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.genumFromTo T.mkNoSrcPos p)+ fm+ fn+ gindex pindex p+ = T.ufun2 c33v5v35v64index pindex p hindex+ where hindex fb@(T.R (T.Tuple2 fm fn) _) fi p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb+ fi)+ (T.uap1 T.mkNoSrcPos p (gfromInteger T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fi fm))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Ix.index: Index out of range.")+ p))+ (T.fatal p))+ ginRange pinRange p+ = T.ufun2 c36v5v36v43inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fm fn) _) fi p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fm fi)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fi fn)+ p)+ +instance Ix Bool where+ grange prange p+ = T.ufun1 c39v3v39v27range prange p hrange+ where hrange (T.R (T.Tuple2 fc fc') _) p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.genumFromTo T.mkNoSrcPos p)+ fc+ fc'+ gindex pindex p+ = T.ufun2 c41v3v43v67index pindex p hindex+ where hindex fb@(T.R (T.Tuple2 fc fc') _) fci p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb+ fci)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fci)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fc))+ (T.ucguard (T.con0 T.mkNoSrcPos p True aTrue)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Ix.Bool.index: Index out of range.")+ p))+ (T.fatal p))+ ginRange pinRange p+ = T.ufun2 c44v3v44v44inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fc fc') _) fci p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fc fci)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fci+ fc')+ p)+ +instance Ix Ordering where+ grange prange p+ = T.ufun1 c48v3v48v27range prange p hrange+ where hrange (T.R (T.Tuple2 fc fc') _) p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.genumFromTo T.mkNoSrcPos p)+ fc+ fc'+ gindex pindex p+ = T.ufun2 c50v3v52v71index pindex p hindex+ where hindex fb@(T.R (T.Tuple2 fc fc') _) fci p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p) fb+ fci)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fci)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fc))+ (T.ucguard (T.con0 T.mkNoSrcPos p True aTrue)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Ix.Ordering.index: Index out of range.")+ p))+ (T.fatal p))+ ginRange pinRange p+ = T.ufun2 c53v3v53v44inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fc fc') _) fci p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fc fci)+ (T.uap2 T.mkNoSrcPos p ((!<=) T.mkNoSrcPos p) fci+ fc')+ p)+ +instance Ix T.Tuple0 where+ grange prange p+ = T.ufun1 c57v3v57v22range prange p hrange+ where hrange+ (T.R (T.Tuple2 (T.R T.Tuple0 _) (T.R T.Tuple0 _)) _)+ p+ = T.fromExpList T.mkNoSrcPos p+ [T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0]+ hrange _ p = T.fatal p+ gindex pindex p+ = T.ufun2 c58v3v58v22index pindex p hindex+ where hindex+ (T.R (T.Tuple2 (T.R T.Tuple0 _) (T.R T.Tuple0 _)) _)+ (T.R T.Tuple0 _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hindex _ _ p = T.fatal p+ ginRange pinRange p+ = T.ufun2 c59v3v59v27inRange pinRange p hinRange+ where hinRange+ (T.R (T.Tuple2 (T.R T.Tuple0 _) (T.R T.Tuple0 _)) _)+ (T.R T.Tuple0 _) p = T.con0 T.mkNoSrcPos p True aTrue+ hinRange _ _ p = T.fatal p+ +instance (Ix a, Ix b) => Ix (T.Tuple2 a b) where+ grange prange p+ = T.ufun1 c62v10v63v67range prange p hrange+ where hrange+ (T.R+ (T.Tuple2 (T.R (T.Tuple2 fl fl') _)+ (T.R (T.Tuple2 fu fu') _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl fu))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl'+ fu'))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi' p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fi+ fi')))))+ gindex pindex p+ = T.ufun2 c64v10v65v72index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2 (T.R (T.Tuple2 fl fl') _)+ (T.R (T.Tuple2 fu fu') _))+ _)+ (T.R (T.Tuple2 fi fi') _) p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl fu)+ fi)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl' fu')))+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl' fu')+ fi')+ ginRange pinRange p+ = T.ufun2 c66v10v67v56inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2 (T.R (T.Tuple2 fl fl') _)+ (T.R (T.Tuple2 fu fu') _))+ _)+ (T.R (T.Tuple2 fi fi') _) p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl fu)+ fi)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl' fu')+ fi')+ p)+ +instance (Ix a1, Ix a2, Ix a3) => Ix+ (T.Tuple3 a1 a2 a3) where+ grange prange p+ = T.ufun1 c70v5v73v44range prange p hrange+ where hrange+ (T.R+ (T.Tuple2 (T.R (T.Tuple3 fl1 fl2 fl3) _)+ (T.R (T.Tuple3 fu1 fu2 fu3) _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con3 T.mkNoSrcPos p T.Tuple3+ T.aTuple3+ fi1+ fi2+ fi3)))))))+ gindex pindex p+ = T.ufun2 c75v5v78v29index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2 (T.R (T.Tuple3 fl1 fl2 fl3) _)+ (T.R (T.Tuple3 fu1 fu2 fu3) _))+ _)+ (T.R (T.Tuple3 fi1 fi2 fi3) _) p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3)+ fi3)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3 fu3))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1+ fu1)+ fi1))))+ ginRange pinRange p+ = T.ufun2 c80v5v83v32inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2 (T.R (T.Tuple3 fl1 fl2 fl3) _)+ (T.R (T.Tuple3 fu1 fu2 fu3) _))+ _)+ (T.R (T.Tuple3 fi1 fi2 fi3) _) p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3+ fu3)+ fi3)+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4) => Ix+ (T.Tuple4 a1 a2 a3 a4) where+ grange prange p+ = T.ufun1 c86v5v90v47range prange p hrange+ where hrange+ (T.R+ (T.Tuple2 (T.R (T.Tuple4 fl1 fl2 fl3 fl4) _)+ (T.R (T.Tuple4 fu1 fu2 fu3 fu4) _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con4 T.mkNoSrcPos p+ T.Tuple4+ T.aTuple4+ fi1+ fi2+ fi3+ fi4)))))))))+ gindex pindex p+ = T.ufun2 c92v5v96v32index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2 (T.R (T.Tuple4 fl1 fl2 fl3 fl4) _)+ (T.R (T.Tuple4 fu1 fu2 fu3 fu4) _))+ _)+ (T.R (T.Tuple4 fi1 fi2 fi3 fi4) _) p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4)+ fi4)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4 fu4))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3+ fu3)+ fi3)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl3+ fu3))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))+ ginRange pinRange p+ = T.ufun2 c98v5v102v32inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2 (T.R (T.Tuple4 fl1 fl2 fl3 fl4) _)+ (T.R (T.Tuple4 fu1 fu2 fu3 fu4) _))+ _)+ (T.R (T.Tuple4 fi1 fi2 fi3 fi4) _) p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix+ (T.Tuple5 a1 a2 a3 a4 a5) where+ grange prange p+ = T.ufun1 c106v5v111v50range prange p hrange+ where hrange+ (T.R+ (T.Tuple2 (T.R (T.Tuple5 fl1 fl2 fl3 fl4 fl5) _)+ (T.R (T.Tuple5 fu1 fu2 fu3 fu4 fu5) _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap1 T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con5+ T.mkNoSrcPos+ p+ T.Tuple5+ T.aTuple5+ fi1+ fi2+ fi3+ fi4+ fi5)))))))))))+ gindex pindex p+ = T.ufun2 c113v5v118v32index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2 (T.R (T.Tuple5 fl1 fl2 fl3 fl4 fl5) _)+ (T.R (T.Tuple5 fu1 fu2 fu3 fu4 fu5) _))+ _)+ (T.R (T.Tuple5 fi1 fi2 fi3 fi4 fi5) _) p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5)+ fi5)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5 fu5))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4+ fu4)+ fi4)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl4+ fu4))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))+ ginRange pinRange p+ = T.ufun2 c120v5v125v32inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2 (T.R (T.Tuple5 fl1 fl2 fl3 fl4 fl5) _)+ (T.R (T.Tuple5 fu1 fu2 fu3 fu4 fu5) _))+ _)+ (T.R (T.Tuple5 fi1 fi2 fi3 fi4 fi5) _) p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5,+ Ix a6) =>+ Ix (T.Tuple6 a1 a2 a3 a4 a5 a6) where+ grange prange p+ = T.ufun1 c129v5v135v53range prange p hrange+ where hrange+ (T.R+ (T.Tuple2 (T.R (T.Tuple6 fl1 fl2 fl3 fl4 fl5 fl6) _)+ (T.R (T.Tuple6 fu1 fu2 fu3 fu4 fu5 fu6) _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con6+ T.mkNoSrcPos+ p+ T.Tuple6+ T.aTuple6+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6)))))))))))))+ gindex pindex p+ = T.ufun2 c137v5v143v34index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2 (T.R (T.Tuple6 fl1 fl2 fl3 fl4 fl5 fl6) _)+ (T.R (T.Tuple6 fu1 fu2 fu3 fu4 fu5 fu6) _))+ _)+ (T.R (T.Tuple6 fi1 fi2 fi3 fi4 fi5 fi6) _) p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6)+ fi6)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6 fu6))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5+ fu5)+ fi5)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl5+ fu5))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))+ ginRange pinRange p+ = T.ufun2 c145v5v151v32inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2 (T.R (T.Tuple6 fl1 fl2 fl3 fl4 fl5 fl6) _)+ (T.R (T.Tuple6 fu1 fu2 fu3 fu4 fu5 fu6) _))+ _)+ (T.R (T.Tuple6 fi1 fi2 fi3 fi4 fi5 fi6) _) p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7) =>+ Ix (T.Tuple7 a1 a2 a3 a4 a5 a6 a7) where+ grange prange p+ = T.ufun1 c155v5v162v56range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R (T.Tuple7 fl1 fl2 fl3 fl4 fl5 fl6 fl7) _)+ (T.R (T.Tuple7 fu1 fu2 fu3 fu4 fu5 fu6 fu7) _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con7+ T.mkNoSrcPos+ p+ T.Tuple7+ T.aTuple7+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7)))))))))))))))+ gindex pindex p+ = T.ufun2 c164v5v171v35index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R (T.Tuple7 fl1 fl2 fl3 fl4 fl5 fl6 fl7) _)+ (T.R (T.Tuple7 fu1 fu2 fu3 fu4 fu5 fu6 fu7) _))+ _)+ (T.R (T.Tuple7 fi1 fi2 fi3 fi4 fi5 fi6 fi7) _) p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7)+ fi7)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7 fu7))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6+ fu6)+ fi6)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl6+ fu6))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))+ ginRange pinRange p+ = T.ufun2 c173v5v180v32inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R (T.Tuple7 fl1 fl2 fl3 fl4 fl5 fl6 fl7) _)+ (T.R (T.Tuple7 fu1 fu2 fu3 fu4 fu5 fu6 fu7) _))+ _)+ (T.R (T.Tuple7 fi1 fi2 fi3 fi4 fi5 fi6 fi7) _) p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ p))+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7, Ix a8) =>+ Ix (T.Tuple8 a1 a2 a3 a4 a5 a6 a7 a8) where+ grange prange p+ = T.ufun1 c184v5v192v56range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R (T.Tuple8 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8) _)+ (T.R (T.Tuple8 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8) _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi8+ p+ ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con8+ T.mkNoSrcPos+ p+ T.Tuple8+ T.aTuple8+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7+ fi8)))))))))))))))))+ gindex pindex p+ = T.ufun2 c194v5v203v37index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R (T.Tuple8 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8) _)+ (T.R (T.Tuple8 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8) _))+ _)+ (T.R (T.Tuple8 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8) _) p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8)+ fi8)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8 fu8))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7+ fu7)+ fi7)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl7+ fu7))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))))+ ginRange pinRange p+ = T.ufun2 c205v5v214v32inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R (T.Tuple8 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8) _)+ (T.R (T.Tuple8 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8) _))+ _)+ (T.R (T.Tuple8 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8) _) p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7, Ix a8, Ix a9) =>+ Ix (T.Tuple9 a1 a2 a3 a4 a5 a6 a7 a8 a9) where+ grange prange p+ = T.ufun1 c218v5v228v47range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R (T.Tuple9 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9)+ _)+ (T.R (T.Tuple9 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9)+ _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi8+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi9+ p+ ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con9+ T.mkNoSrcPos+ p+ T.Tuple9+ T.aTuple9+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7+ fi8+ fi9)))))))))))))))))))+ gindex pindex p+ = T.ufun2 c230v5v240v44index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R (T.Tuple9 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9)+ _)+ (T.R (T.Tuple9 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9)+ _))+ _)+ (T.R (T.Tuple9 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9)+ _)+ p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9)+ fi9)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9 fu9))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8+ fu8)+ fi8)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl8+ fu8))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))))))+ ginRange pinRange p+ = T.ufun2 c242v5v252v32inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R (T.Tuple9 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9)+ _)+ (T.R (T.Tuple9 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9)+ _))+ _)+ (T.R (T.Tuple9 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9)+ _)+ p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7, Ix a8, Ix a9, Ix a10) =>+ Ix (T.Tuple10 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) where+ grange prange p+ = T.ufun1 c257v5v269v50range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple10 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10)+ _)+ (T.R+ (T.Tuple10 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10)+ _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi8+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi9+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi10+ p+ ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con10+ T.mkNoSrcPos+ p+ T.Tuple10+ T.aTuple10+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7+ fi8+ fi9+ fi10)))))))))))))))))))))+ gindex pindex p+ = T.ufun2 c271v5v283v45index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple10 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10)+ _)+ (T.R+ (T.Tuple10 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10)+ _))+ _)+ (T.R+ (T.Tuple10 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10)+ _)+ p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10 fu10)+ fi10)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10+ fu10))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9+ fu9)+ fi9)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl9+ fu9))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))))))))+ ginRange pinRange p+ = T.ufun2 c285v5v297v35inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple10 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10)+ _)+ (T.R+ (T.Tuple10 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10)+ _))+ _)+ (T.R+ (T.Tuple10 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10)+ _)+ p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7, Ix a8, Ix a9, Ix a10, Ix a11) =>+ Ix (T.Tuple11 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11)+ where+ grange prange p+ = T.ufun1 c302v5v315v50range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple11 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11)+ _)+ (T.R+ (T.Tuple11 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11)+ _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi8+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi9+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi10+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi11+ p+ ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con11+ T.mkNoSrcPos+ p+ T.Tuple11+ T.aTuple11+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7+ fi8+ fi9+ fi10+ fi11)))))))))))))))))))))))+ gindex pindex p+ = T.ufun2 c317v5v330v46index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple11 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11)+ _)+ (T.R+ (T.Tuple11 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11)+ _))+ _)+ (T.R+ (T.Tuple11 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11)+ _)+ p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11 fu11)+ fi11)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11+ fu11))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10+ fu10)+ fi10)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl10+ fu10))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))))))))))+ ginRange pinRange p+ = T.ufun2 c332v5v345v35inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple11 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11)+ _)+ (T.R+ (T.Tuple11 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11)+ _))+ _)+ (T.R+ (T.Tuple11 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11)+ _)+ p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11)+ fi11)+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7, Ix a8, Ix a9, Ix a10, Ix a11, Ix a12) =>+ Ix (T.Tuple12 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12)+ where+ grange prange p+ = T.ufun1 c350v5v364v50range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple12 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12)+ _)+ (T.R+ (T.Tuple12 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12)+ _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi8+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi9+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi10+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi11+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl12+ fu12))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi12+ p+ ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con12+ T.mkNoSrcPos+ p+ T.Tuple12+ T.aTuple12+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7+ fi8+ fi9+ fi10+ fi11+ fi12)))))))))))))))))))))))))+ gindex pindex p+ = T.ufun2 c366v5v380v47index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple12 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12)+ _)+ (T.R+ (T.Tuple12 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12)+ _))+ _)+ (T.R+ (T.Tuple12 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11 fi12)+ _)+ p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12 fu12)+ fi12)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12+ fu12))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11+ fu11)+ fi11)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl11+ fu11))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))))))))))))+ ginRange pinRange p+ = T.ufun2 c382v5v396v35inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple12 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12)+ _)+ (T.R+ (T.Tuple12 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12)+ _))+ _)+ (T.R+ (T.Tuple12 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11 fi12)+ _)+ p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11)+ fi11)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl12+ fu12)+ fi12)+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7, Ix a8, Ix a9, Ix a10, Ix a11, Ix a12,+ Ix a13) =>+ Ix+ (T.Tuple13 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12+ a13)+ where+ grange prange p+ = T.ufun1 c401v5v416v50range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple13 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13)+ _)+ (T.R+ (T.Tuple13 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13)+ _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi8+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi9+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi10+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi11+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl12+ fu12))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi12+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl13+ fu13))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi13+ p+ ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con13+ T.mkNoSrcPos+ p+ T.Tuple13+ T.aTuple13+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7+ fi8+ fi9+ fi10+ fi11+ fi12+ fi13)))))))))))))))))))))))))))+ gindex pindex p+ = T.ufun2 c418v5v433v48index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple13 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13)+ _)+ (T.R+ (T.Tuple13 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13)+ _))+ _)+ (T.R+ (T.Tuple13 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11 fi12 fi13)+ _)+ p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13 fu13)+ fi13)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13+ fu13))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12+ fu12)+ fi12)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl12+ fu12))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl11+ fu11)+ fi11)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl11+ fu11))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))))))))))))))+ ginRange pinRange p+ = T.ufun2 c435v5v450v35inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple13 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13)+ _)+ (T.R+ (T.Tuple13 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13)+ _))+ _)+ (T.R+ (T.Tuple13 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11 fi12 fi13)+ _)+ p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11)+ fi11)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl12+ fu12)+ fi12)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl13+ fu13)+ fi13)+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7, Ix a8, Ix a9, Ix a10, Ix a11, Ix a12, Ix a13,+ Ix a14) =>+ Ix+ (T.Tuple14 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13+ a14)+ where+ grange prange p+ = T.ufun1 c455v5v471v50range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple14 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13 fl14)+ _)+ (T.R+ (T.Tuple14 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13 fu14)+ _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi8+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi9+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi10+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi11+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl12+ fu12))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi12+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl13+ fu13))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi13+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl14+ fu14))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi14+ p+ ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con14+ T.mkNoSrcPos+ p+ T.Tuple14+ T.aTuple14+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7+ fi8+ fi9+ fi10+ fi11+ fi12+ fi13+ fi14)))))))))))))))))))))))))))))+ gindex pindex p+ = T.ufun2 c473v5v489v49index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple14 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13 fl14)+ _)+ (T.R+ (T.Tuple14 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13 fu14)+ _))+ _)+ (T.R+ (T.Tuple14 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11 fi12 fi13 fi14)+ _)+ p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl14 fu14)+ fi14)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl14+ fu14))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13+ fu13)+ fi13)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl13+ fu13))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl12+ fu12)+ fi12)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl12+ fu12))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl11+ fu11)+ fi11)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl11+ fu11))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))))))))))))))))+ ginRange pinRange p+ = T.ufun2 c491v5v507v35inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple14 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13 fl14)+ _)+ (T.R+ (T.Tuple14 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13 fu14)+ _))+ _)+ (T.R+ (T.Tuple14 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11 fi12 fi13 fi14)+ _)+ p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11)+ fi11)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl12+ fu12)+ fi12)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl13+ fu13)+ fi13)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl14+ fu14)+ fi14)+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ +instance (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6,+ Ix a7, Ix a8, Ix a9, Ix a10, Ix a11, Ix a12, Ix a13,+ Ix a14, Ix a15) =>+ Ix+ (T.Tuple15 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13+ a14+ a15)+ where+ grange prange p+ = T.ufun1 c512v5v529v50range prange p hrange+ where hrange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple15 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13 fl14 fl15)+ _)+ (T.R+ (T.Tuple15 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13 fu14 fu15)+ _))+ _)+ p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi1 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi2 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fi3 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos+ p+ (\ fi4 p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (grange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.ufun1 T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi5 p ->+ T.uap2 T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi6 p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi7+ p ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi8+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi9+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi10+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi11+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl12+ fu12))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi12+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl13+ fu13))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi13+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl14+ fu14))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi14+ p+ ->+ T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!>>=)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl15+ fu15))+ (T.ufun1+ T.mkDoLambda+ T.mkNoSrcPos+ p+ (\ fi15+ p+ ->+ T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.greturn+ T.mkNoSrcPos+ p)+ (T.con15+ T.mkNoSrcPos+ p+ T.Tuple15+ T.aTuple15+ fi1+ fi2+ fi3+ fi4+ fi5+ fi6+ fi7+ fi8+ fi9+ fi10+ fi11+ fi12+ fi13+ fi14+ fi15)))))))))))))))))))))))))))))))+ gindex pindex p+ = T.ufun2 c531v5v548v50index pindex p hindex+ where hindex+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple15 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13 fl14 fl15)+ _)+ (T.R+ (T.Tuple15 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13 fu14 fu15)+ _))+ _)+ (T.R+ (T.Tuple15 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11 fi12 fi13 fi14 fi15)+ _)+ p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl15 fu15)+ fi15)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl15+ fu15))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl14+ fu14)+ fi14)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl14+ fu14))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ fl13+ fu13)+ fi13)+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl13+ fu13))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl12+ fu12)+ fi12)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl12+ fu12))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl11+ fu11)+ fi11)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl11+ fu11))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl10+ fu10))+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uap2 T.mkNoSrcPos p+ ((!*) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl6+ fu6))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl5+ fu5))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl4+ fu4))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl3+ fu3))+ (T.uap2+ T.mkNoSrcPos+ p+ ((!+)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2)+ fi2)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!*)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (grangeSize+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl2+ fu2))+ (T.uap2+ T.mkNoSrcPos+ p+ (gindex+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl1+ fu1)+ fi1))))))))))))))))))))))))))))+ ginRange pinRange p+ = T.ufun2 c550v5v567v35inRange pinRange p hinRange+ where hinRange+ (T.R+ (T.Tuple2+ (T.R+ (T.Tuple15 fl1 fl2 fl3 fl4 fl5 fl6 fl7 fl8 fl9 fl10+ fl11 fl12 fl13 fl14 fl15)+ _)+ (T.R+ (T.Tuple15 fu1 fu2 fu3 fu4 fu5 fu6 fu7 fu8 fu9 fu10+ fu11 fu12 fu13 fu14 fu15)+ _))+ _)+ (T.R+ (T.Tuple15 fi1 fi2 fi3 fi4 fi5 fi6 fi7 fi8 fi9 fi10+ fi11 fi12 fi13 fi14 fi15)+ _)+ p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl1 fu1)+ fi1)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fl2+ fu2)+ fi2)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl3+ fu3)+ fi3)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2+ T.aTuple2+ fl4+ fu4)+ fi4)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl5+ fu5)+ fi5)+ (T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p+ (ginRange T.mkNoSrcPos+ p)+ (T.con2 T.mkNoSrcPos p+ T.Tuple2+ T.aTuple2+ fl6+ fu6)+ fi6)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl7+ fu7)+ fi7)+ (T.uwrapForward p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl8+ fu8)+ fi8)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl9+ fu9)+ fi9)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl10+ fu10)+ fi10)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl11+ fu11)+ fi11)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl12+ fu12)+ fi12)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl13+ fu13)+ fi13)+ (T.uwrapForward+ p+ ((*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl14+ fu14)+ fi14)+ (T.uap2+ T.mkNoSrcPos+ p+ (ginRange+ T.mkNoSrcPos+ p)+ (T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ fl15+ fu15)+ fi15)+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p)+c9v5v10v54rangeSize+ = T.mkVariable tIx 90005 100054 3 (-1) "rangeSize"+ Prelude.False+c22v5v22v44inRange+ = T.mkVariable tIx 220005 220044 3 (-1) "inRange"+ Prelude.False+c19v5v21v64index+ = T.mkVariable tIx 190005 210064 3 (-1) "index"+ Prelude.False+c18v5v18v24range+ = T.mkVariable tIx 180005 180024 3 (-1) "range"+ Prelude.False+c29v5v29v43inRange+ = T.mkVariable tIx 290005 290043 3 (-1) "inRange"+ Prelude.False+c26v5v28v64index+ = T.mkVariable tIx 260005 280064 3 (-1) "index"+ Prelude.False+c25v5v25v24range+ = T.mkVariable tIx 250005 250024 3 (-1) "range"+ Prelude.False+c36v5v36v43inRange+ = T.mkVariable tIx 360005 360043 3 (-1) "inRange"+ Prelude.False+c33v5v35v64index+ = T.mkVariable tIx 330005 350064 3 (-1) "index"+ Prelude.False+c32v5v32v24range+ = T.mkVariable tIx 320005 320024 3 (-1) "range"+ Prelude.False+c44v3v44v44inRange+ = T.mkVariable tIx 440003 440044 3 (-1) "inRange"+ Prelude.False+c41v3v43v67index+ = T.mkVariable tIx 410003 430067 3 (-1) "index"+ Prelude.False+c39v3v39v27range+ = T.mkVariable tIx 390003 390027 3 (-1) "range"+ Prelude.False+c53v3v53v44inRange+ = T.mkVariable tIx 530003 530044 3 (-1) "inRange"+ Prelude.False+c50v3v52v71index+ = T.mkVariable tIx 500003 520071 3 (-1) "index"+ Prelude.False+c48v3v48v27range+ = T.mkVariable tIx 480003 480027 3 (-1) "range"+ Prelude.False+c59v3v59v27inRange+ = T.mkVariable tIx 590003 590027 3 (-1) "inRange"+ Prelude.False+c58v3v58v22index+ = T.mkVariable tIx 580003 580022 3 (-1) "index"+ Prelude.False+c57v3v57v22range+ = T.mkVariable tIx 570003 570022 3 (-1) "range"+ Prelude.False+c66v10v67v56inRange+ = T.mkVariable tIx 660010 670056 3 (-1) "inRange"+ Prelude.False+c64v10v65v72index+ = T.mkVariable tIx 640010 650072 3 (-1) "index"+ Prelude.False+c62v10v63v67range+ = T.mkVariable tIx 620010 630067 3 (-1) "range"+ Prelude.False+c80v5v83v32inRange+ = T.mkVariable tIx 800005 830032 3 (-1) "inRange"+ Prelude.False+c75v5v78v29index+ = T.mkVariable tIx 750005 780029 3 (-1) "index"+ Prelude.False+c70v5v73v44range+ = T.mkVariable tIx 700005 730044 3 (-1) "range"+ Prelude.False+c98v5v102v32inRange+ = T.mkVariable tIx 980005 1020032 3 (-1) "inRange"+ Prelude.False+c92v5v96v32index+ = T.mkVariable tIx 920005 960032 3 (-1) "index"+ Prelude.False+c86v5v90v47range+ = T.mkVariable tIx 860005 900047 3 (-1) "range"+ Prelude.False+c120v5v125v32inRange+ = T.mkVariable tIx 1200005 1250032 3 (-1) "inRange"+ Prelude.False+c113v5v118v32index+ = T.mkVariable tIx 1130005 1180032 3 (-1) "index"+ Prelude.False+c106v5v111v50range+ = T.mkVariable tIx 1060005 1110050 3 (-1) "range"+ Prelude.False+c145v5v151v32inRange+ = T.mkVariable tIx 1450005 1510032 3 (-1) "inRange"+ Prelude.False+c137v5v143v34index+ = T.mkVariable tIx 1370005 1430034 3 (-1) "index"+ Prelude.False+c129v5v135v53range+ = T.mkVariable tIx 1290005 1350053 3 (-1) "range"+ Prelude.False+c173v5v180v32inRange+ = T.mkVariable tIx 1730005 1800032 3 (-1) "inRange"+ Prelude.False+c164v5v171v35index+ = T.mkVariable tIx 1640005 1710035 3 (-1) "index"+ Prelude.False+c155v5v162v56range+ = T.mkVariable tIx 1550005 1620056 3 (-1) "range"+ Prelude.False+c205v5v214v32inRange+ = T.mkVariable tIx 2050005 2140032 3 (-1) "inRange"+ Prelude.False+c194v5v203v37index+ = T.mkVariable tIx 1940005 2030037 3 (-1) "index"+ Prelude.False+c184v5v192v56range+ = T.mkVariable tIx 1840005 1920056 3 (-1) "range"+ Prelude.False+c242v5v252v32inRange+ = T.mkVariable tIx 2420005 2520032 3 (-1) "inRange"+ Prelude.False+c230v5v240v44index+ = T.mkVariable tIx 2300005 2400044 3 (-1) "index"+ Prelude.False+c218v5v228v47range+ = T.mkVariable tIx 2180005 2280047 3 (-1) "range"+ Prelude.False+c285v5v297v35inRange+ = T.mkVariable tIx 2850005 2970035 3 (-1) "inRange"+ Prelude.False+c271v5v283v45index+ = T.mkVariable tIx 2710005 2830045 3 (-1) "index"+ Prelude.False+c257v5v269v50range+ = T.mkVariable tIx 2570005 2690050 3 (-1) "range"+ Prelude.False+c332v5v345v35inRange+ = T.mkVariable tIx 3320005 3450035 3 (-1) "inRange"+ Prelude.False+c317v5v330v46index+ = T.mkVariable tIx 3170005 3300046 3 (-1) "index"+ Prelude.False+c302v5v315v50range+ = T.mkVariable tIx 3020005 3150050 3 (-1) "range"+ Prelude.False+c382v5v396v35inRange+ = T.mkVariable tIx 3820005 3960035 3 (-1) "inRange"+ Prelude.False+c366v5v380v47index+ = T.mkVariable tIx 3660005 3800047 3 (-1) "index"+ Prelude.False+c350v5v364v50range+ = T.mkVariable tIx 3500005 3640050 3 (-1) "range"+ Prelude.False+c435v5v450v35inRange+ = T.mkVariable tIx 4350005 4500035 3 (-1) "inRange"+ Prelude.False+c418v5v433v48index+ = T.mkVariable tIx 4180005 4330048 3 (-1) "index"+ Prelude.False+c401v5v416v50range+ = T.mkVariable tIx 4010005 4160050 3 (-1) "range"+ Prelude.False+c491v5v507v35inRange+ = T.mkVariable tIx 4910005 5070035 3 (-1) "inRange"+ Prelude.False+c473v5v489v49index+ = T.mkVariable tIx 4730005 4890049 3 (-1) "index"+ Prelude.False+c455v5v471v50range+ = T.mkVariable tIx 4550005 4710050 3 (-1) "range"+ Prelude.False+c550v5v567v35inRange+ = T.mkVariable tIx 5500005 5670035 3 (-1) "inRange"+ Prelude.False+c531v5v548v50index+ = T.mkVariable tIx 5310005 5480050 3 (-1) "index"+ Prelude.False+c512v5v529v50range+ = T.mkVariable tIx 5120005 5290050 3 (-1) "range"+ Prelude.False+p = T.mkRoot+tIx = T.mkModule "Ix" "Ix.hs" Prelude.False
Hat/List.hs view
@@ -1,1723 +1,1904 @@ module Hat.List- (gelemIndex,aelemIndex,helemIndex,gelemIndices,aelemIndices,helemIndices,gfind- ,afind,hfind,gfindIndex,afindIndex,hfindIndex,gfindIndices,afindIndices- ,hfindIndices,gnub,gnubBy,anubBy,hnubBy,gdelete,gdeleteBy,adeleteBy- ,hdeleteBy,(!\\),gdeleteFirstsBy,adeleteFirstsBy,hdeleteFirstsBy,gunion- ,gunionBy,aunionBy,hunionBy,gintersect,gintersectBy,aintersectBy- ,hintersectBy,gintersperse,aintersperse,hintersperse,gtranspose,atranspose- ,htranspose,gpartition,apartition,hpartition,ggroup,ggroupBy,agroupBy- ,hgroupBy,ginits,ainits,hinits,gtails,atails,htails,gisPrefixOf,aisPrefixOf- ,hisPrefixOf,gisSuffixOf,aisSuffixOf,hisSuffixOf,gmapAccumL,amapAccumL- ,hmapAccumL,gmapAccumR,amapAccumR,hmapAccumR,gsort,gsortBy,asortBy,hsortBy- ,ginsert,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,gzip4,gzip5,gzip6,gzip7,gzipWith4- ,azipWith4,hzipWith4,gzipWith5,azipWith5,hzipWith5,gzipWith6,azipWith6- ,hzipWith6,gzipWith7,azipWith7,hzipWith7,gunzip4,gunzip5,gunzip6,gunzip7- ,gunfoldr,aunfoldr,hunfoldr,gmap,amap,hmap,(!++),(+++),(*++),gconcat,aconcat- ,hconcat,gfilter,afilter,hfilter,ghead,ahead,hhead,glast,alast,hlast,gtail- ,atail,htail,ginit,ainit,hinit,gnull,anull,hnull,glength,alength,hlength- ,(!!!),(+!!),(*!!),gfoldl,afoldl,hfoldl,gfoldl1,afoldl1,hfoldl1,gscanl- ,ascanl,hscanl,gscanl1,ascanl1,hscanl1,gfoldr,afoldr,hfoldr,gfoldr1,afoldr1- ,hfoldr1,gscanr,ascanr,hscanr,gscanr1,ascanr1,hscanr1,giterate,aiterate- ,hiterate,grepeat,arepeat,hrepeat,greplicate,areplicate,hreplicate,gcycle- ,acycle,hcycle,gtake,atake,htake,gdrop,adrop,hdrop,gsplitAt,asplitAt- ,hsplitAt,gtakeWhile,atakeWhile,htakeWhile,gdropWhile,adropWhile,hdropWhile- ,gspan,aspan,hspan,gbreak,abreak,hbreak,glines,alines,hlines,gwords,awords- ,hwords,gunlines,gunwords,aunwords,hunwords,greverse,gand,gor,gany,aany,hany- ,gall,aall,hall,gelem,aelem,helem,gnotElem,anotElem,hnotElem,glookup,alookup- ,hlookup,gsum,gproduct,gmaximum,amaximum,hmaximum,gminimum,aminimum,hminimum- ,gconcatMap,aconcatMap,hconcatMap,gzip,gzip3,gzipWith,azipWith,hzipWith- ,gzipWith3,azipWith3,hzipWith3,gunzip,gunzip3) 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.Maybe (glistToMaybe,alistToMaybe,hlistToMaybe)--gelemIndex ::- Eq a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun (T.List a) (Maybe Int)))--helemIndex :: Eq a => (T.R a) -> T.RefExp -> T.R (T.Fun (T.List a) (Maybe Int))--gelemIndex pelemIndex p = T.ufun1 aelemIndex pelemIndex p helemIndex--helemIndex fx p =- T.uwrapForward p- (hfindIndex (T.uap1 T.mkNoSrcPos p (T.mkNoSrcPos !== p) fx) p)--gelemIndices ::- Eq a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun (T.List a) (T.List Int)))--helemIndices ::- Eq a => (T.R a) -> T.RefExp -> T.R (T.Fun (T.List a) (T.List Int))--gelemIndices pelemIndices p = T.ufun1 aelemIndices pelemIndices p helemIndices--helemIndices fx p =- T.uap1 T.mkNoSrcPos p (gfindIndices T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (T.mkNoSrcPos !== p) fx)--gfind ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Fun a Bool) (T.Fun (T.List a) (Maybe a)))--hfind :: (T.R (T.Fun a Bool)) -> T.RefExp -> T.R (T.Fun (T.List a) (Maybe a))--gfind pfind p = T.ufun1 afind pfind p hfind--hfind fp p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (glistToMaybe T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gfilter T.mkNoSrcPos p) fp)--gfindIndex ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Fun a Bool) (T.Fun (T.List a) (Maybe Int)))--hfindIndex ::- (T.R (T.Fun a Bool)) -> T.RefExp -> T.R (T.Fun (T.List a) (Maybe Int))--gfindIndex pfindIndex p = T.ufun1 afindIndex pfindIndex p hfindIndex--hfindIndex fp p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (glistToMaybe T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gfindIndices T.mkNoSrcPos p) fp)--gfindIndices ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Fun a Bool) (T.Fun (T.List a) (T.List Int)))--hfindIndices ::- (T.R (T.Fun a Bool)) -> (T.R (T.List a)) -> T.RefExp -> T.R (T.List Int)--gfindIndices pfindIndices p = T.ufun2 afindIndices pfindIndices p hfindIndices--hfindIndices fp fxs p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 (T.R (T.Tuple2 fx fi) _) p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_filter T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p fp fx)- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fi)) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in (v0v0v0v0v1))- f_x))- (T.uap2 T.mkNoSrcPos p (gzip T.mkNoSrcPos p) fxs- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.genumFrom T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)))))- (T.fromExpList T.mkNoSrcPos p [])--gnub :: Eq a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List a))--snub :: Eq a => T.R (T.Fun (T.List a) (T.List a))--gnub pnub p = T.uconstUse pnub p snub--snub =- T.uconstDef T.mkRoot anub- (\ p -> T.uap1 T.mkNoSrcPos p (gnubBy T.mkNoSrcPos p) (T.mkNoSrcPos !== p))--gnubBy ::- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (T.Fun a (T.Fun a Bool)) (T.Fun (T.List a) (T.List a)))--hnubBy ::- (T.R (T.Fun a (T.Fun a Bool))) ->- (T.R (T.List a)) -> T.RefExp -> T.R (T.List a)--gnubBy pnubBy p = T.ufun2 anubBy pnubBy p hnubBy--hnubBy feq (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList-hnubBy feq (T.R (T.Cons fx fxs) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons fx- (T.uwrapForward p- (hnubBy feq- (T.uwrapForward p- (hfilter- (T.ufun1 T.mkLambda T.mkNoSrcPos p- (\ fy p ->- T.uwrapForward p (hnot (T.uap2 T.mkNoSrcPos p feq fx fy) p)))- fxs p)) p))-hnubBy _ _ p = T.fatal p--gdelete ::- Eq a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun (T.List a) (T.List a)))--sdelete :: Eq a => T.R (T.Fun a (T.Fun (T.List a) (T.List a)))--gdelete pdelete p = T.uconstUse pdelete p sdelete--sdelete =- T.uconstDef T.mkRoot adelete- (\ p ->- T.uap1 T.mkNoSrcPos p (gdeleteBy T.mkNoSrcPos p) (T.mkNoSrcPos !== p))--gdeleteBy ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun a Bool)) (T.Fun a (T.Fun (T.List a) (T.List a))))--hdeleteBy ::- (T.R (T.Fun a (T.Fun a Bool))) ->- (T.R a) -> (T.R (T.List a)) -> T.RefExp -> T.R (T.List a)--gdeleteBy pdeleteBy p = T.ufun3 adeleteBy pdeleteBy p hdeleteBy--hdeleteBy feq fx (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList-hdeleteBy feq fx (T.R (T.Cons fy fys) _) p =- T.ucif p (T.uap2 T.mkNoSrcPos p feq fx fy) (T.projection T.mkNoSrcPos p fys)- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fy- (T.uwrapForward p (hdeleteBy feq fx fys p)))-hdeleteBy _ _ _ p = T.fatal p--(!\\) ::- Eq a =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))--(|\\) :: Eq a => T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))--(!\\) (%\\) p = T.uconstUse (%\\) p (|\\)--(|\\) =- T.uconstDef T.mkRoot (+\\)- (\ p ->- T.uap1 T.mkNoSrcPos p (gfoldl T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (gdelete T.mkNoSrcPos p)))--gdeleteFirstsBy ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun a Bool))- (T.Fun (T.List a) (T.Fun (T.List a) (T.List a))))--hdeleteFirstsBy ::- (T.R (T.Fun a (T.Fun a Bool))) ->- T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))--gdeleteFirstsBy pdeleteFirstsBy p =- T.ufun1 adeleteFirstsBy pdeleteFirstsBy p hdeleteFirstsBy--hdeleteFirstsBy feq p =- T.uap1 T.mkNoSrcPos p (gfoldl T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gdeleteBy T.mkNoSrcPos p) feq))--gunion ::- Eq a =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))--sunion :: Eq a => T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))--gunion punion p = T.uconstUse punion p sunion--sunion =- T.uconstDef T.mkRoot aunion- (\ p ->- T.uap1 T.mkNoSrcPos p (gunionBy T.mkNoSrcPos p) (T.mkNoSrcPos !== p))--gunionBy ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun a Bool))- (T.Fun (T.List a) (T.Fun (T.List a) (T.List a))))--hunionBy ::- (T.R (T.Fun a (T.Fun a Bool))) ->- (T.R (T.List a)) -> (T.R (T.List a)) -> T.RefExp -> T.R (T.List a)--gunionBy punionBy p = T.ufun3 aunionBy punionBy p hunionBy--hunionBy feq fxs fys p =- T.uwrapForward p- ((fxs- *++- (T.uap3 T.mkNoSrcPos p (gdeleteFirstsBy T.mkNoSrcPos p) feq- (T.uwrapForward p (hnubBy feq fys p)) fxs)) p)--gintersect ::- Eq a =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))--sintersect :: Eq a => T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))--gintersect pintersect p = T.uconstUse pintersect p sintersect--sintersect =- T.uconstDef T.mkRoot aintersect- (\ p ->- T.uap1 T.mkNoSrcPos p (gintersectBy T.mkNoSrcPos p) (T.mkNoSrcPos !== p))--gintersectBy ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun a Bool))- (T.Fun (T.List a) (T.Fun (T.List a) (T.List a))))--hintersectBy ::- (T.R (T.Fun a (T.Fun a Bool))) ->- (T.R (T.List a)) -> (T.R (T.List a)) -> T.RefExp -> T.R (T.List a)--gintersectBy pintersectBy p = T.ufun3 aintersectBy pintersectBy p hintersectBy--hintersectBy feq fxs fys p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 fx p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_filter T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (gany T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p feq fx) fys)- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fx)) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in (v0v0v0v0v1))- f_x)) fxs) (T.fromExpList T.mkNoSrcPos p [])--gintersperse ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun (T.List a) (T.List a)))--hintersperse :: (T.R a) -> (T.R (T.List a)) -> T.RefExp -> T.R (T.List a)--gintersperse pintersperse p = T.ufun2 aintersperse pintersperse p hintersperse--hintersperse fsep (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList-hintersperse fsep (T.R (T.Cons fx (T.R T.List _)) _) p =- T.fromExpList T.mkNoSrcPos p [fx]-hintersperse fsep (T.R (T.Cons fx fxs) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons fx- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fsep- (T.uwrapForward p (hintersperse fsep fxs p)))-hintersperse _ _ p = T.fatal p--gtranspose ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List (T.List a)) (T.List (T.List a)))--htranspose :: (T.R (T.List (T.List a))) -> T.RefExp -> T.R (T.List (T.List a))--gtranspose ptranspose p = T.ufun1 atranspose ptranspose p htranspose--htranspose (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList-htranspose (T.R (T.Cons (T.R T.List _) fxss) _) p =- T.uwrapForward p (htranspose fxss p)-htranspose (T.R (T.Cons (T.R (T.Cons fx fxs) _) fxss) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx- (T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 (T.R (T.Cons fh ft) _) p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fh) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x)) fxss) (T.fromExpList T.mkNoSrcPos p [])))- (T.uwrapForward p- (htranspose- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fxs- (T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 (T.R (T.Cons fh ft) _) p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons ft) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in- (v0v0v0v0v1)) f_x)) fxss)- (T.fromExpList T.mkNoSrcPos p []))) p))-htranspose _ p = T.fatal p--gpartition ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a Bool)- (T.Fun (T.List a) (T.Tuple2 (T.List a) (T.List a))))--hpartition ::- (T.R (T.Fun a Bool)) ->- (T.R (T.List a)) -> T.RefExp -> T.R (T.Tuple2 (T.List a) (T.List a))--gpartition ppartition p = T.ufun2 apartition ppartition p hpartition--hpartition fp fxs p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (T.uwrapForward p (hfilter fp fxs p))- (T.uwrapForward p- (hfilter- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (gnot T.mkNoSrcPos p) fp) fxs- p))--ggroup ::- Eq a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a)))--sgroup :: Eq a => T.R (T.Fun (T.List a) (T.List (T.List a)))--ggroup pgroup p = T.uconstUse pgroup p sgroup--sgroup =- T.uconstDef T.mkRoot agroup- (\ p ->- T.uap1 T.mkNoSrcPos p (ggroupBy T.mkNoSrcPos p) (T.mkNoSrcPos !== p))--ggroupBy ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun a Bool)) (T.Fun (T.List a) (T.List (T.List a))))--hgroupBy ::- (T.R (T.Fun a (T.Fun a Bool))) ->- (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a))--ggroupBy pgroupBy p = T.ufun2 agroupBy pgroupBy p hgroupBy--hgroupBy feq (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList-hgroupBy feq (T.R (T.Cons fx fxs) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx (gys T.mkNoSrcPos p))- (T.uwrapForward p (hgroupBy feq (gzs T.mkNoSrcPos p) p))- where- - gys pys p = T.uconstUse pys p sys- - gzs pys p = T.uconstUse pys p szs- - j108v34v108v40ys =- case T.uwrapForward p (hspan (T.uap1 T.mkNoSrcPos p feq fx) fxs p) of- T.R (T.Tuple2 fys fzs) kys -> (kys,fys,fzs)- _ -> T.fatal p- - sys =- T.uconstDef p a108v35v108v36ys- (\ _ -> case j108v34v108v40ys of (kys,fys,fzs) -> fys)- - szs =- T.uconstDef p a108v38v108v39zs- (\ _ -> case j108v34v108v40ys of (kys,fys,fzs) -> fzs)- -hgroupBy _ _ p = T.fatal p--ginits :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a)))--hinits :: (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a))--ginits pinits p = T.ufun1 ainits pinits p hinits--hinits (T.R T.List _) p =- T.fromExpList T.mkNoSrcPos p [T.con0 T.mkNoSrcPos p T.List T.aList]-hinits (T.R (T.Cons fx fxs) _) p =- T.uwrapForward p- (((T.fromExpList T.mkNoSrcPos p [T.con0 T.mkNoSrcPos p T.List T.aList])- *++- (T.uwrapForward p- (hmap (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fx)- (T.uwrapForward p (hinits fxs p)) p))) p)-hinits _ p = T.fatal p--gtails :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List (T.List a)))--htails :: (T.R (T.List a)) -> T.RefExp -> T.R (T.List (T.List a))--gtails ptails p = T.ufun1 atails ptails p htails--htails (T.R T.List _) p =- T.fromExpList T.mkNoSrcPos p [T.con0 T.mkNoSrcPos p T.List T.aList]-htails (fxxs@(T.R (T.Cons _ fxs) _)) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons fxxs (T.uwrapForward p (htails fxs p))-htails _ p = T.fatal p--gisPrefixOf ::- Eq a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) Bool))--hisPrefixOf ::- Eq a => (T.R (T.List a)) -> (T.R (T.List a)) -> T.RefExp -> T.R Bool--gisPrefixOf pisPrefixOf p = T.ufun2 aisPrefixOf pisPrefixOf p hisPrefixOf--hisPrefixOf (T.R T.List _) _ p = T.con0 T.mkNoSrcPos p True aTrue-hisPrefixOf _ (T.R T.List _) p = T.con0 T.mkNoSrcPos p False aFalse-hisPrefixOf (T.R (T.Cons fx fxs) _) (T.R (T.Cons fy fys) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !== p) fx fy)- *&&- (T.uwrapForward p (hisPrefixOf fxs fys p))) p)-hisPrefixOf _ _ p = T.fatal p--gisSuffixOf ::- Eq a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.List a) Bool))--hisSuffixOf ::- Eq a => (T.R (T.List a)) -> (T.R (T.List a)) -> T.RefExp -> T.R Bool--gisSuffixOf pisSuffixOf p = T.ufun2 aisSuffixOf pisSuffixOf p hisSuffixOf--hisSuffixOf fx fy p =- T.uwrapForward p- (hisPrefixOf (T.uap1 T.mkNoSrcPos p (greverse T.mkNoSrcPos p) fx)- (T.uap1 T.mkNoSrcPos p (greverse T.mkNoSrcPos p) fy) p)--gmapAccumL ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (T.Tuple2 a c)))- (T.Fun a (T.Fun (T.List b) (T.Tuple2 a (T.List c)))))--hmapAccumL ::- (T.R (T.Fun a (T.Fun b (T.Tuple2 a c)))) ->- (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R (T.Tuple2 a (T.List c))--gmapAccumL pmapAccumL p = T.ufun3 amapAccumL pmapAccumL p hmapAccumL--hmapAccumL ff fs (T.R T.List _) p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fs- (T.con0 T.mkNoSrcPos p T.List T.aList)-hmapAccumL ff fs (T.R (T.Cons fx fxs) _) p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gs'' T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Cons T.aCons (gy T.mkNoSrcPos p)- (gys T.mkNoSrcPos p))- where- - gs' ps' p = T.uconstUse ps' p ss'- - gy ps' p = T.uconstUse ps' p sy- - j133v34v133v41s' =- case T.uap2 T.mkNoSrcPos p ff fs fx of- T.R (T.Tuple2 fs' fy) ks' -> (ks',fs',fy)- _ -> T.fatal p- - ss' =- T.uconstDef p a133v35v133v36s'- (\ _ -> case j133v34v133v41s' of (ks',fs',fy) -> fs')- - sy =- T.uconstDef p a133v39v133v39y- (\ _ -> case j133v34v133v41s' of (ks',fs',fy) -> fy)- - gs'' ps'' p = T.uconstUse ps'' p ss''- - gys ps'' p = T.uconstUse ps'' p sys- - j134v34v134v41s'' =- case T.uwrapForward p (hmapAccumL ff (gs' T.mkNoSrcPos p) fxs p) of- T.R (T.Tuple2 fs'' fys) ks'' -> (ks'',fs'',fys)- _ -> T.fatal p- - ss'' =- T.uconstDef p a134v35v134v37s''- (\ _ -> case j134v34v134v41s'' of (ks'',fs'',fys) -> fs'')- - sys =- T.uconstDef p a134v39v134v40ys- (\ _ -> case j134v34v134v41s'' of (ks'',fs'',fys) -> fys)- -hmapAccumL _ _ _ p = T.fatal p--gmapAccumR ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (T.Tuple2 a c)))- (T.Fun a (T.Fun (T.List b) (T.Tuple2 a (T.List c)))))--hmapAccumR ::- (T.R (T.Fun a (T.Fun b (T.Tuple2 a c)))) ->- (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R (T.Tuple2 a (T.List c))--gmapAccumR pmapAccumR p = T.ufun3 amapAccumR pmapAccumR p hmapAccumR--hmapAccumR ff fs (T.R T.List _) p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fs- (T.con0 T.mkNoSrcPos p T.List T.aList)-hmapAccumR ff fs (T.R (T.Cons fx fxs) _) p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gs'' T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Cons T.aCons (gy T.mkNoSrcPos p)- (gys T.mkNoSrcPos p))- where- - gs'' ps'' p = T.uconstUse ps'' p ss''- - gy ps'' p = T.uconstUse ps'' p sy- - j139v34v139v41s'' =- case T.uap2 T.mkNoSrcPos p ff (gs' T.mkNoSrcPos p) fx of- T.R (T.Tuple2 fs'' fy) ks'' -> (ks'',fs'',fy)- _ -> T.fatal p- - ss'' =- T.uconstDef p a139v35v139v37s''- (\ _ -> case j139v34v139v41s'' of (ks'',fs'',fy) -> fs'')- - sy =- T.uconstDef p a139v39v139v39y- (\ _ -> case j139v34v139v41s'' of (ks'',fs'',fy) -> fy)- - gs' ps' p = T.uconstUse ps' p ss'- - gys ps' p = T.uconstUse ps' p sys- - j140v34v140v41s' =- case T.uwrapForward p (hmapAccumR ff fs fxs p) of- T.R (T.Tuple2 fs' fys) ks' -> (ks',fs',fys)- _ -> T.fatal p- - ss' =- T.uconstDef p a140v35v140v36s'- (\ _ -> case j140v34v140v41s' of (ks',fs',fys) -> fs')- - sys =- T.uconstDef p a140v39v140v40ys- (\ _ -> case j140v34v140v41s' of (ks',fs',fys) -> fys)- -hmapAccumR _ _ _ p = T.fatal p--gunfoldr ::- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (T.Fun b (Maybe (T.Tuple2 a b))) (T.Fun b (T.List a)))--hunfoldr ::- (T.R (T.Fun b (Maybe (T.Tuple2 a b)))) ->- (T.R b) -> T.RefExp -> T.R (T.List a)--gunfoldr punfoldr p = T.ufun2 aunfoldr punfoldr p hunfoldr--hunfoldr ff fb p =- T.uccase T.mkNoSrcPos p- (let- v143v27v145v61v1 (T.R Nothing _) p = T.con0 T.mkNoSrcPos p T.List T.aList- v143v27v145v61v1 (T.R (Just (T.R (T.Tuple2 fa fb) _)) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons fa- (T.uwrapForward p (hunfoldr ff fb p))- v143v27v145v61v1 _ p = T.fatal p in (v143v27v145v61v1))- (T.uap1 T.mkNoSrcPos p ff fb)--gsort :: Ord a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (T.List a))--ssort :: Ord a => T.R (T.Fun (T.List a) (T.List a))--gsort psort p = T.uconstUse psort p ssort--ssort =- T.uconstDef T.mkRoot asort- (\ p -> T.uwrapForward p (hsortBy (gcompare T.mkNoSrcPos p) p))--gsortBy ::- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (T.Fun a (T.Fun a Ordering)) (T.Fun (T.List a) (T.List a)))--hsortBy ::- (T.R (T.Fun a (T.Fun a Ordering))) ->- T.RefExp -> T.R (T.Fun (T.List a) (T.List a))--gsortBy psortBy p = T.ufun1 asortBy psortBy p hsortBy--hsortBy fcmp p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (gmergeAll T.mkNoSrcPos p)- (gsequences T.mkNoSrcPos p)- where- - gsequences psequences p =- T.ufun1 a153v5v156v23sequences psequences p hsequences- - asequences = a153v5v156v23sequences- - hsequences (T.R (T.Cons fa (T.R (T.Cons fb fxs) _)) _) p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !== p)- (T.uap2 T.mkNoSrcPos p fcmp fa fb) (T.con0 T.mkNoSrcPos p GT aGT))- (T.uwrapForward p- (hdescending fb (T.fromExpList T.mkNoSrcPos p [fa]) fxs p))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uwrapForward p- (hascending fb (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fa) fxs p))- (T.fatal p))- hsequences fxs p = T.fromExpList T.mkNoSrcPos p [fxs]- - gdescending pdescending p =- T.ufun3 a158v5v160v46descending pdescending p hdescending- - adescending = a158v5v160v46descending- - hdescending fa fas (z3descending@(T.R (T.Cons fb fbs) _)) p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !== p)- (T.uap2 T.mkNoSrcPos p fcmp fa fb) (T.con0 T.mkNoSrcPos p GT aGT))- (T.uwrapForward p- (hdescending fb (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fas) fbs p))- (y1descending fa fas z3descending p)- hdescending fa fas z3descending p = y1descending fa fas z3descending p- - y1descending fa fas fbs p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fas)- (T.uwrapForward p (hsequences fbs p))- - gascending pascending p =- T.ufun3 a162v5v164v46ascending pascending p hascending- - aascending = a162v5v164v46ascending- - hascending fa fas (z3ascending@(T.R (T.Cons fb fbs) _)) p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/= p)- (T.uap2 T.mkNoSrcPos p fcmp fa fb) (T.con0 T.mkNoSrcPos p GT aGT))- (T.uwrapForward p- (hascending fb- (T.ufun1 T.mkLambda T.mkNoSrcPos p- (\ fys p ->- T.uap1 T.mkNoSrcPos p fas- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fys))) fbs p))- (y1ascending fa fas z3ascending p)- hascending fa fas z3ascending p = y1ascending fa fas z3ascending p- - y1ascending fa fas fbs p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons- (T.uap1 T.mkNoSrcPos p fas (T.fromExpList T.mkNoSrcPos p [fa]))- (T.uwrapForward p (hsequences fbs p))- - gmergeAll pmergeAll p = T.ufun1 a166v5v167v42mergeAll pmergeAll p hmergeAll- - amergeAll = a166v5v167v42mergeAll- - hmergeAll (T.R (T.Cons fx (T.R T.List _)) _) p =- T.projection T.mkNoSrcPos p fx- hmergeAll fxs p =- T.uwrapForward p (hmergeAll (T.uwrapForward p (hmergePairs fxs p)) p)- - gmergePairs pmergePairs p =- T.ufun1 a169v5v170v28mergePairs pmergePairs p hmergePairs- - amergePairs = a169v5v170v28mergePairs- - hmergePairs (T.R (T.Cons fa (T.R (T.Cons fb fxs) _)) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.uwrapForward p (hmerge fa fb p))- (T.uwrapForward p (hmergePairs fxs p))- hmergePairs fxs p = T.projection T.mkNoSrcPos p fxs- - gmerge pmerge p = T.ufun2 a172v5v176v28merge pmerge p hmerge- - amerge = a172v5v176v28merge- - hmerge (fas@(T.R (T.Cons fa fas') _)) (fbs@(T.R (T.Cons fb fbs') _)) p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !== p)- (T.uap2 T.mkNoSrcPos p fcmp fa fb) (T.con0 T.mkNoSrcPos p GT aGT))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb- (T.uwrapForward p (hmerge fas fbs' p)))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa- (T.uwrapForward p (hmerge fas' fbs p))) (T.fatal p))- hmerge (T.R T.List _) fbs p = T.projection T.mkNoSrcPos p fbs- hmerge fas (T.R T.List _) p = T.projection T.mkNoSrcPos p fas- hmerge _ _ p = T.fatal p- --ginsert ::- Ord a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun (T.List a) (T.List a)))--sinsert :: Ord a => T.R (T.Fun a (T.Fun (T.List a) (T.List a)))--ginsert pinsert p = T.uconstUse pinsert p sinsert--sinsert =- T.uconstDef T.mkRoot ainsert- (\ p ->- T.uap1 T.mkNoSrcPos p (ginsertBy T.mkNoSrcPos p)- (gcompare T.mkNoSrcPos p))--ginsertBy ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun a Ordering))- (T.Fun a (T.Fun (T.List a) (T.List a))))--hinsertBy ::- (T.R (T.Fun a (T.Fun a Ordering))) ->- (T.R a) -> (T.R (T.List a)) -> T.RefExp -> T.R (T.List a)--ginsertBy pinsertBy p = T.ufun3 ainsertBy pinsertBy p hinsertBy--hinsertBy fcmp fx (T.R T.List _) p = T.fromExpList T.mkNoSrcPos p [fx]-hinsertBy fcmp fx (fys@(T.R (T.Cons fy fys') _)) p =- T.uccase T.mkNoSrcPos p- (let- v184v28v186v44v1 (T.R GT _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons fy- (T.uwrapForward p (hinsertBy fcmp fx fys' p))- v184v28v186v44v1 _ p = T.con2 T.mkNoSrcPos p T.Cons T.aCons fx fys in- (v184v28v186v44v1)) (T.uap2 T.mkNoSrcPos p fcmp fx fy)-hinsertBy _ _ _ p = T.fatal p--gmaximumBy ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Fun a (T.Fun a Ordering)) (T.Fun (T.List a) a))--hmaximumBy ::- (T.R (T.Fun a (T.Fun a Ordering))) -> (T.R (T.List a)) -> T.RefExp -> T.R a--gmaximumBy pmaximumBy p = T.ufun2 amaximumBy pmaximumBy p hmaximumBy--hmaximumBy fcmp (T.R T.List _) p =- T.uwrapForward p- (herror (T.fromLitString T.mkNoSrcPos p "List.maximumBy: empty list") p)-hmaximumBy fcmp fxs p =- T.uwrapForward p (hfoldl1 (gmax T.mkNoSrcPos p) fxs p)- where- - gmax pmax p = T.ufun2 a192v28v194v47max pmax p hmax- - amax = a192v28v194v47max- - hmax fx fy p =- T.uccase T.mkNoSrcPos p- (let- v192v38v194v47v1 (T.R GT _) p = T.projection T.mkNoSrcPos p fx- v192v38v194v47v1 _ p = T.projection T.mkNoSrcPos p fy in- (v192v38v194v47v1)) (T.uap2 T.mkNoSrcPos p fcmp fx fy)- --gminimumBy ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Fun a (T.Fun a Ordering)) (T.Fun (T.List a) a))--hminimumBy ::- (T.R (T.Fun a (T.Fun a Ordering))) -> (T.R (T.List a)) -> T.RefExp -> T.R a--gminimumBy pminimumBy p = T.ufun2 aminimumBy pminimumBy p hminimumBy--hminimumBy fcmp (T.R T.List _) p =- T.uwrapForward p- (herror (T.fromLitString T.mkNoSrcPos p "List.minimumBy: empty list") p)-hminimumBy fcmp fxs p =- T.uwrapForward p (hfoldl1 (gmin T.mkNoSrcPos p) fxs p)- where- - gmin pmin p = T.ufun2 a200v28v202v47min pmin p hmin- - amin = a200v28v202v47min- - hmin fx fy p =- T.uccase T.mkNoSrcPos p- (let- v200v38v202v47v1 (T.R GT _) p = T.projection T.mkNoSrcPos p fy- v200v38v202v47v1 _ p = T.projection T.mkNoSrcPos p fx in- (v200v38v202v47v1)) (T.uap2 T.mkNoSrcPos p fcmp fx fy)- --ggenericLength ::- Integral a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List b) a)--hgenericLength :: Integral a => (T.R (T.List b)) -> T.RefExp -> T.R a--ggenericLength pgenericLength p =- T.ufun1 agenericLength pgenericLength p hgenericLength--hgenericLength (T.R T.List _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)-hgenericLength (T.R (T.Cons fx fxs) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)) (T.uwrapForward p (hgenericLength fxs p))-hgenericLength _ p = T.fatal p--ggenericTake ::- Integral a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun (T.List b) (T.List b)))--hgenericTake ::- Integral a => (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R (T.List b)--ggenericTake pgenericTake p = T.ufun2 agenericTake pgenericTake p hgenericTake--hgenericTake _ (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList-hgenericTake fv210v13v210v13n v210v15v210v15n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv210v13v210v13n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h v210v15v210v15n p)- (y1genericTake fv210v13v210v13n v210v15v210v15n p)- where- - h _ p = T.con0 T.mkNoSrcPos p T.List T.aList- h _ p = y1genericTake fv210v13v210v13n v210v15v210v15n p- -hgenericTake fv210v13v210v13n v210v15v210v15n p =- y1genericTake fv210v13v210v13n v210v15v210v15n p--y1genericTake fn (T.R (T.Cons fx fxs) _) p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fn- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx- (T.uwrapForward p- (hgenericTake- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fn- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) fxs p)))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p "List.genericTake: negative argument")- p)) (T.fatal p))-y1genericTake _ _ p = T.fatal p--ggenericDrop ::- Integral a =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun (T.List b) (T.List b)))--hgenericDrop ::- Integral a => (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R (T.List b)--ggenericDrop pgenericDrop p = T.ufun2 agenericDrop pgenericDrop p hgenericDrop--hgenericDrop fv216v13v216v13n fxs p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv216v13v216v13n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h fxs p)- (y1genericDrop fv216v13v216v13n fxs p)- where- - h fxs p = T.projection T.mkNoSrcPos p fxs- h _ p = y1genericDrop fv216v13v216v13n fxs p- -hgenericDrop fv216v13v216v13n fxs p = y1genericDrop fv216v13v216v13n fxs p--y1genericDrop _ (T.R T.List _) p = T.con0 T.mkNoSrcPos p T.List T.aList-y1genericDrop fn (T.R (T.Cons _ fxs) _) p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fn- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)))- (T.uwrapForward p- (hgenericDrop- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fn- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) fxs p))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p "List.genericDrop: negative argument")- p)) (T.fatal p))-y1genericDrop _ _ p = T.fatal p--ggenericSplitAt ::- Integral a =>- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun a (T.Fun (T.List b) (T.Tuple2 (T.List b) (T.List b))))--hgenericSplitAt ::- Integral a =>- (T.R a) ->- (T.R (T.List b)) -> T.RefExp -> T.R (T.Tuple2 (T.List b) (T.List b))--ggenericSplitAt pgenericSplitAt p =- T.ufun2 agenericSplitAt pgenericSplitAt p hgenericSplitAt--hgenericSplitAt fv223v16v223v16n fxs p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv223v16v223v16n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h fxs p)- (y1genericSplitAt fv223v16v223v16n fxs p)- where- - h fxs p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.con0 T.mkNoSrcPos p T.List T.aList) fxs- h _ p = y1genericSplitAt fv223v16v223v16n fxs p- -hgenericSplitAt fv223v16v223v16n fxs p = y1genericSplitAt fv223v16v223v16n fxs p--y1genericSplitAt _ (T.R T.List _) p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)-y1genericSplitAt fn (T.R (T.Cons fx fxs) _) p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fn- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)))- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx (gxs' T.mkNoSrcPos p))- (gxs'' T.mkNoSrcPos p))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p- "List.genericSplitAt: negative argument") p)) (T.fatal p))- where- - gxs' pxs' p = T.uconstUse pxs' p sxs'- - gxs'' pxs' p = T.uconstUse pxs' p sxs''- - j228v14v228v23xs' =- case- T.uwrapForward p- (hgenericSplitAt- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fn- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) fxs p) of- T.R (T.Tuple2 fxs' fxs'') kxs' -> (kxs',fxs',fxs'')- _ -> T.fatal p- - sxs' =- T.uconstDef p a228v15v228v17xs'- (\ _ -> case j228v14v228v23xs' of (kxs',fxs',fxs'') -> fxs')- - sxs'' =- T.uconstDef p a228v19v228v22xs''- (\ _ -> case j228v14v228v23xs' of (kxs',fxs',fxs'') -> fxs'')- -y1genericSplitAt _ _ p = T.fatal p--ggenericIndex ::- Integral a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List b) (T.Fun a b))--hgenericIndex :: Integral a => (T.R (T.List b)) -> (T.R a) -> T.RefExp -> T.R b--ggenericIndex pgenericIndex p =- T.ufun2 agenericIndex pgenericIndex p hgenericIndex--hgenericIndex (z1genericIndex@(T.R (T.Cons fx _) _)) fv231v21v231v21n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv231v21v231v21n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p)- (y1genericIndex z1genericIndex fv231v21v231v21n p)- where- - h p = T.projection T.mkNoSrcPos p fx- h p = y1genericIndex z1genericIndex fv231v21v231v21n p- -hgenericIndex z1genericIndex fv231v21v231v21n p =- y1genericIndex z1genericIndex fv231v21v231v21n p--y1genericIndex (T.R (T.Cons _ fxs) _) fn p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fn- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)))- (T.uwrapForward p- (hgenericIndex fxs- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fn- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) p))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p- "List.genericIndex: negative argument") p)) (T.fatal p))-y1genericIndex _ _ p =- T.uwrapForward p- (herror- (T.fromLitString T.mkNoSrcPos p "List.genericIndex: index too large") p)--ggenericReplicate ::- Integral a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun b (T.List b)))--hgenericReplicate ::- Integral a => (T.R a) -> (T.R b) -> T.RefExp -> T.R (T.List b)--ggenericReplicate pgenericReplicate p =- T.ufun2 agenericReplicate pgenericReplicate p hgenericReplicate--hgenericReplicate fn fx p =- T.uwrapForward p (hgenericTake fn (T.uwrapForward p (hrepeat fx p)) p)--gzip4 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c) (T.Fun (T.List d) (T.List (T.Tuple4 a b c d))))))--szip4 ::- T.R- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c) (T.Fun (T.List d) (T.List (T.Tuple4 a b c d))))))--gzip4 pzip4 p = T.uconstUse pzip4 p szip4--szip4 =- T.uconstDef T.mkRoot azip4- (\ p ->- T.uap1 T.mkNoSrcPos p (gzipWith4 T.mkNoSrcPos p)- (T.pa0 T.Tuple4 T.cn4 T.mkNoSrcPos p T.aTuple4))--gzip5 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d)- (T.Fun (T.List e) (T.List (T.Tuple5 a b c d e)))))))--szip5 ::- T.R- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d) (T.Fun (T.List e) (T.List (T.Tuple5 a b c d e)))))))--gzip5 pzip5 p = T.uconstUse pzip5 p szip5--szip5 =- T.uconstDef T.mkRoot azip5- (\ p ->- T.uap1 T.mkNoSrcPos p (gzipWith5 T.mkNoSrcPos p)- (T.pa0 T.Tuple5 T.cn5 T.mkNoSrcPos p T.aTuple5))--gzip6 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d)- (T.Fun (T.List e)- (T.Fun (T.List f) (T.List (T.Tuple6 a b c d e f))))))))--szip6 ::- T.R- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d)- (T.Fun (T.List e)- (T.Fun (T.List f) (T.List (T.Tuple6 a b c d e f))))))))--gzip6 pzip6 p = T.uconstUse pzip6 p szip6--szip6 =- T.uconstDef T.mkRoot azip6- (\ p ->- T.uap1 T.mkNoSrcPos p (gzipWith6 T.mkNoSrcPos p)- (T.pa0 T.Tuple6 T.cn6 T.mkNoSrcPos p T.aTuple6))--gzip7 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d)- (T.Fun (T.List e)- (T.Fun (T.List f)- (T.Fun (T.List g) (T.List (T.Tuple7 a b c d e f g)))))))))--szip7 ::- T.R- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d)- (T.Fun (T.List e)- (T.Fun (T.List f)- (T.Fun (T.List g) (T.List (T.Tuple7 a b c d e f g)))))))))--gzip7 pzip7 p = T.uconstUse pzip7 p szip7--szip7 =- T.uconstDef T.mkRoot azip7- (\ p ->- T.uap1 T.mkNoSrcPos p (gzipWith7 T.mkNoSrcPos p)- (T.pa0 T.Tuple7 T.cn7 T.mkNoSrcPos p T.aTuple7))--gzipWith4 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (T.Fun c (T.Fun d e))))- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c) (T.Fun (T.List d) (T.List e))))))--hzipWith4 ::- (T.R (T.Fun a (T.Fun b (T.Fun c (T.Fun d e))))) ->- (T.R (T.List a)) ->- (T.R (T.List b)) ->- (T.R (T.List c)) -> (T.R (T.List d)) -> T.RefExp -> T.R (T.List e)--gzipWith4 pzipWith4 p = T.ufun5 azipWith4 pzipWith4 p hzipWith4--hzipWith4 fz (T.R (T.Cons fa fas) _) (T.R (T.Cons fb fbs) _)- (T.R (T.Cons fc fcs) _) (T.R (T.Cons fd fds) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.uap4 T.mkNoSrcPos p fz fa fb fc fd)- (T.uwrapForward p (hzipWith4 fz fas fbs fcs fds p))-hzipWith4 _ _ _ _ _ p = T.con0 T.mkNoSrcPos p T.List T.aList--gzipWith5 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e f)))))- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d) (T.Fun (T.List e) (T.List f)))))))--hzipWith5 ::- (T.R (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e f)))))) ->- (T.R (T.List a)) ->- (T.R (T.List b)) ->- (T.R (T.List c)) ->- (T.R (T.List d)) -> (T.R (T.List e)) -> T.RefExp -> T.R (T.List f)--gzipWith5 pzipWith5 p = T.ufun6 azipWith5 pzipWith5 p hzipWith5--hzipWith5 fz (T.R (T.Cons fa fas) _) (T.R (T.Cons fb fbs) _)- (T.R (T.Cons fc fcs) _) (T.R (T.Cons fd fds) _) (T.R (T.Cons fe fes) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons (T.uap5 T.mkNoSrcPos p fz fa fb fc fd fe)- (T.uap6 T.mkNoSrcPos p (gzipWith5 T.mkNoSrcPos p) fz fas fbs fcs fds fes)-hzipWith5 _ _ _ _ _ _ p = T.con0 T.mkNoSrcPos p T.List T.aList--gzipWith6 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e (T.Fun f g))))))- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d)- (T.Fun (T.List e) (T.Fun (T.List f) (T.List g))))))))--hzipWith6 ::- (T.R (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e (T.Fun f g))))))) ->- (T.R (T.List a)) ->- (T.R (T.List b)) ->- (T.R (T.List c)) ->- (T.R (T.List d)) ->- (T.R (T.List e)) -> (T.R (T.List f)) -> T.RefExp -> T.R (T.List g)--gzipWith6 pzipWith6 p = T.ufun7 azipWith6 pzipWith6 p hzipWith6--hzipWith6 fz (T.R (T.Cons fa fas) _) (T.R (T.Cons fb fbs) _)- (T.R (T.Cons fc fcs) _) (T.R (T.Cons fd fds) _) (T.R (T.Cons fe fes) _)- (T.R (T.Cons ff ffs) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons- (T.uap6 T.mkNoSrcPos p fz fa fb fc fd fe ff)- (T.uap7 T.mkNoSrcPos p (gzipWith6 T.mkNoSrcPos p) fz fas fbs fcs fds fes- ffs)-hzipWith6 _ _ _ _ _ _ _ p = T.con0 T.mkNoSrcPos p T.List T.aList--gzipWith7 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun- (T.Fun a- (T.Fun b (T.Fun c (T.Fun d (T.Fun e (T.Fun f (T.Fun g h)))))))- (T.Fun (T.List a)- (T.Fun (T.List b)- (T.Fun (T.List c)- (T.Fun (T.List d)- (T.Fun (T.List e)- (T.Fun (T.List f) (T.Fun (T.List g) (T.List h)))))))))--hzipWith7 ::- (T.R (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e (T.Fun f (T.Fun g h))))))))- ->- (T.R (T.List a)) ->- (T.R (T.List b)) ->- (T.R (T.List c)) ->- (T.R (T.List d)) ->- (T.R (T.List e)) ->- (T.R (T.List f)) -> (T.R (T.List g)) -> T.RefExp -> T.R (T.List h)--gzipWith7 pzipWith7 p = T.ufun8 azipWith7 pzipWith7 p hzipWith7--hzipWith7 fz (T.R (T.Cons fa fas) _) (T.R (T.Cons fb fbs) _)- (T.R (T.Cons fc fcs) _) (T.R (T.Cons fd fds) _) (T.R (T.Cons fe fes) _)- (T.R (T.Cons ff ffs) _) (T.R (T.Cons fg fgs) _) p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons- (T.uap7 T.mkNoSrcPos p fz fa fb fc fd fe ff fg)- (T.uap8 T.mkNoSrcPos p (gzipWith7 T.mkNoSrcPos p) fz fas fbs fcs fds fes ffs- fgs)-hzipWith7 _ _ _ _ _ _ _ _ p = T.con0 T.mkNoSrcPos p T.List T.aList--gunzip4 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.List (T.Tuple4 a b c d))- (T.Tuple4 (T.List a) (T.List b) (T.List c) (T.List d)))--sunzip4 ::- T.R- (T.Fun (T.List (T.Tuple4 a b c d))- (T.Tuple4 (T.List a) (T.List b) (T.List c) (T.List d)))--gunzip4 punzip4 p = T.uconstUse punzip4 p sunzip4--sunzip4 =- T.uconstDef T.mkRoot aunzip4- (\ p ->- T.uap2 T.mkNoSrcPos p (gfoldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ v278v35v279v61v1 v278v35v279v61v2 p ->- case (v278v35v279v61v1,v278v35v279v61v2) of- (T.R (T.Tuple4 fa fb fc fd) _- ,T.R ~(T.Tuple4 fas fbs fcs fds) _) ->- let- gas pas p = T.uconstUse pas p sas- sas =- T.uconstDef p a0v0v0v0as- (\ p -> T.projection T.mkNoSrcPos p fas)- gbs pbs p = T.uconstUse pbs p sbs- sbs =- T.uconstDef p a0v0v0v0bs- (\ p -> T.projection T.mkNoSrcPos p fbs)- gcs pcs p = T.uconstUse pcs p scs- scs =- T.uconstDef p a0v0v0v0cs- (\ p -> T.projection T.mkNoSrcPos p fcs)- gds pds p = T.uconstUse pds p sds- sds =- T.uconstDef p a0v0v0v0ds- (\ p -> T.projection T.mkNoSrcPos p fds) in- (T.con4 T.mkNoSrcPos p T.Tuple4 T.aTuple4- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa- (gas T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb- (gbs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fc- (gcs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fd- (gds T.mkNoSrcPos p)))- _ -> T.fatal p))- (T.con4 T.mkNoSrcPos p T.Tuple4 T.aTuple4- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)))--gunzip5 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.List (T.Tuple5 a b c d e))- (T.Tuple5 (T.List a) (T.List b) (T.List c) (T.List d) (T.List e)))--sunzip5 ::- T.R- (T.Fun (T.List (T.Tuple5 a b c d e))- (T.Tuple5 (T.List a) (T.List b) (T.List c) (T.List d) (T.List e)))--gunzip5 punzip5 p = T.uconstUse punzip5 p sunzip5--sunzip5 =- T.uconstDef T.mkRoot aunzip5- (\ p ->- T.uap2 T.mkNoSrcPos p (gfoldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ v283v35v284v66v1 v283v35v284v66v2 p ->- case (v283v35v284v66v1,v283v35v284v66v2) of- (T.R (T.Tuple5 fa fb fc fd fe) _- ,T.R ~(T.Tuple5 fas fbs fcs fds fes) _) ->- let- gas pas p = T.uconstUse pas p sas- sas =- T.uconstDef p a0v0v0v0as- (\ p -> T.projection T.mkNoSrcPos p fas)- gbs pbs p = T.uconstUse pbs p sbs- sbs =- T.uconstDef p a0v0v0v0bs- (\ p -> T.projection T.mkNoSrcPos p fbs)- gcs pcs p = T.uconstUse pcs p scs- scs =- T.uconstDef p a0v0v0v0cs- (\ p -> T.projection T.mkNoSrcPos p fcs)- gds pds p = T.uconstUse pds p sds- sds =- T.uconstDef p a0v0v0v0ds- (\ p -> T.projection T.mkNoSrcPos p fds)- ges pes p = T.uconstUse pes p ses- ses =- T.uconstDef p a0v0v0v0es- (\ p -> T.projection T.mkNoSrcPos p fes) in- (T.con5 T.mkNoSrcPos p T.Tuple5 T.aTuple5- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa- (gas T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb- (gbs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fc- (gcs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fd- (gds T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fe- (ges T.mkNoSrcPos p)))- _ -> T.fatal p))- (T.con5 T.mkNoSrcPos p T.Tuple5 T.aTuple5- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)))--gunzip6 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.List (T.Tuple6 a b c d e f))- (T.Tuple6 (T.List a) (T.List b) (T.List c) (T.List d) (T.List e)- (T.List f)))--sunzip6 ::- T.R- (T.Fun (T.List (T.Tuple6 a b c d e f))- (T.Tuple6 (T.List a) (T.List b) (T.List c) (T.List d) (T.List e)- (T.List f)))--gunzip6 punzip6 p = T.uconstUse punzip6 p sunzip6--sunzip6 =- T.uconstDef T.mkRoot aunzip6- (\ p ->- T.uap2 T.mkNoSrcPos p (gfoldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ v288v35v289v71v1 v288v35v289v71v2 p ->- case (v288v35v289v71v1,v288v35v289v71v2) of- (T.R (T.Tuple6 fa fb fc fd fe ff) _- ,T.R ~(T.Tuple6 fas fbs fcs fds fes ffs) _) ->- let- gas pas p = T.uconstUse pas p sas- sas =- T.uconstDef p a0v0v0v0as- (\ p -> T.projection T.mkNoSrcPos p fas)- gbs pbs p = T.uconstUse pbs p sbs- sbs =- T.uconstDef p a0v0v0v0bs- (\ p -> T.projection T.mkNoSrcPos p fbs)- gcs pcs p = T.uconstUse pcs p scs- scs =- T.uconstDef p a0v0v0v0cs- (\ p -> T.projection T.mkNoSrcPos p fcs)- gds pds p = T.uconstUse pds p sds- sds =- T.uconstDef p a0v0v0v0ds- (\ p -> T.projection T.mkNoSrcPos p fds)- ges pes p = T.uconstUse pes p ses- ses =- T.uconstDef p a0v0v0v0es- (\ p -> T.projection T.mkNoSrcPos p fes)- gfs pfs p = T.uconstUse pfs p sfs- sfs =- T.uconstDef p a0v0v0v0fs- (\ p -> T.projection T.mkNoSrcPos p ffs) in- (T.con6 T.mkNoSrcPos p T.Tuple6 T.aTuple6- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa- (gas T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb- (gbs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fc- (gcs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fd- (gds T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fe- (ges T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons ff- (gfs T.mkNoSrcPos p)))- _ -> T.fatal p))- (T.con6 T.mkNoSrcPos p T.Tuple6 T.aTuple6- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)))--gunzip7 ::- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.List (T.Tuple7 a b c d e f g))- (T.Tuple7 (T.List a) (T.List b) (T.List c) (T.List d) (T.List e)- (T.List f) (T.List g)))--sunzip7 ::- T.R- (T.Fun (T.List (T.Tuple7 a b c d e f g))- (T.Tuple7 (T.List a) (T.List b) (T.List c) (T.List d) (T.List e)- (T.List f) (T.List g)))--gunzip7 punzip7 p = T.uconstUse punzip7 p sunzip7--sunzip7 =- T.uconstDef T.mkRoot aunzip7- (\ p ->- T.uap2 T.mkNoSrcPos p (gfoldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ v293v27v294v68v1 v293v27v294v68v2 p ->- case (v293v27v294v68v1,v293v27v294v68v2) of- (T.R (T.Tuple7 fa fb fc fd fe ff fg) _- ,T.R ~(T.Tuple7 fas fbs fcs fds fes ffs fgs) _) ->- let- gas pas p = T.uconstUse pas p sas- sas =- T.uconstDef p a0v0v0v0as- (\ p -> T.projection T.mkNoSrcPos p fas)- gbs pbs p = T.uconstUse pbs p sbs- sbs =- T.uconstDef p a0v0v0v0bs- (\ p -> T.projection T.mkNoSrcPos p fbs)- gcs pcs p = T.uconstUse pcs p scs- scs =- T.uconstDef p a0v0v0v0cs- (\ p -> T.projection T.mkNoSrcPos p fcs)- gds pds p = T.uconstUse pds p sds- sds =- T.uconstDef p a0v0v0v0ds- (\ p -> T.projection T.mkNoSrcPos p fds)- ges pes p = T.uconstUse pes p ses- ses =- T.uconstDef p a0v0v0v0es- (\ p -> T.projection T.mkNoSrcPos p fes)- gfs pfs p = T.uconstUse pfs p sfs- sfs =- T.uconstDef p a0v0v0v0fs- (\ p -> T.projection T.mkNoSrcPos p ffs)- ggs pgs p = T.uconstUse pgs p sgs- sgs =- T.uconstDef p a0v0v0v0gs- (\ p -> T.projection T.mkNoSrcPos p fgs) in- (T.con7 T.mkNoSrcPos p T.Tuple7 T.aTuple7- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa- (gas T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb- (gbs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fc- (gcs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fd- (gds T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fe- (ges T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons ff- (gfs T.mkNoSrcPos p))- (T.con2 T.mkNoSrcPos p T.Cons T.aCons fg- (ggs T.mkNoSrcPos p)))- _ -> T.fatal p))- (T.con7 T.mkNoSrcPos p T.Tuple7 T.aTuple7- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)- (T.con0 T.mkNoSrcPos p T.List T.aList)))--tList = T.mkModule "List" "List.hs" Prelude.False--aelemIndex = T.mkVariable tList 340001 340042 3 1 "elemIndex" Prelude.False--aelemIndices = T.mkVariable tList 370001 370044 3 1 "elemIndices" Prelude.False--afind = T.mkVariable tList 400001 400049 3 1 "find" Prelude.False--afindIndex = T.mkVariable tList 430001 430054 3 1 "findIndex" Prelude.False--afindIndices = T.mkVariable tList 460001 460011 3 2 "findIndices" Prelude.False--anub = T.mkVariable tList 490001 490036 3 0 "nub" Prelude.False--anubBy = T.mkVariable tList 520001 530071 3 2 "nubBy" Prelude.False--adelete = T.mkVariable tList 560001 560039 3 0 "delete" Prelude.False--adeleteBy = T.mkVariable tList 590001 600071 3 3 "deleteBy" Prelude.False--(+\\) = T.mkVariable tList 630002 630045 20 0 "\\\\" Prelude.False--adeleteFirstsBy =- T.mkVariable tList 660001 660051 3 1 "deleteFirstsBy" Prelude.False--aunion = T.mkVariable tList 690001 690038 3 0 "union" Prelude.False--aunionBy = T.mkVariable tList 720001 720067 3 3 "unionBy" Prelude.False--aintersect = T.mkVariable tList 750001 750042 3 0 "intersect" Prelude.False--aintersectBy = T.mkVariable tList 780001 780011 3 3 "intersectBy" Prelude.False--aintersperse = T.mkVariable tList 810001 830055 3 2 "intersperse" Prelude.False--atranspose = T.mkVariable tList 910001 940040 3 1 "transpose" Prelude.False--apartition = T.mkVariable tList 970001 970061 3 2 "partition" Prelude.False--agroup = T.mkVariable tList 1030001 1030038 3 0 "group" Prelude.False--agroupBy = T.mkVariable tList 1060001 1080057 3 2 "groupBy" Prelude.False--ainits = T.mkVariable tList 1130001 1140053 3 1 "inits" Prelude.False--atails = T.mkVariable tList 1190001 1200041 3 1 "tails" Prelude.False--aisPrefixOf = T.mkVariable tList 1230001 1250054 3 2 "isPrefixOf" Prelude.False--aisSuffixOf = T.mkVariable tList 1280001 1280059 3 2 "isSuffixOf" Prelude.False--amapAccumL = T.mkVariable tList 1310001 1340061 3 3 "mapAccumL" Prelude.False--amapAccumR = T.mkVariable tList 1370001 1400060 3 3 "mapAccumR" Prelude.False--aunfoldr = T.mkVariable tList 1430001 1450061 3 2 "unfoldr" Prelude.False--asort = T.mkVariable tList 1480001 1480041 3 0 "sort" Prelude.False--asortBy = T.mkVariable tList 1510001 1760028 3 1 "sortBy" Prelude.False--ainsert = T.mkVariable tList 1790001 1790042 3 0 "insert" Prelude.False--ainsertBy = T.mkVariable tList 1820001 1860044 3 3 "insertBy" Prelude.False--amaximumBy = T.mkVariable tList 1890001 1940047 3 2 "maximumBy" Prelude.False--aminimumBy = T.mkVariable tList 1970001 2020047 3 2 "minimumBy" Prelude.False--agenericLength =- T.mkVariable tList 2050001 2060047 3 1 "genericLength" Prelude.False--agenericTake =- T.mkVariable tList 2090001 2130070 3 2 "genericTake" Prelude.False--agenericDrop =- T.mkVariable tList 2160001 2200070 3 2 "genericDrop" Prelude.False--agenericSplitAt =- T.mkVariable tList 2230001 2280050 3 2 "genericSplitAt" Prelude.False--agenericIndex =- T.mkVariable tList 2310001 2350069 3 2 "genericIndex" Prelude.False--agenericReplicate =- T.mkVariable tList 2380001 2380050 3 2 "genericReplicate" Prelude.False--azip4 = T.mkVariable tList 2410001 2410041 3 0 "zip4" Prelude.False--azip5 = T.mkVariable tList 2440001 2440042 3 0 "zip5" Prelude.False--azip6 = T.mkVariable tList 2480001 2480043 3 0 "zip6" Prelude.False--azip7 = T.mkVariable tList 2520001 2520044 3 0 "zip7" Prelude.False--azipWith4 = T.mkVariable tList 2550001 2570029 3 5 "zipWith4" Prelude.False--azipWith5 = T.mkVariable tList 2610001 2630029 3 6 "zipWith5" Prelude.False--azipWith6 = T.mkVariable tList 2670001 2690029 3 7 "zipWith6" Prelude.False--azipWith7 = T.mkVariable tList 2730001 2750029 3 8 "zipWith7" Prelude.False--aunzip4 = T.mkVariable tList 2780001 2800046 3 0 "unzip4" Prelude.False--aunzip5 = T.mkVariable tList 2830001 2850049 3 0 "unzip5" Prelude.False--aunzip6 = T.mkVariable tList 2880001 2900052 3 0 "unzip6" Prelude.False--aunzip7 = T.mkVariable tList 2930001 2950047 3 0 "unzip7" Prelude.False--a108v35v108v36ys = T.mkVariable tList 1080035 1080036 3 0 "ys" Prelude.True--a108v38v108v39zs = T.mkVariable tList 1080038 1080039 3 0 "zs" Prelude.True--a133v35v133v36s' = T.mkVariable tList 1330035 1330036 3 0 "s'" Prelude.True--a133v39v133v39y = T.mkVariable tList 1330039 1330039 3 0 "y" Prelude.True--a134v35v134v37s'' = T.mkVariable tList 1340035 1340037 3 0 "s''" Prelude.True--a134v39v134v40ys = T.mkVariable tList 1340039 1340040 3 0 "ys" Prelude.True--a139v35v139v37s'' = T.mkVariable tList 1390035 1390037 3 0 "s''" Prelude.True--a139v39v139v39y = T.mkVariable tList 1390039 1390039 3 0 "y" Prelude.True--a140v35v140v36s' = T.mkVariable tList 1400035 1400036 3 0 "s'" Prelude.True--a140v39v140v40ys = T.mkVariable tList 1400039 1400040 3 0 "ys" Prelude.True--a153v5v156v23sequences =- T.mkVariable tList 1530005 1560023 3 1 "sequences" Prelude.True--a158v5v160v46descending =- T.mkVariable tList 1580005 1600046 3 3 "descending" Prelude.True--a162v5v164v46ascending =- T.mkVariable tList 1620005 1640046 3 3 "ascending" Prelude.True--a166v5v167v42mergeAll =- T.mkVariable tList 1660005 1670042 3 1 "mergeAll" Prelude.True--a169v5v170v28mergePairs =- T.mkVariable tList 1690005 1700028 3 1 "mergePairs" Prelude.True--a172v5v176v28merge = T.mkVariable tList 1720005 1760028 3 2 "merge" Prelude.True--a192v28v194v47max = T.mkVariable tList 1920028 1940047 3 2 "max" Prelude.True--a200v28v202v47min = T.mkVariable tList 2000028 2020047 3 2 "min" Prelude.True--a228v15v228v17xs' = T.mkVariable tList 2280015 2280017 3 0 "xs'" Prelude.True--a228v19v228v22xs'' = T.mkVariable tList 2280019 2280022 3 0 "xs''" Prelude.True--a0v0v0v0as = T.mkVariable tList 0 0 3 0 "as" Prelude.True--a0v0v0v0bs = T.mkVariable tList 0 0 3 0 "bs" Prelude.True--a0v0v0v0cs = T.mkVariable tList 0 0 3 0 "cs" Prelude.True--a0v0v0v0ds = T.mkVariable tList 0 0 3 0 "ds" Prelude.True--a0v0v0v0es = T.mkVariable tList 0 0 3 0 "es" Prelude.True--a0v0v0v0fs = T.mkVariable tList 0 0 3 0 "fs" Prelude.True--a0v0v0v0gs = T.mkVariable tList 0 0 3 0 "gs" Prelude.True+ (gelemIndex, aelemIndex, helemIndex, gelemIndices,+ aelemIndices, helemIndices, gfind, afind, hfind,+ gfindIndex, afindIndex, hfindIndex, gfindIndices,+ afindIndices, hfindIndices, gnub, gnubBy, anubBy,+ hnubBy, gdelete, gdeleteBy, adeleteBy, hdeleteBy,+ (!\\), gdeleteFirstsBy, adeleteFirstsBy,+ hdeleteFirstsBy, gunion, gunionBy, aunionBy,+ hunionBy, gintersect, gintersectBy, aintersectBy,+ hintersectBy, gintersperse, aintersperse,+ hintersperse, gtranspose, atranspose, htranspose,+ gpartition, apartition, hpartition, ggroup, ggroupBy,+ agroupBy, hgroupBy, ginits, ainits, hinits, gtails,+ atails, htails, gisPrefixOf, aisPrefixOf,+ hisPrefixOf, gisSuffixOf, aisSuffixOf, hisSuffixOf,+ gmapAccumL, amapAccumL, hmapAccumL, gmapAccumR,+ amapAccumR, hmapAccumR, gsort, gsortBy, asortBy,+ hsortBy, ginsert, 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, gzip4, gzip5,+ gzip6, gzip7, gzipWith4, azipWith4, hzipWith4,+ gzipWith5, azipWith5, hzipWith5, gzipWith6,+ azipWith6, hzipWith6, gzipWith7, azipWith7,+ hzipWith7, gunzip4, gunzip5, gunzip6, gunzip7,+ gunfoldr, aunfoldr, hunfoldr, gmap, amap, hmap,+ (!++), (+++), (*++), gconcat, aconcat, hconcat,+ gfilter, afilter, hfilter, ghead, ahead, hhead,+ glast, alast, hlast, gtail, atail, htail, ginit,+ ainit, hinit, gnull, anull, hnull, glength, alength,+ hlength, (!!!), (+!!), (*!!), gfoldl, afoldl, hfoldl,+ gfoldl1, afoldl1, hfoldl1, gscanl, ascanl, hscanl,+ gscanl1, ascanl1, hscanl1, gfoldr, afoldr, hfoldr,+ gfoldr1, afoldr1, hfoldr1, gscanr, ascanr, hscanr,+ gscanr1, ascanr1, hscanr1, giterate, aiterate,+ hiterate, grepeat, arepeat, hrepeat, greplicate,+ areplicate, hreplicate, gcycle, acycle, hcycle,+ gtake, atake, htake, gdrop, adrop, hdrop, gsplitAt,+ asplitAt, hsplitAt, gtakeWhile, atakeWhile,+ htakeWhile, gdropWhile, adropWhile, hdropWhile,+ gspan, aspan, hspan, gbreak, abreak, hbreak, glines,+ alines, hlines, gwords, awords, hwords, gunlines,+ gunwords, aunwords, hunwords, greverse, gand, gor,+ gany, aany, hany, gall, aall, hall, gelem, aelem,+ helem, gnotElem, anotElem, hnotElem, glookup,+ alookup, hlookup, gsum, gproduct, gmaximum, amaximum,+ hmaximum, gminimum, aminimum, hminimum, gconcatMap,+ aconcatMap, hconcatMap, gzip, gzip3, gzipWith,+ azipWith, hzipWith, gzipWith3, azipWith3, hzipWith3,+ gunzip, gunzip3)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.Maybe+ (glistToMaybe, alistToMaybe, hlistToMaybe)+ +gelemIndex ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun a (T.Fun (T.List a) (Maybe Int)))+ +helemIndex ::+ (Eq a) =>+ T.R a ->+ T.RefExp -> T.R (T.Fun (T.List a) (Maybe Int))+gelemIndex pelemIndex p+ = T.ufun1 aelemIndex pelemIndex p helemIndex+helemIndex fx p+ = T.uwrapForward p+ (hfindIndex+ (T.uap1 T.mkNoSrcPos p ((!==) T.mkNoSrcPos p) fx)+ p)+ +gelemIndices ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun a (T.Fun (T.List a) (T.List Int)))+ +helemIndices ::+ (Eq a) =>+ T.R a ->+ T.RefExp -> T.R (T.Fun (T.List a) (T.List Int))+gelemIndices pelemIndices p+ = T.ufun1 aelemIndices pelemIndices p helemIndices+helemIndices fx p+ = T.uap1 T.mkNoSrcPos p (gfindIndices T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p ((!==) T.mkNoSrcPos p) fx)+ +gfind ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a Bool) (T.Fun (T.List a) (Maybe a)))+ +hfind ::+ T.R (T.Fun a Bool) ->+ T.RefExp -> T.R (T.Fun (T.List a) (Maybe a))+gfind pfind p = T.ufun1 afind pfind p hfind+hfind fp p+ = T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (glistToMaybe T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfilter T.mkNoSrcPos p) fp)+ +gfindIndex ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a Bool) (T.Fun (T.List a) (Maybe Int)))+ +hfindIndex ::+ T.R (T.Fun a Bool) ->+ T.RefExp -> T.R (T.Fun (T.List a) (Maybe Int))+gfindIndex pfindIndex p+ = T.ufun1 afindIndex pfindIndex p hfindIndex+hfindIndex fp p+ = T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (glistToMaybe T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfindIndices T.mkNoSrcPos p)+ fp)+ +gfindIndices ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a Bool)+ (T.Fun (T.List a) (T.List Int)))+ +hfindIndices ::+ T.R (T.Fun a Bool) ->+ T.R (T.List a) -> T.RefExp -> T.R (T.List Int)+gfindIndices pfindIndices p+ = T.ufun2 afindIndices pfindIndices p hfindIndices+hfindIndices fp fxs p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (gzip T.mkNoSrcPos p) fxs+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.genumFrom T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0)))))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ (T.R (T.Tuple2 fx fi) _) p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>) T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hguard+ (T.uap1 T.mkNoSrcPos p fp fx)+ p))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ fi)))+ +gnub ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.List a) (T.List a))+ +snub :: (Eq a) => T.R (T.Fun (T.List a) (T.List a))+gnub pnub p = T.uconstUse pnub p snub+snub+ = T.uconstDef p anub+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gnubBy T.mkNoSrcPos p)+ ((!==) T.mkNoSrcPos p))+ +gnubBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Bool))+ (T.Fun (T.List a) (T.List a)))+ +hnubBy ::+ T.R (T.Fun a (T.Fun a Bool)) ->+ T.R (T.List a) -> T.RefExp -> T.R (T.List a)+gnubBy pnubBy p = T.ufun2 anubBy pnubBy p hnubBy+hnubBy feq (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+hnubBy feq (T.R (T.Cons fx fxs) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons fx+ (T.uwrapForward p+ (hnubBy feq+ (T.uwrapForward p+ (hfilter+ (T.ufun1 T.mkLambda T.mkNoSrcPos p+ (\ fy p ->+ T.uwrapForward p+ (hnot (T.uap2 T.mkNoSrcPos p feq fx fy) p)))+ fxs+ p))+ p))+hnubBy _ _ p = T.fatal p+ +gdelete ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun a (T.Fun (T.List a) (T.List a)))+ +sdelete ::+ (Eq a) => T.R (T.Fun a (T.Fun (T.List a) (T.List a)))+gdelete pdelete p = T.uconstUse pdelete p sdelete+sdelete+ = T.uconstDef p adelete+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gdeleteBy T.mkNoSrcPos p)+ ((!==) T.mkNoSrcPos p))+ +gdeleteBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Bool))+ (T.Fun a (T.Fun (T.List a) (T.List a))))+ +hdeleteBy ::+ T.R (T.Fun a (T.Fun a Bool)) ->+ T.R a -> T.R (T.List a) -> T.RefExp -> T.R (T.List a)+gdeleteBy pdeleteBy p+ = T.ufun3 adeleteBy pdeleteBy p hdeleteBy+hdeleteBy feq fx (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+hdeleteBy feq fx (T.R (T.Cons fy fys) _) p+ = T.ucif p (T.uap2 T.mkNoSrcPos p feq fx fy)+ (T.projection T.mkNoSrcPos p fys)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fy+ (T.uwrapForward p (hdeleteBy feq fx fys p)))+hdeleteBy _ _ _ p = T.fatal p+ +(!\\) ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))+ +(|\\) ::+ (Eq a) =>+ T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))+(%\\) !\\ p = T.uconstUse (%\\) p (|\\)+(|\\)+ = T.uconstDef p (+\\)+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gfoldl T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p)+ (gdelete T.mkNoSrcPos p)))+ +gdeleteFirstsBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Bool))+ (T.Fun (T.List a) (T.Fun (T.List a) (T.List a))))+ +hdeleteFirstsBy ::+ T.R (T.Fun a (T.Fun a Bool)) ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))+gdeleteFirstsBy pdeleteFirstsBy p+ = T.ufun1 adeleteFirstsBy pdeleteFirstsBy p+ hdeleteFirstsBy+hdeleteFirstsBy feq p+ = T.uap1 T.mkNoSrcPos p (gfoldl T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gdeleteBy T.mkNoSrcPos p)+ feq))+ +gunion ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))+ +sunion ::+ (Eq a) =>+ T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))+gunion punion p = T.uconstUse punion p sunion+sunion+ = T.uconstDef p aunion+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gunionBy T.mkNoSrcPos p)+ ((!==) T.mkNoSrcPos p))+ +gunionBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Bool))+ (T.Fun (T.List a) (T.Fun (T.List a) (T.List a))))+ +hunionBy ::+ T.R (T.Fun a (T.Fun a Bool)) ->+ T.R (T.List a) ->+ T.R (T.List a) -> T.RefExp -> T.R (T.List a)+gunionBy punionBy p+ = T.ufun3 aunionBy punionBy p hunionBy+hunionBy feq fxs fys p+ = T.uwrapForward p+ ((*++) fxs+ (T.uap2 T.mkNoSrcPos p+ (T.uwrapForward p (hdeleteFirstsBy feq p))+ (T.uwrapForward p (hnubBy feq fys p))+ fxs)+ p)+ +gintersect ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))+ +sintersect ::+ (Eq a) =>+ T.R (T.Fun (T.List a) (T.Fun (T.List a) (T.List a)))+gintersect pintersect p+ = T.uconstUse pintersect p sintersect+sintersect+ = T.uconstDef p aintersect+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gintersectBy T.mkNoSrcPos p)+ ((!==) T.mkNoSrcPos p))+ +gintersectBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Bool))+ (T.Fun (T.List a) (T.Fun (T.List a) (T.List a))))+ +hintersectBy ::+ T.R (T.Fun a (T.Fun a Bool)) ->+ T.R (T.List a) ->+ T.R (T.List a) -> T.RefExp -> T.R (T.List a)+gintersectBy pintersectBy p+ = T.ufun3 aintersectBy pintersectBy p hintersectBy+hintersectBy feq fxs fys p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fxs+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fx p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>) T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hguard+ (T.uap1 T.mkNoSrcPos p+ (T.uwrapForward p+ (hany (T.uap1 T.mkNoSrcPos p feq fx) p))+ fys)+ p))+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ fx)))+ +gintersperse ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun a (T.Fun (T.List a) (T.List a)))+ +hintersperse ::+ T.R a -> T.R (T.List a) -> T.RefExp -> T.R (T.List a)+gintersperse pintersperse p+ = T.ufun2 aintersperse pintersperse p hintersperse+hintersperse fsep (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+hintersperse fsep (T.R (T.Cons fx (T.R T.Nil _)) _) p+ = T.fromExpList T.mkNoSrcPos p [fx]+hintersperse fsep (T.R (T.Cons fx fxs) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons fx+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fsep+ (T.uwrapForward p (hintersperse fsep fxs p)))+hintersperse _ _ p = T.fatal p+ +gtranspose ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List (T.List a)) (T.List (T.List a)))+ +htranspose ::+ T.R (T.List (T.List a)) ->+ T.RefExp -> T.R (T.List (T.List a))+gtranspose ptranspose p+ = T.ufun1 atranspose ptranspose p htranspose+htranspose (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+htranspose (T.R (T.Cons (T.R T.Nil _) fxss) _) p+ = T.uwrapForward p (htranspose fxss p)+htranspose+ (T.R (T.Cons (T.R (T.Cons fx fxs) _) fxss) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fxss+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fv93v38v93v45v1 p ->+ T.uccase T.mkNoSrcPos p+ (let v93v38v93v45v1 (T.R (T.Cons fh ft) _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ fh+ v93v38v93v45v1 _ p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfail T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "pattern-match failure in do-expression")+ in v93v38v93v45v1)+ fv93v38v93v45v1))))+ (T.uwrapForward p+ (htranspose+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fxs+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fxss+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fv94v49v94v56v1 p ->+ T.uccase T.mkNoSrcPos p+ (let v94v49v94v56v1 (T.R (T.Cons fh ft) _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ ft+ v94v49v94v56v1 _ p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfail T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "pattern-match failure in do-expression")+ in v94v49v94v56v1)+ fv94v49v94v56v1))))+ p))+htranspose _ p = T.fatal p+ +gpartition ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a Bool)+ (T.Fun (T.List a) (T.Tuple2 (T.List a) (T.List a))))+ +hpartition ::+ T.R (T.Fun a Bool) ->+ T.R (T.List a) ->+ T.RefExp -> T.R (T.Tuple2 (T.List a) (T.List a))+gpartition ppartition p+ = T.ufun2 apartition ppartition p hpartition+hpartition fp fxs p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hfilter fp fxs p))+ (T.uwrapForward p+ (hfilter+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (gnot T.mkNoSrcPos p)+ fp)+ fxs+ p))+ +ggroup ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.List (T.List a)))+ +sgroup ::+ (Eq a) => T.R (T.Fun (T.List a) (T.List (T.List a)))+ggroup pgroup p = T.uconstUse pgroup p sgroup+sgroup+ = T.uconstDef p agroup+ (\ p ->+ T.uap1 T.mkNoSrcPos p (ggroupBy T.mkNoSrcPos p)+ ((!==) T.mkNoSrcPos p))+ +ggroupBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Bool))+ (T.Fun (T.List a) (T.List (T.List a))))+ +hgroupBy ::+ T.R (T.Fun a (T.Fun a Bool)) ->+ T.R (T.List a) -> T.RefExp -> T.R (T.List (T.List a))+ggroupBy pgroupBy p+ = T.ufun2 agroupBy pgroupBy p hgroupBy+hgroupBy feq (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+hgroupBy feq (T.R (T.Cons fx fxs) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx+ (gys T.mkNoSrcPos p))+ (T.uwrapForward p+ (hgroupBy feq (gzs T.mkNoSrcPos p) p))+ where gys pys p = T.uconstUse pys p sys+ gzs pzs p = T.uconstUse pzs p szs+ sys+ = T.uconstDef p c108v34v108v57ys+ (\ _ ->+ case j108v34v108v57ys of+ (kys, fys, fzs) -> fys)+ szs+ = T.uconstDef p c108v34v108v57zs+ (\ _ ->+ case j108v34v108v57ys of+ (kys, fys, fzs) -> fzs)+ j108v34v108v57ys+ = case+ T.uwrapForward p+ (hspan (T.uap1 T.mkNoSrcPos p feq fx) fxs p)+ of+ T.R (T.Tuple2 fys fzs) kys -> (kys, fys, fzs)+ _ -> T.fatal p+hgroupBy _ _ p = T.fatal p+ +ginits ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.List (T.List a)))+ +hinits ::+ T.R (T.List a) -> T.RefExp -> T.R (T.List (T.List a))+ginits pinits p = T.ufun1 ainits pinits p hinits+hinits (T.R T.Nil _) p+ = T.fromExpList T.mkNoSrcPos p+ [T.con0 T.mkNoSrcPos p T.Nil T.aNil]+hinits (T.R (T.Cons fx fxs) _) p+ = T.uwrapForward p+ ((*++)+ (T.fromExpList T.mkNoSrcPos p+ [T.con0 T.mkNoSrcPos p T.Nil T.aNil])+ (T.uwrapForward p+ (hmap (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fx)+ (T.uwrapForward p (hinits fxs p))+ p))+ p)+hinits _ p = T.fatal p+ +gtails ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.List (T.List a)))+ +htails ::+ T.R (T.List a) -> T.RefExp -> T.R (T.List (T.List a))+gtails ptails p = T.ufun1 atails ptails p htails+htails (T.R T.Nil _) p+ = T.fromExpList T.mkNoSrcPos p+ [T.con0 T.mkNoSrcPos p T.Nil T.aNil]+htails fxxs@(T.R (T.Cons _ fxs) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons fxxs+ (T.uwrapForward p (htails fxs p))+htails _ p = T.fatal p+ +gisPrefixOf ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.Fun (T.List a) Bool))+ +hisPrefixOf ::+ (Eq a) =>+ T.R (T.List a) ->+ T.R (T.List a) -> T.RefExp -> T.R Bool+gisPrefixOf pisPrefixOf p+ = T.ufun2 aisPrefixOf pisPrefixOf p hisPrefixOf+hisPrefixOf (T.R T.Nil _) _ p+ = T.con0 T.mkNoSrcPos p True aTrue+hisPrefixOf _ (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p False aFalse+hisPrefixOf (T.R (T.Cons fx fxs) _)+ (T.R (T.Cons fy fys) _) p+ = T.uwrapForward p+ ((*&&)+ (T.uap2 T.mkNoSrcPos p ((!==) T.mkNoSrcPos p) fx fy)+ (T.uwrapForward p (hisPrefixOf fxs fys p))+ p)+hisPrefixOf _ _ p = T.fatal p+ +gisSuffixOf ::+ (Eq a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.List a) (T.Fun (T.List a) Bool))+ +hisSuffixOf ::+ (Eq a) =>+ T.R (T.List a) ->+ T.R (T.List a) -> T.RefExp -> T.R Bool+gisSuffixOf pisSuffixOf p+ = T.ufun2 aisSuffixOf pisSuffixOf p hisSuffixOf+hisSuffixOf fx fy p+ = T.uwrapForward p+ (hisPrefixOf+ (T.uap1 T.mkNoSrcPos p (greverse T.mkNoSrcPos p) fx)+ (T.uap1 T.mkNoSrcPos p (greverse T.mkNoSrcPos p) fy)+ p)+ +gmapAccumL ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (T.Tuple2 a c)))+ (T.Fun a (T.Fun (T.List b) (T.Tuple2 a (T.List c)))))+ +hmapAccumL ::+ T.R (T.Fun a (T.Fun b (T.Tuple2 a c))) ->+ T.R a ->+ T.R (T.List b) ->+ T.RefExp -> T.R (T.Tuple2 a (T.List c))+gmapAccumL pmapAccumL p+ = T.ufun3 amapAccumL pmapAccumL p hmapAccumL+hmapAccumL ff fs (T.R T.Nil _) p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fs+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+hmapAccumL ff fs (T.R (T.Cons fx fxs) _) p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gs'' T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (gy T.mkNoSrcPos p)+ (gys T.mkNoSrcPos p))+ where gs' ps' p = T.uconstUse ps' p ss'+ gy py p = T.uconstUse py p sy+ ss'+ = T.uconstDef p c133v34v133v49s'+ (\ _ ->+ case j133v34v133v49s' of+ (ks', fs', fy) -> fs')+ sy+ = T.uconstDef p c133v34v133v49y+ (\ _ ->+ case j133v34v133v49s' of+ (ks', fs', fy) -> fy)+ j133v34v133v49s'+ = case T.uap2 T.mkNoSrcPos p ff fs fx of+ T.R (T.Tuple2 fs' fy) ks' -> (ks', fs', fy)+ _ -> T.fatal p+ gs'' ps'' p = T.uconstUse ps'' p ss''+ gys pys p = T.uconstUse pys p sys+ ss''+ = T.uconstDef p c134v34v134v61s''+ (\ _ ->+ case j134v34v134v61s'' of+ (ks'', fs'', fys) -> fs'')+ sys+ = T.uconstDef p c134v34v134v61ys+ (\ _ ->+ case j134v34v134v61s'' of+ (ks'', fs'', fys) -> fys)+ j134v34v134v61s''+ = case+ T.uwrapForward p+ (hmapAccumL ff (gs' T.mkNoSrcPos p) fxs p)+ of+ T.R (T.Tuple2 fs'' fys) ks'' -> (ks'', fs'', fys)+ _ -> T.fatal p+hmapAccumL _ _ _ p = T.fatal p+ +gmapAccumR ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (T.Tuple2 a c)))+ (T.Fun a (T.Fun (T.List b) (T.Tuple2 a (T.List c)))))+ +hmapAccumR ::+ T.R (T.Fun a (T.Fun b (T.Tuple2 a c))) ->+ T.R a ->+ T.R (T.List b) ->+ T.RefExp -> T.R (T.Tuple2 a (T.List c))+gmapAccumR pmapAccumR p+ = T.ufun3 amapAccumR pmapAccumR p hmapAccumR+hmapAccumR ff fs (T.R T.Nil _) p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fs+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+hmapAccumR ff fs (T.R (T.Cons fx fxs) _) p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gs'' T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (gy T.mkNoSrcPos p)+ (gys T.mkNoSrcPos p))+ where gs'' ps'' p = T.uconstUse ps'' p ss''+ gy py p = T.uconstUse py p sy+ ss''+ = T.uconstDef p c139v34v139v50s''+ (\ _ ->+ case j139v34v139v50s'' of+ (ks'', fs'', fy) -> fs'')+ sy+ = T.uconstDef p c139v34v139v50y+ (\ _ ->+ case j139v34v139v50s'' of+ (ks'', fs'', fy) -> fy)+ j139v34v139v50s''+ = case+ T.uap2 T.mkNoSrcPos p ff (gs' T.mkNoSrcPos p) fx of+ T.R (T.Tuple2 fs'' fy) ks'' -> (ks'', fs'', fy)+ _ -> T.fatal p+ gs' ps' p = T.uconstUse ps' p ss'+ gys pys p = T.uconstUse pys p sys+ ss'+ = T.uconstDef p c140v34v140v60s'+ (\ _ ->+ case j140v34v140v60s' of+ (ks', fs', fys) -> fs')+ sys+ = T.uconstDef p c140v34v140v60ys+ (\ _ ->+ case j140v34v140v60s' of+ (ks', fs', fys) -> fys)+ j140v34v140v60s'+ = case T.uwrapForward p (hmapAccumR ff fs fxs p) of+ T.R (T.Tuple2 fs' fys) ks' -> (ks', fs', fys)+ _ -> T.fatal p+hmapAccumR _ _ _ p = T.fatal p+ +gunfoldr ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun b (Maybe (T.Tuple2 a b)))+ (T.Fun b (T.List a)))+ +hunfoldr ::+ T.R (T.Fun b (Maybe (T.Tuple2 a b))) ->+ T.R b -> T.RefExp -> T.R (T.List a)+gunfoldr punfoldr p+ = T.ufun2 aunfoldr punfoldr p hunfoldr+hunfoldr ff fb p+ = T.uccase T.mkNoSrcPos p+ (let v143v27v147v0v1 (T.R Nothing _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+ v143v27v147v0v1+ (T.R (Just (T.R (T.Tuple2 fa fb) _)) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons fa+ (T.uwrapForward p (hunfoldr ff fb p))+ v143v27v147v0v1 _ p = T.fatal p+ in v143v27v147v0v1)+ (T.uap1 T.mkNoSrcPos p ff fb)+ +gsort ::+ (Ord a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.List a) (T.List a))+ +ssort :: (Ord a) => T.R (T.Fun (T.List a) (T.List a))+gsort psort p = T.uconstUse psort p ssort+ssort+ = T.uconstDef p asort+ (\ p ->+ T.uwrapForward p+ (hsortBy (gcompare T.mkNoSrcPos p) p))+ +gsortBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Ordering))+ (T.Fun (T.List a) (T.List a)))+ +hsortBy ::+ T.R (T.Fun a (T.Fun a Ordering)) ->+ T.RefExp -> T.R (T.Fun (T.List a) (T.List a))+gsortBy psortBy p = T.ufun1 asortBy psortBy p hsortBy+hsortBy fcmp p+ = T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (gmergeAll T.mkNoSrcPos p)+ (gsequences T.mkNoSrcPos p)+ where gsequences psequences p+ = T.ufun1 c153v5v156v23sequences psequences p+ hsequences+ asequences = c153v5v156v23sequences+ hsequences+ (T.R (T.Cons fa (T.R (T.Cons fb fxs) _)) _) p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!==) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p fcmp fa fb)+ (T.con0 T.mkNoSrcPos p GT aGT))+ (T.uwrapForward p+ (hdescending fb (T.fromExpList T.mkNoSrcPos p [fa])+ fxs+ p))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uwrapForward p+ (hascending fb+ (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fa)+ fxs+ p))+ (T.fatal p))+ hsequences fxs p = T.fromExpList T.mkNoSrcPos p [fxs]+ gdescending pdescending p+ = T.ufun3 c158v5v160v46descending pdescending p+ hdescending+ adescending = c158v5v160v46descending+ hdescending fa fas+ z3descending@(T.R (T.Cons fb fbs) _) p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!==) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p fcmp fa fb)+ (T.con0 T.mkNoSrcPos p GT aGT))+ (T.uwrapForward p+ (hdescending fb+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fas)+ fbs+ p))+ (y1descending fa fas z3descending p)+ hdescending fa fas z3descending p+ = y1descending fa fas z3descending p+ y1descending fa fas fbs p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fas)+ (T.uwrapForward p (hsequences fbs p))+ gascending pascending p+ = T.ufun3 c162v5v164v46ascending pascending p+ hascending+ aascending = c162v5v164v46ascending+ hascending fa fas z3ascending@(T.R (T.Cons fb fbs) _)+ p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!/=) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p fcmp fa fb)+ (T.con0 T.mkNoSrcPos p GT aGT))+ (T.uwrapForward p+ (hascending fb+ (T.ufun1 T.mkLambda T.mkNoSrcPos p+ (\ fys p ->+ T.uap1 T.mkNoSrcPos p+ (T.projection T.mkNoSrcPos p fas)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fys)))+ fbs+ p))+ (y1ascending fa fas z3ascending p)+ hascending fa fas z3ascending p+ = y1ascending fa fas z3ascending p+ y1ascending fa fas fbs p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.uap1 T.mkNoSrcPos p fas+ (T.fromExpList T.mkNoSrcPos p [fa]))+ (T.uwrapForward p (hsequences fbs p))+ gmergeAll pmergeAll p+ = T.ufun1 c166v5v167v43mergeAll pmergeAll p hmergeAll+ amergeAll = c166v5v167v43mergeAll+ hmergeAll (T.R (T.Cons fx (T.R T.Nil _)) _) p+ = T.projection T.mkNoSrcPos p fx+ hmergeAll fxs p+ = T.uwrapForward p+ (hmergeAll (T.uwrapForward p (hmergePairs fxs p)) p)+ gmergePairs pmergePairs p+ = T.ufun1 c169v5v170v28mergePairs pmergePairs p+ hmergePairs+ amergePairs = c169v5v170v28mergePairs+ hmergePairs+ (T.R (T.Cons fa (T.R (T.Cons fb fxs) _)) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.uwrapForward p (hmerge fa fb p))+ (T.uwrapForward p (hmergePairs fxs p))+ hmergePairs fxs p = T.projection T.mkNoSrcPos p fxs+ gmerge pmerge p+ = T.ufun2 c172v5v176v28merge pmerge p hmerge+ amerge = c172v5v176v28merge+ hmerge fas@(T.R (T.Cons fa fas') _)+ fbs@(T.R (T.Cons fb fbs') _) p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!==) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p fcmp fa fb)+ (T.con0 T.mkNoSrcPos p GT aGT))+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb+ (T.uwrapForward p (hmerge fas fbs' p)))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa+ (T.uwrapForward p (hmerge fas' fbs p)))+ (T.fatal p))+ hmerge (T.R T.Nil _) fbs p+ = T.projection T.mkNoSrcPos p fbs+ hmerge fas (T.R T.Nil _) p+ = T.projection T.mkNoSrcPos p fas+ hmerge _ _ p = T.fatal p+ +ginsert ::+ (Ord a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun a (T.Fun (T.List a) (T.List a)))+ +sinsert ::+ (Ord a) =>+ T.R (T.Fun a (T.Fun (T.List a) (T.List a)))+ginsert pinsert p = T.uconstUse pinsert p sinsert+sinsert+ = T.uconstDef p ainsert+ (\ p ->+ T.uap1 T.mkNoSrcPos p (ginsertBy T.mkNoSrcPos p)+ (gcompare T.mkNoSrcPos p))+ +ginsertBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Ordering))+ (T.Fun a (T.Fun (T.List a) (T.List a))))+ +hinsertBy ::+ T.R (T.Fun a (T.Fun a Ordering)) ->+ T.R a -> T.R (T.List a) -> T.RefExp -> T.R (T.List a)+ginsertBy pinsertBy p+ = T.ufun3 ainsertBy pinsertBy p hinsertBy+hinsertBy fcmp fx (T.R T.Nil _) p+ = T.fromExpList T.mkNoSrcPos p [fx]+hinsertBy fcmp fx fys@(T.R (T.Cons fy fys') _) p+ = T.uccase T.mkNoSrcPos p+ (let v184v28v188v0v1 (T.R GT _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons fy+ (T.uwrapForward p (hinsertBy fcmp fx fys' p))+ v184v28v188v0v1 _ p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons fx fys+ in v184v28v188v0v1)+ (T.uap2 T.mkNoSrcPos p fcmp fx fy)+hinsertBy _ _ _ p = T.fatal p+ +gmaximumBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Ordering))+ (T.Fun (T.List a) a))+ +hmaximumBy ::+ T.R (T.Fun a (T.Fun a Ordering)) ->+ T.R (T.List a) -> T.RefExp -> T.R a+gmaximumBy pmaximumBy p+ = T.ufun2 amaximumBy pmaximumBy p hmaximumBy+hmaximumBy fcmp (T.R T.Nil _) p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "List.maximumBy: empty list")+ p)+hmaximumBy fcmp fxs p+ = T.uwrapForward p+ (hfoldl1 (gmax T.mkNoSrcPos p) fxs p)+ where gmax pmax p+ = T.ufun2 c192v28v196v0max pmax p hmax+ amax = c192v28v196v0max+ hmax fx fy p+ = T.uccase T.mkNoSrcPos p+ (let v192v38v196v0v1 (T.R GT _) p+ = T.projection T.mkNoSrcPos p fx+ v192v38v196v0v1 _ p = T.projection T.mkNoSrcPos p fy+ in v192v38v196v0v1)+ (T.uap2 T.mkNoSrcPos p fcmp fx fy)+ +gminimumBy ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun a Ordering))+ (T.Fun (T.List a) a))+ +hminimumBy ::+ T.R (T.Fun a (T.Fun a Ordering)) ->+ T.R (T.List a) -> T.RefExp -> T.R a+gminimumBy pminimumBy p+ = T.ufun2 aminimumBy pminimumBy p hminimumBy+hminimumBy fcmp (T.R T.Nil _) p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "List.minimumBy: empty list")+ p)+hminimumBy fcmp fxs p+ = T.uwrapForward p+ (hfoldl1 (gmin T.mkNoSrcPos p) fxs p)+ where gmin pmin p+ = T.ufun2 c200v28v204v0min pmin p hmin+ amin = c200v28v204v0min+ hmin fx fy p+ = T.uccase T.mkNoSrcPos p+ (let v200v38v204v0v1 (T.R GT _) p+ = T.projection T.mkNoSrcPos p fy+ v200v38v204v0v1 _ p = T.projection T.mkNoSrcPos p fx+ in v200v38v204v0v1)+ (T.uap2 T.mkNoSrcPos p fcmp fx fy)+ +ggenericLength ::+ (Integral a) =>+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List b) a)+ +hgenericLength ::+ (Integral a) => T.R (T.List b) -> T.RefExp -> T.R a+ggenericLength pgenericLength p+ = T.ufun1 agenericLength pgenericLength p+ hgenericLength+hgenericLength (T.R T.Nil _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+hgenericLength (T.R (T.Cons fx fxs) _) p+ = T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1)))+ (T.uwrapForward p (hgenericLength fxs p))+hgenericLength _ p = T.fatal p+ +ggenericTake ::+ (Integral a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun a (T.Fun (T.List b) (T.List b)))+ +hgenericTake ::+ (Integral a) =>+ T.R a -> T.R (T.List b) -> T.RefExp -> T.R (T.List b)+ggenericTake pgenericTake p+ = T.ufun2 agenericTake pgenericTake p hgenericTake+hgenericTake _ (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+hgenericTake fv210v13v210v13n v210v15v210v15n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv210v13v210v13n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h210v1v210v29n v210v15v210v15n p)+ (y1genericTake fv210v13v210v13n v210v15v210v15n p)+ where h210v1v210v29n _ p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+ h210v1v210v29n _ p+ = y1genericTake fv210v13v210v13n v210v15v210v15n p+hgenericTake fv210v13v210v13n v210v15v210v15n p+ = y1genericTake fv210v13v210v13n v210v15v210v15n p+y1genericTake fn (T.R (T.Cons fx fxs) _) p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx+ (T.uwrapForward p+ (hgenericTake+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ fxs+ p)))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "List.genericTake: negative argument")+ p))+ (T.fatal p))+y1genericTake _ _ p = T.fatal p+ +ggenericDrop ::+ (Integral a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun a (T.Fun (T.List b) (T.List b)))+ +hgenericDrop ::+ (Integral a) =>+ T.R a -> T.R (T.List b) -> T.RefExp -> T.R (T.List b)+ggenericDrop pgenericDrop p+ = T.ufun2 agenericDrop pgenericDrop p hgenericDrop+hgenericDrop fv216v13v216v13n fxs p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv216v13v216v13n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h216v1v216v29n fxs p)+ (y1genericDrop fv216v13v216v13n fxs p)+ where h216v1v216v29n fxs p+ = T.projection T.mkNoSrcPos p fxs+ h216v1v216v29n _ p+ = y1genericDrop fv216v13v216v13n fxs p+hgenericDrop fv216v13v216v13n fxs p+ = y1genericDrop fv216v13v216v13n fxs p+y1genericDrop _ (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+y1genericDrop fn (T.R (T.Cons _ fxs) _) p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (T.uwrapForward p+ (hgenericDrop+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ fxs+ p))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "List.genericDrop: negative argument")+ p))+ (T.fatal p))+y1genericDrop _ _ p = T.fatal p+ +ggenericSplitAt ::+ (Integral a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun a+ (T.Fun (T.List b) (T.Tuple2 (T.List b) (T.List b))))+ +hgenericSplitAt ::+ (Integral a) =>+ T.R a ->+ T.R (T.List b) ->+ T.RefExp -> T.R (T.Tuple2 (T.List b) (T.List b))+ggenericSplitAt pgenericSplitAt p+ = T.ufun2 agenericSplitAt pgenericSplitAt p+ hgenericSplitAt+hgenericSplitAt fv223v16v223v16n fxs p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv223v16v223v16n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h223v1v223v34n fxs p)+ (y1genericSplitAt fv223v16v223v16n fxs p)+ where h223v1v223v34n fxs p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ fxs+ h223v1v223v34n _ p+ = y1genericSplitAt fv223v16v223v16n fxs p+hgenericSplitAt fv223v16v223v16n fxs p+ = y1genericSplitAt fv223v16v223v16n fxs p+y1genericSplitAt _ (T.R T.Nil _) p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+y1genericSplitAt fn (T.R (T.Cons fx fxs) _) p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx+ (gxs' T.mkNoSrcPos p))+ (gxs'' T.mkNoSrcPos p))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "List.genericSplitAt: negative argument")+ p))+ (T.fatal p))+ where gxs' pxs' p = T.uconstUse pxs' p sxs'+ gxs'' pxs'' p = T.uconstUse pxs'' p sxs''+ sxs'+ = T.uconstDef p c228v14v228v50xs'+ (\ _ ->+ case j228v14v228v50xs' of+ (kxs', fxs', fxs'') -> fxs')+ sxs''+ = T.uconstDef p c228v14v228v50xs''+ (\ _ ->+ case j228v14v228v50xs' of+ (kxs', fxs', fxs'') -> fxs'')+ j228v14v228v50xs'+ = case+ T.uwrapForward p+ (hgenericSplitAt+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ fxs+ p)+ of+ T.R (T.Tuple2 fxs' fxs'') kxs' -> (kxs', fxs', fxs'')+ _ -> T.fatal p+y1genericSplitAt _ _ p = T.fatal p+ +ggenericIndex ::+ (Integral a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.List b) (T.Fun a b))+ +hgenericIndex ::+ (Integral a) =>+ T.R (T.List b) -> T.R a -> T.RefExp -> T.R b+ggenericIndex pgenericIndex p+ = T.ufun2 agenericIndex pgenericIndex p hgenericIndex+hgenericIndex z1genericIndex@(T.R (T.Cons fx _) _)+ fv231v21v231v21n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv231v21v231v21n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h231v1v231v28n p)+ (y1genericIndex z1genericIndex fv231v21v231v21n p)+ where h231v1v231v28n p+ = T.projection T.mkNoSrcPos p fx+ h231v1v231v28n p+ = y1genericIndex z1genericIndex fv231v21v231v21n p+hgenericIndex z1genericIndex fv231v21v231v21n p+ = y1genericIndex z1genericIndex fv231v21v231v21n p+y1genericIndex (T.R (T.Cons _ fxs) _) fn p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (T.uwrapForward p+ (hgenericIndex fxs+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ p))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "List.genericIndex: negative argument")+ p))+ (T.fatal p))+y1genericIndex _ _ p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "List.genericIndex: index too large")+ p)+ +ggenericReplicate ::+ (Integral a) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun a (T.Fun b (T.List b)))+ +hgenericReplicate ::+ (Integral a) =>+ T.R a -> T.R b -> T.RefExp -> T.R (T.List b)+ggenericReplicate pgenericReplicate p+ = T.ufun2 agenericReplicate pgenericReplicate p+ hgenericReplicate+hgenericReplicate fn fx p+ = T.uwrapForward p+ (hgenericTake fn (T.uwrapForward p (hrepeat fx p)) p)+ +gzip4 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d) (T.List (T.Tuple4 a b c d))))))+ +szip4 ::+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d) (T.List (T.Tuple4 a b c d))))))+gzip4 pzip4 p = T.uconstUse pzip4 p szip4+szip4+ = T.uconstDef p azip4+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gzipWith4 T.mkNoSrcPos p)+ (T.pa0 T.Tuple4 T.cn4 T.mkNoSrcPos p T.aTuple4))+ +gzip5 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d)+ (T.Fun (T.List e) (T.List (T.Tuple5 a b c d e)))))))+ +szip5 ::+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d)+ (T.Fun (T.List e) (T.List (T.Tuple5 a b c d e)))))))+gzip5 pzip5 p = T.uconstUse pzip5 p szip5+szip5+ = T.uconstDef p azip5+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gzipWith5 T.mkNoSrcPos p)+ (T.pa0 T.Tuple5 T.cn5 T.mkNoSrcPos p T.aTuple5))+ +gzip6 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d)+ (T.Fun (T.List e)+ (T.Fun (T.List f)+ (T.List (T.Tuple6 a b c d e f))))))))+ +szip6 ::+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d)+ (T.Fun (T.List e)+ (T.Fun (T.List f)+ (T.List (T.Tuple6 a b c d e f))))))))+gzip6 pzip6 p = T.uconstUse pzip6 p szip6+szip6+ = T.uconstDef p azip6+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gzipWith6 T.mkNoSrcPos p)+ (T.pa0 T.Tuple6 T.cn6 T.mkNoSrcPos p T.aTuple6))+ +gzip7 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d)+ (T.Fun (T.List e)+ (T.Fun (T.List f)+ (T.Fun (T.List g)+ (T.List (T.Tuple7 a b c d e f g)))))))))+ +szip7 ::+ T.R+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d)+ (T.Fun (T.List e)+ (T.Fun (T.List f)+ (T.Fun (T.List g)+ (T.List (T.Tuple7 a b c d e f g)))))))))+gzip7 pzip7 p = T.uconstUse pzip7 p szip7+szip7+ = T.uconstDef p azip7+ (\ p ->+ T.uap1 T.mkNoSrcPos p (gzipWith7 T.mkNoSrcPos p)+ (T.pa0 T.Tuple7 T.cn7 T.mkNoSrcPos p T.aTuple7))+ +gzipWith4 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (T.Fun c (T.Fun d e))))+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c) (T.Fun (T.List d) (T.List e))))))+ +hzipWith4 ::+ T.R (T.Fun a (T.Fun b (T.Fun c (T.Fun d e)))) ->+ T.R (T.List a) ->+ T.R (T.List b) ->+ T.R (T.List c) ->+ T.R (T.List d) -> T.RefExp -> T.R (T.List e)+gzipWith4 pzipWith4 p+ = T.ufun5 azipWith4 pzipWith4 p hzipWith4+hzipWith4 fz (T.R (T.Cons fa fas) _)+ (T.R (T.Cons fb fbs) _) (T.R (T.Cons fc fcs) _)+ (T.R (T.Cons fd fds) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.uap4 T.mkNoSrcPos p fz fa fb fc fd)+ (T.uwrapForward p (hzipWith4 fz fas fbs fcs fds p))+hzipWith4 _ _ _ _ _ p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+ +gzipWith5 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun+ (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e f)))))+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d) (T.Fun (T.List e) (T.List f)))))))+ +hzipWith5 ::+ T.R+ (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e f)))))+ ->+ T.R (T.List a) ->+ T.R (T.List b) ->+ T.R (T.List c) ->+ T.R (T.List d) ->+ T.R (T.List e) -> T.RefExp -> T.R (T.List f)+gzipWith5 pzipWith5 p+ = T.ufun6 azipWith5 pzipWith5 p hzipWith5+hzipWith5 fz (T.R (T.Cons fa fas) _)+ (T.R (T.Cons fb fbs) _) (T.R (T.Cons fc fcs) _)+ (T.R (T.Cons fd fds) _) (T.R (T.Cons fe fes) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.uap5 T.mkNoSrcPos p fz fa fb fc fd fe)+ (T.uap6 T.mkNoSrcPos p (gzipWith5 T.mkNoSrcPos p) fz+ fas+ fbs+ fcs+ fds+ fes)+hzipWith5 _ _ _ _ _ _ p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+ +gzipWith6 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun+ (T.Fun a+ (T.Fun b (T.Fun c (T.Fun d (T.Fun e (T.Fun f g))))))+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d)+ (T.Fun (T.List e)+ (T.Fun (T.List f) (T.List g))))))))+ +hzipWith6 ::+ T.R+ (T.Fun a+ (T.Fun b (T.Fun c (T.Fun d (T.Fun e (T.Fun f g))))))+ ->+ T.R (T.List a) ->+ T.R (T.List b) ->+ T.R (T.List c) ->+ T.R (T.List d) ->+ T.R (T.List e) ->+ T.R (T.List f) -> T.RefExp -> T.R (T.List g)+gzipWith6 pzipWith6 p+ = T.ufun7 azipWith6 pzipWith6 p hzipWith6+hzipWith6 fz (T.R (T.Cons fa fas) _)+ (T.R (T.Cons fb fbs) _) (T.R (T.Cons fc fcs) _)+ (T.R (T.Cons fd fds) _) (T.R (T.Cons fe fes) _)+ (T.R (T.Cons ff ffs) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.uap6 T.mkNoSrcPos p fz fa fb fc fd fe ff)+ (T.uap7 T.mkNoSrcPos p (gzipWith6 T.mkNoSrcPos p) fz+ fas+ fbs+ fcs+ fds+ fes+ ffs)+hzipWith6 _ _ _ _ _ _ _ p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+ +gzipWith7 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun+ (T.Fun a+ (T.Fun b+ (T.Fun c (T.Fun d (T.Fun e (T.Fun f (T.Fun g h)))))))+ (T.Fun (T.List a)+ (T.Fun (T.List b)+ (T.Fun (T.List c)+ (T.Fun (T.List d)+ (T.Fun (T.List e)+ (T.Fun (T.List f)+ (T.Fun (T.List g) (T.List h)))))))))+ +hzipWith7 ::+ T.R+ (T.Fun a+ (T.Fun b+ (T.Fun c (T.Fun d (T.Fun e (T.Fun f (T.Fun g h)))))))+ ->+ T.R (T.List a) ->+ T.R (T.List b) ->+ T.R (T.List c) ->+ T.R (T.List d) ->+ T.R (T.List e) ->+ T.R (T.List f) ->+ T.R (T.List g) -> T.RefExp -> T.R (T.List h)+gzipWith7 pzipWith7 p+ = T.ufun8 azipWith7 pzipWith7 p hzipWith7+hzipWith7 fz (T.R (T.Cons fa fas) _)+ (T.R (T.Cons fb fbs) _) (T.R (T.Cons fc fcs) _)+ (T.R (T.Cons fd fds) _) (T.R (T.Cons fe fes) _)+ (T.R (T.Cons ff ffs) _) (T.R (T.Cons fg fgs) _) p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (T.uap7 T.mkNoSrcPos p fz fa fb fc fd fe ff fg)+ (T.uap8 T.mkNoSrcPos p (gzipWith7 T.mkNoSrcPos p) fz+ fas+ fbs+ fcs+ fds+ fes+ ffs+ fgs)+hzipWith7 _ _ _ _ _ _ _ _ p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+ +gunzip4 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List (T.Tuple4 a b c d))+ (T.Tuple4 (T.List a) (T.List b) (T.List c)+ (T.List d)))+ +sunzip4 ::+ T.R+ (T.Fun (T.List (T.Tuple4 a b c d))+ (T.Tuple4 (T.List a) (T.List b) (T.List c)+ (T.List d)))+gunzip4 punzip4 p = T.uconstUse punzip4 p sunzip4+sunzip4+ = T.uconstDef p aunzip4+ (\ p ->+ T.uap2 T.mkNoSrcPos p (gfoldr T.mkNoSrcPos p)+ (T.ufun2 T.mkLambda T.mkNoSrcPos p+ (\ (T.R (T.Tuple4 fa fb fc fd) _)+ (T.R ~(T.Tuple4 fas fbs fcs fds) _) p ->+ T.con4 T.mkNoSrcPos p T.Tuple4 T.aTuple4+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fas)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb fbs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fc fcs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fd fds)))+ (T.con4 T.mkNoSrcPos p T.Tuple4 T.aTuple4+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)))+ +gunzip5 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List (T.Tuple5 a b c d e))+ (T.Tuple5 (T.List a) (T.List b) (T.List c) (T.List d)+ (T.List e)))+ +sunzip5 ::+ T.R+ (T.Fun (T.List (T.Tuple5 a b c d e))+ (T.Tuple5 (T.List a) (T.List b) (T.List c) (T.List d)+ (T.List e)))+gunzip5 punzip5 p = T.uconstUse punzip5 p sunzip5+sunzip5+ = T.uconstDef p aunzip5+ (\ p ->+ T.uap2 T.mkNoSrcPos p (gfoldr T.mkNoSrcPos p)+ (T.ufun2 T.mkLambda T.mkNoSrcPos p+ (\ (T.R (T.Tuple5 fa fb fc fd fe) _)+ (T.R ~(T.Tuple5 fas fbs fcs fds fes) _) p ->+ T.con5 T.mkNoSrcPos p T.Tuple5 T.aTuple5+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fas)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb fbs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fc fcs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fd fds)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fe fes)))+ (T.con5 T.mkNoSrcPos p T.Tuple5 T.aTuple5+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)))+ +gunzip6 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List (T.Tuple6 a b c d e f))+ (T.Tuple6 (T.List a) (T.List b) (T.List c) (T.List d)+ (T.List e)+ (T.List f)))+ +sunzip6 ::+ T.R+ (T.Fun (T.List (T.Tuple6 a b c d e f))+ (T.Tuple6 (T.List a) (T.List b) (T.List c) (T.List d)+ (T.List e)+ (T.List f)))+gunzip6 punzip6 p = T.uconstUse punzip6 p sunzip6+sunzip6+ = T.uconstDef p aunzip6+ (\ p ->+ T.uap2 T.mkNoSrcPos p (gfoldr T.mkNoSrcPos p)+ (T.ufun2 T.mkLambda T.mkNoSrcPos p+ (\ (T.R (T.Tuple6 fa fb fc fd fe ff) _)+ (T.R ~(T.Tuple6 fas fbs fcs fds fes ffs) _) p ->+ T.con6 T.mkNoSrcPos p T.Tuple6 T.aTuple6+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fas)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb fbs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fc fcs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fd fds)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fe fes)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons ff ffs)))+ (T.con6 T.mkNoSrcPos p T.Tuple6 T.aTuple6+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)))+ +gunzip7 ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.List (T.Tuple7 a b c d e f g))+ (T.Tuple7 (T.List a) (T.List b) (T.List c) (T.List d)+ (T.List e)+ (T.List f)+ (T.List g)))+ +sunzip7 ::+ T.R+ (T.Fun (T.List (T.Tuple7 a b c d e f g))+ (T.Tuple7 (T.List a) (T.List b) (T.List c) (T.List d)+ (T.List e)+ (T.List f)+ (T.List g)))+gunzip7 punzip7 p = T.uconstUse punzip7 p sunzip7+sunzip7+ = T.uconstDef p aunzip7+ (\ p ->+ T.uap2 T.mkNoSrcPos p (gfoldr T.mkNoSrcPos p)+ (T.ufun2 T.mkLambda T.mkNoSrcPos p+ (\ (T.R (T.Tuple7 fa fb fc fd fe ff fg) _)+ (T.R ~(T.Tuple7 fas fbs fcs fds fes ffs fgs) _) p ->+ T.con7 T.mkNoSrcPos p T.Tuple7 T.aTuple7+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fa fas)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fb fbs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fc fcs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fd fds)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fe fes)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons ff ffs)+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fg fgs)))+ (T.con7 T.mkNoSrcPos p T.Tuple7 T.aTuple7+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)))+adelete+ = T.mkVariable tList 560001 560040 3 (0) "delete"+ Prelude.False+adeleteBy+ = T.mkVariable tList 590001 600071 3 (3) "deleteBy"+ Prelude.False+adeleteFirstsBy+ = T.mkVariable tList 660001 660053 3 (1)+ "deleteFirstsBy"+ Prelude.False+aelemIndex+ = T.mkVariable tList 340001 340043 3 (1) "elemIndex"+ Prelude.False+aelemIndices+ = T.mkVariable tList 370001 370045 3 (1)+ "elemIndices"+ Prelude.False+afind+ = T.mkVariable tList 400001 400049 3 (1) "find"+ Prelude.False+afindIndex+ = T.mkVariable tList 430001 430054 3 (1) "findIndex"+ Prelude.False+afindIndices+ = T.mkVariable tList 460001 460061 3 (2)+ "findIndices"+ Prelude.False+agenericDrop+ = T.mkVariable tList 2160001 2200070 3 (2)+ "genericDrop"+ Prelude.False+agenericIndex+ = T.mkVariable tList 2310001 2350069 3 (2)+ "genericIndex"+ Prelude.False+agenericLength+ = T.mkVariable tList 2050001 2060047 3 (1)+ "genericLength"+ Prelude.False+agenericReplicate+ = T.mkVariable tList 2380001 2380051 3 (2)+ "genericReplicate"+ Prelude.False+agenericSplitAt+ = T.mkVariable tList 2230001 2300000 3 (2)+ "genericSplitAt"+ Prelude.False+agenericTake+ = T.mkVariable tList 2090001 2130070 3 (2)+ "genericTake"+ Prelude.False+agroup+ = T.mkVariable tList 1030001 1030039 3 (0) "group"+ Prelude.False+agroupBy+ = T.mkVariable tList 1060001 1120000 3 (2) "groupBy"+ Prelude.False+ainits+ = T.mkVariable tList 1130001 1140054 3 (1) "inits"+ Prelude.False+ainsert+ = T.mkVariable tList 1790001 1790042 3 (0) "insert"+ Prelude.False+ainsertBy+ = T.mkVariable tList 1820001 1880000 3 (3) "insertBy"+ Prelude.False+aintersect+ = T.mkVariable tList 750001 750043 3 (0) "intersect"+ Prelude.False+aintersectBy+ = T.mkVariable tList 780001 780055 3 (3)+ "intersectBy"+ Prelude.False+aintersperse+ = T.mkVariable tList 810001 830055 3 (2)+ "intersperse"+ Prelude.False+aisPrefixOf+ = T.mkVariable tList 1230001 1250054 3 (2)+ "isPrefixOf"+ Prelude.False+aisSuffixOf+ = T.mkVariable tList 1280001 1280059 3 (2)+ "isSuffixOf"+ Prelude.False+amapAccumL+ = T.mkVariable tList 1310001 1360000 3 (3)+ "mapAccumL"+ Prelude.False+amapAccumR+ = T.mkVariable tList 1370001 1420000 3 (3)+ "mapAccumR"+ Prelude.False+amaximumBy+ = T.mkVariable tList 1890001 1960000 3 (2)+ "maximumBy"+ Prelude.False+aminimumBy+ = T.mkVariable tList 1970001 2040000 3 (2)+ "minimumBy"+ Prelude.False+anub+ = T.mkVariable tList 490001 490037 3 (0) "nub"+ Prelude.False+anubBy+ = T.mkVariable tList 520001 530072 3 (2) "nubBy"+ Prelude.False+apartition+ = T.mkVariable tList 970001 970061 3 (2) "partition"+ Prelude.False+asort+ = T.mkVariable tList 1480001 1480041 3 (0) "sort"+ Prelude.False+asortBy+ = T.mkVariable tList 1510001 1520007 3 (1) "sortBy"+ Prelude.False+atails+ = T.mkVariable tList 1190001 1200041 3 (1) "tails"+ Prelude.False+atranspose+ = T.mkVariable tList 910001 940062 3 (1) "transpose"+ Prelude.False+aunfoldr+ = T.mkVariable tList 1430001 1470000 3 (2) "unfoldr"+ Prelude.False+aunion+ = T.mkVariable tList 690001 690039 3 (0) "union"+ Prelude.False+aunionBy+ = T.mkVariable tList 720001 720067 3 (3) "unionBy"+ Prelude.False+aunzip4+ = T.mkVariable tList 2780001 2800046 3 (0) "unzip4"+ Prelude.False+aunzip5+ = T.mkVariable tList 2830001 2850049 3 (0) "unzip5"+ Prelude.False+aunzip6+ = T.mkVariable tList 2880001 2900052 3 (0) "unzip6"+ Prelude.False+aunzip7+ = T.mkVariable tList 2930001 2950047 3 (0) "unzip7"+ Prelude.False+azip4+ = T.mkVariable tList 2410001 2410041 3 (0) "zip4"+ Prelude.False+azip5+ = T.mkVariable tList 2440001 2440042 3 (0) "zip5"+ Prelude.False+azip6+ = T.mkVariable tList 2480001 2480043 3 (0) "zip6"+ Prelude.False+azip7+ = T.mkVariable tList 2520001 2520044 3 (0) "zip7"+ Prelude.False+azipWith4+ = T.mkVariable tList 2550001 2570029 3 (5) "zipWith4"+ Prelude.False+azipWith5+ = T.mkVariable tList 2610001 2630029 3 (6) "zipWith5"+ Prelude.False+azipWith6+ = T.mkVariable tList 2670001 2690029 3 (7) "zipWith6"+ Prelude.False+azipWith7+ = T.mkVariable tList 2730001 2750029 3 (8) "zipWith7"+ Prelude.False+(+\\)+ = T.mkVariable tList 630001 630046 20 (0) "\\\\"+ Prelude.False+c108v34v108v57ys+ = T.mkVariable tList 1080034 1080057 3 (0) "ys"+ Prelude.True+c108v34v108v57zs+ = T.mkVariable tList 1080034 1080057 3 (0) "zs"+ Prelude.True+c133v34v133v49s'+ = T.mkVariable tList 1330034 1330049 3 (0) "s'"+ Prelude.True+c134v34v134v61s''+ = T.mkVariable tList 1340034 1340061 3 (0) "s''"+ Prelude.True+c133v34v133v49y+ = T.mkVariable tList 1330034 1330049 3 (0) "y"+ Prelude.True+c134v34v134v61ys+ = T.mkVariable tList 1340034 1340061 3 (0) "ys"+ Prelude.True+c140v34v140v60s'+ = T.mkVariable tList 1400034 1400060 3 (0) "s'"+ Prelude.True+c139v34v139v50s''+ = T.mkVariable tList 1390034 1390050 3 (0) "s''"+ Prelude.True+c139v34v139v50y+ = T.mkVariable tList 1390034 1390050 3 (0) "y"+ Prelude.True+c140v34v140v60ys+ = T.mkVariable tList 1400034 1400060 3 (0) "ys"+ Prelude.True+c162v5v164v46ascending+ = T.mkVariable tList 1620005 1640046 3 (3)+ "ascending"+ Prelude.True+c158v5v160v46descending+ = T.mkVariable tList 1580005 1600046 3 (3)+ "descending"+ Prelude.True+c172v5v176v28merge+ = T.mkVariable tList 1720005 1760028 3 (2) "merge"+ Prelude.True+c166v5v167v43mergeAll+ = T.mkVariable tList 1660005 1670043 3 (1) "mergeAll"+ Prelude.True+c169v5v170v28mergePairs+ = T.mkVariable tList 1690005 1700028 3 (1)+ "mergePairs"+ Prelude.True+c153v5v156v23sequences+ = T.mkVariable tList 1530005 1560023 3 (1)+ "sequences"+ Prelude.True+c192v28v196v0max+ = T.mkVariable tList 1920028 1960000 3 (2) "max"+ Prelude.True+c200v28v204v0min+ = T.mkVariable tList 2000028 2040000 3 (2) "min"+ Prelude.True+c228v14v228v50xs'+ = T.mkVariable tList 2280014 2280050 3 (0) "xs'"+ Prelude.True+c228v14v228v50xs''+ = T.mkVariable tList 2280014 2280050 3 (0) "xs''"+ Prelude.True+p = T.mkRoot+tList = T.mkModule "List" "List.hs" Prelude.False
Hat/Locale.hs view
@@ -1,439 +1,815 @@ module Hat.Locale- (TimeLocale(TimeLocale,bwDays,bmonths,bamPm,bdateTimeFmt,bdateFmt,btimeFmt- ,btime12Fmt),gwDays,gmonths,gamPm,gdateTimeFmt,gdateFmt,gtimeFmt- ,gtime12Fmt,hwDays,hmonths,hamPm,hdateTimeFmt,hdateFmt,htimeFmt,htime12Fmt- ,awDays,amonths,aamPm,adateTimeFmt,adateFmt,atimeFmt,atime12Fmt,aTimeLocale- ,gdefaultTimeLocale) 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 --data TimeLocale =- TimeLocale- {bwDays :: T.R (T.List (T.Tuple2 String String))- ,bmonths :: T.R (T.List (T.Tuple2 String String))- ,bamPm :: T.R (T.Tuple2 String String)- ,bdateTimeFmt,bdateFmt,btimeFmt,btime12Fmt :: T.R String}--instance T.WrapVal (TimeLocale)- where- - wrapVal pwrapVal- (kwrapVal@(TimeLocale (T.R _ z1wrapVal) (T.R _ z2wrapVal) (T.R _ z3wrapVal)- (T.R _ z4wrapVal) (T.R _ z5wrapVal) (T.R _ z6wrapVal)- (T.R _ z7wrapVal))) p =- T.R kwrapVal- (T.mkValueApp7 p pwrapVal aTimeLocale z1wrapVal z2wrapVal z3wrapVal- z4wrapVal z5wrapVal z6wrapVal z7wrapVal)- --gwDays pwDays p = T.ufun1 awDays pwDays p hwDays--hwDays (T.R z1wDays _) p = T.projection T.mkNoSrcPos p (bwDays z1wDays)--gmonths pmonths p = T.ufun1 amonths pmonths p hmonths--hmonths (T.R z1months _) p = T.projection T.mkNoSrcPos p (bmonths z1months)--gamPm pamPm p = T.ufun1 aamPm pamPm p hamPm--hamPm (T.R z1amPm _) p = T.projection T.mkNoSrcPos p (bamPm z1amPm)--gdateTimeFmt pdateTimeFmt p = T.ufun1 adateTimeFmt pdateTimeFmt p hdateTimeFmt--hdateTimeFmt (T.R z1dateTimeFmt _) p =- T.projection T.mkNoSrcPos p (bdateTimeFmt z1dateTimeFmt)--gdateFmt pdateFmt p = T.ufun1 adateFmt pdateFmt p hdateFmt--hdateFmt (T.R z1dateFmt _) p = T.projection T.mkNoSrcPos p (bdateFmt z1dateFmt)--gtimeFmt ptimeFmt p = T.ufun1 atimeFmt ptimeFmt p htimeFmt--htimeFmt (T.R z1timeFmt _) p = T.projection T.mkNoSrcPos p (btimeFmt z1timeFmt)--gtime12Fmt ptime12Fmt p = T.ufun1 atime12Fmt ptime12Fmt p htime12Fmt--htime12Fmt (T.R z1time12Fmt _) p =- T.projection T.mkNoSrcPos p (btime12Fmt z1time12Fmt)--instance Eq (TimeLocale)- where- - (!==) (%==) p =- T.ufun2 (+##=$#=##=$$==) (%==) p (*==)- where- - (*==) (T.R (TimeLocale fy1 fy2 fy3 fy4 fy5 fy6 fy7) _)- (T.R (TimeLocale fy8 fy9 fy10 fy11 fy12 fy13 fy14) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy1 fy8)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy2 fy9)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p)- fy3 fy10)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy4 fy11)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy5 fy12)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy6- fy13)- Hat.Prelude.*&&- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy7- fy14)) p))) p))) p))) p))) p))) p)- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (TimeLocale)- where- - gcompare pcompare p =- T.ufun2 a11v25v11v27compare pcompare p hcompare- where- - hcompare (T.R (TimeLocale fy3 fy4 fy5 fy6 fy7 fy8 fy9) _)- (T.R (TimeLocale fy10 fy11 fy12 fy13 fy14 fy15 fy16) _) p =- T.uccase T.mkNoSrcPos p- (let- v11v25v11v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v11v25v11v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v11v25v11v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v11v25v11v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v11v25v11v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v11v25v11v27v1 (T.R Hat.Prelude.EQ _)- p =- T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos- p) fy9 fy16- v11v25v11v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v11v25v11v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p)- fy8 fy15)- v11v25v11v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v11v25v11v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p) fy7- fy14)- v11v25v11v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v11v25v11v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p) fy6 fy13)- v11v25v11v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v11v25v11v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- fy5 fy12)- v11v25v11v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v11v25v11v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p) fy4- fy11)- v11v25v11v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v11v25v11v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p) fy3 fy10)- hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a11v25v11v27localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a11v25v11v27localFromEnum- - hlocalFromEnum (T.R (TimeLocale _ _ _ _ _ _ _) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum _ p = T.fatal p- - - --instance Show (TimeLocale)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a11v30v11v33showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (TimeLocale fy2 fy3 fy4 fy5 fy6 fy7 fy8) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "TimeLocale{"))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "wDays"))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy2))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "months"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy3))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "amPm"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy4))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "dateTimeFmt"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy5))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "dateFmt"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy6))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "timeFmt"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy7))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "time12Fmt"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy8)))))))))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '}'))- hshowsPrec _ _ p = T.fatal p- - --gdefaultTimeLocale :: T.RefSrcPos -> T.RefExp -> T.R TimeLocale--sdefaultTimeLocale :: T.R TimeLocale--gdefaultTimeLocale pdefaultTimeLocale p =- T.uconstUse pdefaultTimeLocale p sdefaultTimeLocale--sdefaultTimeLocale =- T.uconstDef T.mkRoot adefaultTimeLocale- (\ p ->- T.wrapVal T.mkNoSrcPos- ((TimeLocale (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)- (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)- (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)- (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)- (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)- (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)- (Hat.PreludeBasic.gundefined T.mkNoSrcPos p))- {bwDays- = T.fromExpList T.mkNoSrcPos p- [T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "Sunday")- (T.fromLitString T.mkNoSrcPos p "Sun")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "Monday")- (T.fromLitString T.mkNoSrcPos p "Mon")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "Tuesday")- (T.fromLitString T.mkNoSrcPos p "Tue")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "Wednesday")- (T.fromLitString T.mkNoSrcPos p "Wed")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "Thursday")- (T.fromLitString T.mkNoSrcPos p "Thu")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "Friday")- (T.fromLitString T.mkNoSrcPos p "Fri")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "Saturday")- (T.fromLitString T.mkNoSrcPos p "Sat")]- ,bmonths- = T.fromExpList T.mkNoSrcPos p- [T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "January")- (T.fromLitString T.mkNoSrcPos p "Jan")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "February")- (T.fromLitString T.mkNoSrcPos p "Feb")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "March")- (T.fromLitString T.mkNoSrcPos p "Mar")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "April")- (T.fromLitString T.mkNoSrcPos p "Apr")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "May")- (T.fromLitString T.mkNoSrcPos p "May")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "June")- (T.fromLitString T.mkNoSrcPos p "Jun")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "July")- (T.fromLitString T.mkNoSrcPos p "Jul")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "August")- (T.fromLitString T.mkNoSrcPos p "Aug")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "September")- (T.fromLitString T.mkNoSrcPos p "Sep")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "October")- (T.fromLitString T.mkNoSrcPos p "Oct")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "November")- (T.fromLitString T.mkNoSrcPos p "Nov")- ,T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "December")- (T.fromLitString T.mkNoSrcPos p "Dec")]- ,bamPm- = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.fromLitString T.mkNoSrcPos p "AM")- (T.fromLitString T.mkNoSrcPos p "PM")- ,bdateTimeFmt- = T.fromLitString T.mkNoSrcPos p "%a %b %e %H:%M:%S %Z %Y"- ,bdateFmt = T.fromLitString T.mkNoSrcPos p "%m/%d/%y"- ,btimeFmt = T.fromLitString T.mkNoSrcPos p "%H:%M:%S"- ,btime12Fmt = T.fromLitString T.mkNoSrcPos p "%I:%M:%S %p"}) p)--tLocale = T.mkModule "Locale" "Locale.hs" Prelude.False--aTimeLocale =- T.mkConstructorWFields tLocale 50019 50028 3 7 "TimeLocale"- (awDays- :- (amonths- :- (aamPm : (adateTimeFmt : (adateFmt : (atimeFmt : (atime12Fmt : [])))))))--awDays = T.mkVariable tLocale 60009 60013 3 1 "wDays" Prelude.False--amonths = T.mkVariable tLocale 70009 70014 3 1 "months" Prelude.False--aamPm = T.mkVariable tLocale 80009 80012 3 1 "amPm" Prelude.False--adateTimeFmt = T.mkVariable tLocale 90009 90019 3 1 "dateTimeFmt" Prelude.False--adateFmt = T.mkVariable tLocale 90022 90028 3 1 "dateFmt" Prelude.False--atimeFmt = T.mkVariable tLocale 100011 100017 3 1 "timeFmt" Prelude.False--atime12Fmt = T.mkVariable tLocale 100020 100028 3 1 "time12Fmt" Prelude.False--adefaultTimeLocale =- T.mkVariable tLocale 140001 310017 3 0 "defaultTimeLocale" Prelude.False--(+##=$#=##=$$==) = T.mkVariable tLocale 110021 110022 3 2 "==" Prelude.False--a11v25v11v27compare =- T.mkVariable tLocale 110025 110027 3 2 "compare" Prelude.False--a11v30v11v33showsPrec =- T.mkVariable tLocale 110030 110033 3 2 "showsPrec" Prelude.False--a11v25v11v27localFromEnum =- T.mkVariable tLocale 110025 110027 3 1 "localFromEnum" Prelude.True+ (TimeLocale(TimeLocale, bwDays, bmonths, bamPm,+ bdateTimeFmt, bdateFmt, btimeFmt, btime12Fmt),+ gwDays, gmonths, gamPm, gdateTimeFmt, gdateFmt,+ gtimeFmt, gtime12Fmt, hwDays, hmonths, hamPm,+ hdateTimeFmt, hdateFmt, htimeFmt, htime12Fmt, awDays,+ amonths, aamPm, adateTimeFmt, adateFmt, atimeFmt,+ atime12Fmt, aTimeLocale, gdefaultTimeLocale)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+ +data TimeLocale = TimeLocale{bwDays ::+ T.R (T.List (T.Tuple2 String String)),+ bmonths :: T.R (T.List (T.Tuple2 String String)),+ bamPm :: T.R (T.Tuple2 String String),+ bdateTimeFmt, bdateFmt, btimeFmt, btime12Fmt ::+ T.R String}+ +instance T.WrapVal TimeLocale where+ wrapVal pwrapVal+ kwrapVal@(TimeLocale (T.R _ z1wrapVal)+ (T.R _ z2wrapVal) (T.R _ z3wrapVal) (T.R _ z4wrapVal)+ (T.R _ z5wrapVal) (T.R _ z6wrapVal)+ (T.R _ z7wrapVal))+ p+ = T.R kwrapVal+ (T.mkValueApp7 p pwrapVal aTimeLocale z1wrapVal+ z2wrapVal+ z3wrapVal+ z4wrapVal+ z5wrapVal+ z6wrapVal+ z7wrapVal)+gwDays pwDays p = T.ufun1 awDays pwDays p hwDays+hwDays (T.R z1wDays _) p+ = T.projection T.mkNoSrcPos p (bwDays z1wDays)+gmonths pmonths p = T.ufun1 amonths pmonths p hmonths+hmonths (T.R z1months _) p+ = T.projection T.mkNoSrcPos p (bmonths z1months)+gamPm pamPm p = T.ufun1 aamPm pamPm p hamPm+hamPm (T.R z1amPm _) p+ = T.projection T.mkNoSrcPos p (bamPm z1amPm)+gdateTimeFmt pdateTimeFmt p+ = T.ufun1 adateTimeFmt pdateTimeFmt p hdateTimeFmt+hdateTimeFmt (T.R z1dateTimeFmt _) p+ = T.projection T.mkNoSrcPos p+ (bdateTimeFmt z1dateTimeFmt)+gdateFmt pdateFmt p+ = T.ufun1 adateFmt pdateFmt p hdateFmt+hdateFmt (T.R z1dateFmt _) p+ = T.projection T.mkNoSrcPos p (bdateFmt z1dateFmt)+gtimeFmt ptimeFmt p+ = T.ufun1 atimeFmt ptimeFmt p htimeFmt+htimeFmt (T.R z1timeFmt _) p+ = T.projection T.mkNoSrcPos p (btimeFmt z1timeFmt)+gtime12Fmt ptime12Fmt p+ = T.ufun1 atime12Fmt ptime12Fmt p htime12Fmt+htime12Fmt (T.R z1time12Fmt _) p+ = T.projection T.mkNoSrcPos p+ (btime12Fmt z1time12Fmt)+ +instance Eq TimeLocale where+ (%==) !== p = T.ufun2 (+##=$#=##=$$==) (%==) p (*==)+ where (T.R (TimeLocale fy1 fy2 fy3 fy4 fy5 fy6 fy7) _+ *==+ T.R (TimeLocale fy8 fy9 fy10 fy11 fy12 fy13 fy14) _)+ p+ = T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy1+ fy8)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy2+ fy9)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy3+ fy10)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy4+ fy11)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy5+ fy12)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy6+ fy13)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy7+ fy14)+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue)+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord TimeLocale where+ gcompare pcompare p+ = T.ufun2 c11v25v11v27compare pcompare p hcompare+ where hcompare+ (T.R (TimeLocale fy3 fy4 fy5 fy6 fy7 fy8 fy9) _)+ (T.R (TimeLocale fy10 fy11 fy12 fy13 fy14 fy15 fy16)+ _)+ p+ = T.uccase T.mkNoSrcPos p+ (let v11v25v11v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v11v25v11v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v11v25v11v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v11v25v11v27v1+ (T.R EQ _) p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v11v25v11v27v1+ (T.R EQ+ _)+ p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v11v25v11v27v1+ (T.R+ EQ+ _)+ p+ = T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy9+ fy16+ v11v25v11v27v1+ fy1+ p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v11v25v11v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy8+ fy15)+ v11v25v11v27v1+ fy1 p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v11v25v11v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy7+ fy14)+ v11v25v11v27v1 fy1 p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in v11v25v11v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos+ p)+ fy6+ fy13)+ v11v25v11v27v1 fy1 p+ = T.projection T.mkNoSrcPos p+ fy1+ in v11v25v11v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos p)+ fy5+ fy12)+ v11v25v11v27v1 fy1 p+ = T.projection T.mkNoSrcPos p fy1+ in v11v25v11v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos p)+ fy4+ fy11)+ v11v25v11v27v1 fy1 p+ = T.projection T.mkNoSrcPos p fy1+ in v11v25v11v27v1)+ (T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p) fy3+ fy10)+ hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c11v25v11v27localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c11v25v11v27localFromEnum+ hlocalFromEnum (T.R (TimeLocale _ _ _ _ _ _ _) _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Show TimeLocale where+ gshowsPrec pshowsPrec p+ = T.ufun2 c11v30v11v33showsPrec pshowsPrec p+ hshowsPrec+ where hshowsPrec fy1+ (T.R (TimeLocale fy2 fy3 fy4 fy5 fy6 fy7 fy8) _) p+ = T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "TimeLocale{"))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "wDays"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy2))+ (T.uap1 T.mkNoSrcPos p (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "months"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy3))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "amPm"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy4))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "dateTimeFmt"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (0)))+ fy5))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "dateFmt"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (0)))+ fy6))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "timeFmt"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos+ p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy7))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "time12Fmt"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (0)))+ fy8)))))))))+ (T.uap1 T.mkNoSrcPos p (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '}'))+ hshowsPrec _ _ p = T.fatal p+ +gdefaultTimeLocale ::+ T.RefSrcPos -> T.RefExp -> T.R TimeLocale+ +sdefaultTimeLocale :: T.R TimeLocale+gdefaultTimeLocale pdefaultTimeLocale p+ = T.uconstUse pdefaultTimeLocale p sdefaultTimeLocale+sdefaultTimeLocale+ = T.uconstDef p adefaultTimeLocale+ (\ p ->+ T.wrapVal T.mkNoSrcPos+ ((TimeLocale+ (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)+ (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)+ (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)+ (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)+ (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)+ (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)+ (Hat.PreludeBasic.gundefined T.mkNoSrcPos p)){bwDays+ =+ T.fromExpList+ T.mkNoSrcPos+ p+ [T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Sunday")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Sun"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Monday")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Mon"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Tuesday")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Tue"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Wednesday")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Wed"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Thursday")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Thu"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Friday")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Fri"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Saturday")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Sat")],+ bmonths =+ T.fromExpList+ T.mkNoSrcPos+ p+ [T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "January")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Jan"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "February")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Feb"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "March")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Mar"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "April")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Apr"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "May")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "May"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "June")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Jun"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "July")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Jul"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "August")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Aug"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "September")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Sep"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "October")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Oct"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "November")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Nov"),+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "December")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "Dec")],+ bamPm =+ T.con2+ T.mkNoSrcPos+ p+ T.Tuple2+ T.aTuple2+ (T.fromLitString+ T.mkNoSrcPos+ p+ "AM")+ (T.fromLitString+ T.mkNoSrcPos+ p+ "PM"),+ bdateTimeFmt =+ T.fromLitString+ T.mkNoSrcPos+ p+ "%a %b %e %H:%M:%S %Z %Y",+ bdateFmt =+ T.fromLitString+ T.mkNoSrcPos+ p+ "%m/%d/%y",+ btimeFmt =+ T.fromLitString+ T.mkNoSrcPos+ p+ "%H:%M:%S",+ btime12Fmt =+ T.fromLitString+ T.mkNoSrcPos+ p+ "%I:%M:%S %p"})+ p)+aTimeLocale+ = T.mkConstructorWFields tLocale 50019 50028 3 (7)+ "TimeLocale"+ ((:) awDays+ ((:) amonths+ ((:) aamPm+ ((:) adateTimeFmt+ ((:) adateFmt ((:) atimeFmt ((:) atime12Fmt [])))))))+aamPm+ = T.mkVariable tLocale 80009 80012 3 (1) "amPm"+ Prelude.False+adateFmt+ = T.mkVariable tLocale 90022 90028 3 (1) "dateFmt"+ Prelude.False+adateTimeFmt+ = T.mkVariable tLocale 90009 90019 3 (1)+ "dateTimeFmt"+ Prelude.False+adefaultTimeLocale+ = T.mkVariable tLocale 140001 320009 3 (0)+ "defaultTimeLocale"+ Prelude.False+amonths+ = T.mkVariable tLocale 70009 70014 3 (1) "months"+ Prelude.False+atime12Fmt+ = T.mkVariable tLocale 100020 100028 3 (1)+ "time12Fmt"+ Prelude.False+atimeFmt+ = T.mkVariable tLocale 100011 100017 3 (1) "timeFmt"+ Prelude.False+awDays+ = T.mkVariable tLocale 60009 60013 3 (1) "wDays"+ Prelude.False+(+##=$#=##=$$==)+ = T.mkVariable tLocale 110021 110022 3 (-1) "=="+ Prelude.False+c11v25v11v27localFromEnum+ = T.mkVariable tLocale 110025 110027 3 (1)+ "localFromEnum"+ Prelude.True+c11v25v11v27compare+ = T.mkVariable tLocale 110025 110027 3 (-1) "compare"+ Prelude.False+c11v30v11v33showsPrec+ = T.mkVariable tLocale 110030 110033 3 (-1)+ "showsPrec"+ Prelude.False+p = T.mkRoot+tLocale+ = T.mkModule "Locale" "Locale.hs" Prelude.False
Hat/Maybe.hs view
@@ -1,128 +1,168 @@ module Hat.Maybe- (gisJust,aisJust,hisJust,gisNothing,gfromJust,afromJust,hfromJust,gfromMaybe- ,afromMaybe,hfromMaybe,glistToMaybe,alistToMaybe,hlistToMaybe,gmaybeToList- ,amaybeToList,hmaybeToList,gcatMaybes,acatMaybes,hcatMaybes,gmapMaybe- ,amapMaybe,hmapMaybe,Maybe(Nothing,Just),aNothing,aJust,gmaybe,amaybe- ,hmaybe) 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 --gisJust :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Maybe a) Bool)--hisJust :: (T.R (Maybe a)) -> T.RefExp -> T.R Bool-+ (gisJust, aisJust, hisJust, gisNothing, gfromJust,+ afromJust, hfromJust, gfromMaybe, afromMaybe,+ hfromMaybe, glistToMaybe, alistToMaybe, hlistToMaybe,+ gmaybeToList, amaybeToList, hmaybeToList, gcatMaybes,+ acatMaybes, hcatMaybes, gmapMaybe, amapMaybe,+ hmapMaybe, Maybe(Nothing, Just), aNothing, aJust,+ gmaybe, amaybe, hmaybe)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+ +gisJust ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Maybe a) Bool)+ +hisJust :: T.R (Maybe a) -> T.RefExp -> T.R Bool gisJust pisJust p = T.ufun1 aisJust pisJust p hisJust--hisJust (T.R (Just fa) _) p = T.con0 T.mkNoSrcPos p True aTrue-hisJust (T.R Nothing _) p = T.con0 T.mkNoSrcPos p False aFalse+hisJust (T.R (Just fa) _) p+ = T.con0 T.mkNoSrcPos p True aTrue+hisJust (T.R Nothing _) p+ = T.con0 T.mkNoSrcPos p False aFalse hisJust _ p = T.fatal p--gisNothing :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Maybe a) Bool)-+ +gisNothing ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Maybe a) Bool)+ sisNothing :: T.R (T.Fun (Maybe a) Bool)--gisNothing pisNothing p = T.uconstUse pisNothing p sisNothing--sisNothing =- T.uconstDef T.mkRoot aisNothing- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (gnot T.mkNoSrcPos p)- (gisJust T.mkNoSrcPos p))--gfromJust :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Maybe a) a)--hfromJust :: (T.R (Maybe a)) -> T.RefExp -> T.R a--gfromJust pfromJust p = T.ufun1 afromJust pfromJust p hfromJust--hfromJust (T.R (Just fa) _) p = T.projection T.mkNoSrcPos p fa-hfromJust (T.R Nothing _) p =- T.uwrapForward p- (herror (T.fromLitString T.mkNoSrcPos p "Maybe.fromJust: Nothing") p)+gisNothing pisNothing p+ = T.uconstUse pisNothing p sisNothing+sisNothing+ = T.uconstDef p aisNothing+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (gnot T.mkNoSrcPos p)+ (gisJust T.mkNoSrcPos p))+ +gfromJust ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Maybe a) a)+ +hfromJust :: T.R (Maybe a) -> T.RefExp -> T.R a+gfromJust pfromJust p+ = T.ufun1 afromJust pfromJust p hfromJust+hfromJust (T.R (Just fa) _) p+ = T.projection T.mkNoSrcPos p fa+hfromJust (T.R Nothing _) p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "Data.Maybe.fromJust: Nothing")+ p) hfromJust _ p = T.fatal p--gfromMaybe :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun (Maybe a) a))--hfromMaybe :: (T.R a) -> (T.R (Maybe a)) -> T.RefExp -> T.R a--gfromMaybe pfromMaybe p = T.ufun2 afromMaybe pfromMaybe p hfromMaybe--hfromMaybe fd (T.R Nothing _) p = T.projection T.mkNoSrcPos p fd-hfromMaybe fd (T.R (Just fa) _) p = T.projection T.mkNoSrcPos p fa+ +gfromMaybe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun a (T.Fun (Maybe a) a))+ +hfromMaybe ::+ T.R a -> T.R (Maybe a) -> T.RefExp -> T.R a+gfromMaybe pfromMaybe p+ = T.ufun2 afromMaybe pfromMaybe p hfromMaybe+hfromMaybe fd (T.R Nothing _) p+ = T.projection T.mkNoSrcPos p fd+hfromMaybe fd (T.R (Just fa) _) p+ = T.projection T.mkNoSrcPos p fa hfromMaybe _ _ p = T.fatal p--gmaybeToList :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (Maybe a) (T.List a))--hmaybeToList :: (T.R (Maybe a)) -> T.RefExp -> T.R (T.List a)--gmaybeToList pmaybeToList p = T.ufun1 amaybeToList pmaybeToList p hmaybeToList--hmaybeToList (T.R Nothing _) p = T.con0 T.mkNoSrcPos p T.List T.aList-hmaybeToList (T.R (Just fa) _) p = T.fromExpList T.mkNoSrcPos p [fa]+ +gmaybeToList ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (Maybe a) (T.List a))+ +hmaybeToList ::+ T.R (Maybe a) -> T.RefExp -> T.R (T.List a)+gmaybeToList pmaybeToList p+ = T.ufun1 amaybeToList pmaybeToList p hmaybeToList+hmaybeToList (T.R Nothing _) p+ = T.con0 T.mkNoSrcPos p T.Nil T.aNil+hmaybeToList (T.R (Just fa) _) p+ = T.fromExpList T.mkNoSrcPos p [fa] hmaybeToList _ p = T.fatal p--glistToMaybe :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List a) (Maybe a))--hlistToMaybe :: (T.R (T.List a)) -> T.RefExp -> T.R (Maybe a)--glistToMaybe plistToMaybe p = T.ufun1 alistToMaybe plistToMaybe p hlistToMaybe--hlistToMaybe (T.R T.List _) p = T.con0 T.mkNoSrcPos p Nothing aNothing-hlistToMaybe (T.R (T.Cons fa _) _) p = T.con1 T.mkNoSrcPos p Just aJust fa+ +glistToMaybe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.List a) (Maybe a))+ +hlistToMaybe ::+ T.R (T.List a) -> T.RefExp -> T.R (Maybe a)+glistToMaybe plistToMaybe p+ = T.ufun1 alistToMaybe plistToMaybe p hlistToMaybe+hlistToMaybe (T.R T.Nil _) p+ = T.con0 T.mkNoSrcPos p Nothing aNothing+hlistToMaybe (T.R (T.Cons fa _) _) p+ = T.con1 T.mkNoSrcPos p Just aJust fa hlistToMaybe _ p = T.fatal p-+ gcatMaybes ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List (Maybe a)) (T.List a))--hcatMaybes :: (T.R (T.List (Maybe a))) -> T.RefExp -> T.R (T.List a)--gcatMaybes pcatMaybes p = T.ufun1 acatMaybes pcatMaybes p hcatMaybes--hcatMaybes fms p =- T.uap1 T.mkNoSrcPos p- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.g_foldr T.mkNoSrcPos p)- (T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ f_x f_y p ->- T.uccase T.mkNoSrcPos p- (let- v0v0v0v0v1 (T.R (Just fm) _) p =- T.uap1 T.mkNoSrcPos p- (T.pa1 T.Cons T.cn1 T.mkNoSrcPos p T.aCons fm) f_y- v0v0v0v0v1 _ p = T.projection T.mkNoSrcPos p f_y in (v0v0v0v0v1))- f_x)) fms) (T.fromExpList T.mkNoSrcPos p [])-+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.List (Maybe a)) (T.List a))+ +hcatMaybes ::+ T.R (T.List (Maybe a)) -> T.RefExp -> T.R (T.List a)+gcatMaybes pcatMaybes p+ = T.ufun1 acatMaybes pcatMaybes p hcatMaybes+hcatMaybes fms p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fms+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fv35v33v35v41v1 p ->+ T.uccase T.mkNoSrcPos p+ (let v35v33v35v41v1 (T.R (Just fm) _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.greturn T.mkNoSrcPos p)+ fm+ v35v33v35v41v1 _ p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfail T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "pattern-match failure in do-expression")+ in v35v33v35v41v1)+ fv35v33v35v41v1))+ gmapMaybe ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Fun a (Maybe b)) (T.Fun (T.List a) (T.List b)))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (Maybe b))+ (T.Fun (T.List a) (T.List b)))+ hmapMaybe ::- (T.R (T.Fun a (Maybe b))) -> T.RefExp -> T.R (T.Fun (T.List a) (T.List b))--gmapMaybe pmapMaybe p = T.ufun1 amapMaybe pmapMaybe p hmapMaybe--hmapMaybe ff p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (gcatMaybes T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gmap T.mkNoSrcPos p) ff)-+ T.R (T.Fun a (Maybe b)) ->+ T.RefExp -> T.R (T.Fun (T.List a) (T.List b))+gmapMaybe pmapMaybe p+ = T.ufun1 amapMaybe pmapMaybe p hmapMaybe+hmapMaybe ff p+ = T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (gcatMaybes T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gmap T.mkNoSrcPos p) ff)+acatMaybes+ = T.mkVariable tMaybe 350001 350046 3 (1) "catMaybes"+ Prelude.False+afromJust+ = T.mkVariable tMaybe 190001 200062 3 (1) "fromJust"+ Prelude.False+afromMaybe+ = T.mkVariable tMaybe 230001 240027 3 (2) "fromMaybe"+ Prelude.False+aisJust+ = T.mkVariable tMaybe 120001 130031 3 (1) "isJust"+ Prelude.False+aisNothing+ = T.mkVariable tMaybe 160001 160032 3 (0) "isNothing"+ Prelude.False+alistToMaybe+ = T.mkVariable tMaybe 310001 320032 3 (1)+ "listToMaybe"+ Prelude.False+amapMaybe+ = T.mkVariable tMaybe 380001 380043 3 (1) "mapMaybe"+ Prelude.False+amaybeToList+ = T.mkVariable tMaybe 270001 280029 3 (1)+ "maybeToList"+ Prelude.False+p = T.mkRoot tMaybe = T.mkModule "Maybe" "Maybe.hs" Prelude.False--aisJust = T.mkVariable tMaybe 120001 130031 3 1 "isJust" Prelude.False--aisNothing = T.mkVariable tMaybe 160001 160032 3 0 "isNothing" Prelude.False--afromJust = T.mkVariable tMaybe 190001 200057 3 1 "fromJust" Prelude.False--afromMaybe = T.mkVariable tMaybe 230001 240027 3 2 "fromMaybe" Prelude.False--amaybeToList = T.mkVariable tMaybe 270001 280029 3 1 "maybeToList" Prelude.False--alistToMaybe = T.mkVariable tMaybe 310001 320032 3 1 "listToMaybe" Prelude.False--acatMaybes = T.mkVariable tMaybe 350001 350009 3 1 "catMaybes" Prelude.False--amapMaybe = T.mkVariable tMaybe 380001 380043 3 1 "mapMaybe" Prelude.False
Hat/Monad.hs view
@@ -1,433 +1,516 @@ module Hat.Monad- (MonadPlus(gmzero,gmplus,smzero,smplus),gjoin,ajoin,hjoin,gguard,aguard,hguard- ,gwhen,awhen,hwhen,gunless,aunless,hunless,gap,gmsum,amsum,hmsum,gfilterM- ,afilterM,hfilterM,gmapAndUnzipM,amapAndUnzipM,hmapAndUnzipM,gzipWithM- ,azipWithM,hzipWithM,gzipWithM_,azipWithM_,hzipWithM_,gfoldM,afoldM,hfoldM- ,gliftM,aliftM,hliftM,gliftM2,aliftM2,hliftM2,gliftM3,aliftM3,hliftM3- ,gliftM4,aliftM4,hliftM4,gliftM5,aliftM5,hliftM5,Monad((!>>=),(!>>),greturn- ,gfail,(|>>=),(|>>),sreturn,sfail),Functor(gfmap,sfmap),gmapM,amapM,hmapM- ,gmapM_,amapM_,hmapM_,gsequence,gsequence_,(!=<<),(+=<<),(*=<<)) 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 --class Monad m => MonadPlus m- where- - gmzero :: T.RefSrcPos -> T.RefExp -> T.R (m a)- - gmplus :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (m a) (T.Fun (m a) (m a)))- - smzero :: T.R (m a)- - smplus :: T.R (T.Fun (m a) (T.Fun (m a) (m a)))- --instance MonadPlus (Maybe)- where- - gmzero pmzero p = T.uconstUse pmzero p smzero- - smzero =- T.uconstDef T.mkRoot a25v5v25v35mzero- (\ p -> T.con0 T.mkNoSrcPos p Nothing aNothing)- - gmplus pmplus p =- T.ufun2 a27v14v28v18mplus pmplus p hmplus- where- - hmplus (T.R Nothing _) fys p = T.projection T.mkNoSrcPos p fys- hmplus fxs fys p = T.projection T.mkNoSrcPos p fxs- - --instance MonadPlus (T.List)- where- - gmzero pmzero p = T.uconstUse pmzero p smzero- - smzero =- T.uconstDef T.mkRoot a31v5v31v15mzero- (\ p -> T.con0 T.mkNoSrcPos p T.List T.aList)- - gmplus pmplus p = T.uconstUse pmplus p smplus- - smplus = T.uconstDef T.mkRoot a32v5v32v15mplus (\ p -> (T.mkNoSrcPos !++ p))- -+ (MonadPlus(gmzero, gmplus, smzero, smplus), gjoin,+ ajoin, hjoin, gguard, aguard, hguard, gwhen, awhen,+ hwhen, gunless, aunless, hunless, gap, gmsum, amsum,+ hmsum, gfilterM, afilterM, hfilterM, gmapAndUnzipM,+ amapAndUnzipM, hmapAndUnzipM, gzipWithM, azipWithM,+ hzipWithM, gzipWithM_, azipWithM_, hzipWithM_,+ gfoldM, afoldM, hfoldM, gliftM, aliftM, hliftM,+ gliftM2, aliftM2, hliftM2, gliftM3, aliftM3, hliftM3,+ gliftM4, aliftM4, hliftM4, gliftM5, aliftM5, hliftM5,+ Monad((!>>=), (!>>), greturn, gfail, (|>>=), (|>>),+ sreturn, sfail),+ Functor(gfmap, sfmap), gmapM, amapM, hmapM, gmapM_,+ amapM_, hmapM_, gsequence, gsequence_, (!=<<),+ (+=<<), (*=<<))+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+ +class (Monad m) => MonadPlus m where+ + gmzero :: T.RefSrcPos -> T.RefExp -> T.R (m a)+ + smzero :: T.R (m a)+ smzero = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ + gmplus ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (m a) (T.Fun (m a) (m a)))+ + smplus :: T.R (T.Fun (m a) (T.Fun (m a) (m a)))+ smplus = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ +instance MonadPlus Maybe where+ gmzero pmzero p = T.uconstUse pmzero p smzero+ smzero+ = T.uconstDef p c25v5v25v35mzero+ (\ p -> T.con0 T.mkNoSrcPos p Nothing aNothing)+ gmplus pmplus p+ = T.ufun2 c27v5v28v31mplus pmplus p hmplus+ where hmplus (T.R Nothing _) fys p+ = T.projection T.mkNoSrcPos p fys+ hmplus fxs fys p = T.projection T.mkNoSrcPos p fxs+ +instance MonadPlus T.List where+ gmzero pmzero p = T.uconstUse pmzero p smzero+ smzero+ = T.uconstDef p c31v5v31v15mzero+ (\ p -> T.con0 T.mkNoSrcPos p T.Nil T.aNil)+ gmplus pmplus p = T.uconstUse pmplus p smplus+ smplus+ = T.uconstDef p c32v5v32v16mplus+ (\ p -> (!++) T.mkNoSrcPos p)+ gmsum ::- MonadPlus m => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.List (m a)) (m a))--hmsum :: MonadPlus m => (T.R (T.List (m a))) -> T.RefExp -> T.R (m a)-+ (MonadPlus m) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.List (m a)) (m a))+ +hmsum ::+ (MonadPlus m) =>+ T.R (T.List (m a)) -> T.RefExp -> T.R (m a) gmsum pmsum p = T.ufun1 amsum pmsum p hmsum--hmsum fxs p =- T.uwrapForward p- (hfoldr (gmplus T.mkNoSrcPos p) (gmzero T.mkNoSrcPos p) fxs p)--gjoin :: Monad m => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (m (m a)) (m a))--hjoin :: Monad m => (T.R (m (m a))) -> T.RefExp -> T.R (m a)-+hmsum fxs p+ = T.uwrapForward p+ (hfoldr (gmplus T.mkNoSrcPos p)+ (gmzero T.mkNoSrcPos p)+ fxs+ p)+ +gjoin ::+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (m (m a)) (m a))+ +hjoin ::+ (Monad m) => T.R (m (m a)) -> T.RefExp -> T.R (m a) gjoin pjoin p = T.ufun1 ajoin pjoin p hjoin--hjoin fx p = T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>>= p) fx (gid T.mkNoSrcPos p)-+hjoin fx p+ = T.uap2 T.mkNoSrcPos p ((!>>=) T.mkNoSrcPos p) fx+ (gid T.mkNoSrcPos p)+ gwhen ::- Monad m =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Bool (T.Fun (m T.Tuple0) (m T.Tuple0)))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Bool (T.Fun (m T.Tuple0) (m T.Tuple0)))+ hwhen ::- Monad m => (T.R Bool) -> (T.R (m T.Tuple0)) -> T.RefExp -> T.R (m T.Tuple0)-+ (Monad m) =>+ T.R Bool ->+ T.R (m T.Tuple0) -> T.RefExp -> T.R (m T.Tuple0) gwhen pwhen p = T.ufun2 awhen pwhen p hwhen--hwhen fp fs p =- T.ucif p fp (T.projection T.mkNoSrcPos p fs)- (T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0))-+hwhen fp fs p+ = T.ucif p fp (T.projection T.mkNoSrcPos p fs)+ (T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0))+ gunless ::- Monad m =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Bool (T.Fun (m T.Tuple0) (m T.Tuple0)))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Bool (T.Fun (m T.Tuple0) (m T.Tuple0)))+ hunless ::- Monad m => (T.R Bool) -> (T.R (m T.Tuple0)) -> T.RefExp -> T.R (m T.Tuple0)-+ (Monad m) =>+ T.R Bool ->+ T.R (m T.Tuple0) -> T.RefExp -> T.R (m T.Tuple0) gunless punless p = T.ufun2 aunless punless p hunless--hunless fp fs p = T.uwrapForward p (hwhen (T.uwrapForward p (hnot fp p)) fs p)-+hunless fp fs p+ = T.uwrapForward p+ (hwhen (T.uwrapForward p (hnot fp p)) fs p)+ gap ::- Monad m =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (m (T.Fun a b)) (T.Fun (m a) (m b)))--sap :: Monad m => T.R (T.Fun (m (T.Fun a b)) (T.Fun (m a) (m b)))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (m (T.Fun a b)) (T.Fun (m a) (m b)))+ +sap ::+ (Monad m) =>+ T.R (T.Fun (m (T.Fun a b)) (T.Fun (m a) (m b))) gap pap p = T.uconstUse pap p sap--sap =- T.uconstDef T.mkRoot aap- (\ p -> T.uwrapForward p (hliftM2 (T.mkNoSrcPos !$ p) p))-+sap+ = T.uconstDef p aap+ (\ p ->+ T.uwrapForward p (hliftM2 ((!$) T.mkNoSrcPos p) p))+ gguard ::- MonadPlus m => T.RefSrcPos -> T.RefExp -> T.R (T.Fun Bool (m T.Tuple0))--hguard :: MonadPlus m => (T.R Bool) -> T.RefExp -> T.R (m T.Tuple0)-+ (MonadPlus m) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Bool (m T.Tuple0))+ +hguard ::+ (MonadPlus m) =>+ T.R Bool -> T.RefExp -> T.R (m T.Tuple0) gguard pguard p = T.ufun1 aguard pguard p hguard--hguard fp p =- T.ucif p fp- (T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0)) (gmzero T.mkNoSrcPos p)-+hguard fp p+ = T.ucif p fp+ (T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0))+ (gmzero T.mkNoSrcPos p)+ gmapAndUnzipM ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (m (T.Tuple2 b c)))- (T.Fun (T.List a) (m (T.Tuple2 (T.List b) (T.List c)))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (m (T.Tuple2 b c)))+ (T.Fun (T.List a)+ (m (T.Tuple2 (T.List b) (T.List c)))))+ hmapAndUnzipM ::- Monad m =>- (T.R (T.Fun a (m (T.Tuple2 b c)))) ->- (T.R (T.List a)) -> T.RefExp -> T.R (m (T.Tuple2 (T.List b) (T.List c)))--gmapAndUnzipM pmapAndUnzipM p =- T.ufun2 amapAndUnzipM pmapAndUnzipM p hmapAndUnzipM--hmapAndUnzipM ff fxs p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>>= p)- (T.uap1 T.mkNoSrcPos p (gsequence T.mkNoSrcPos p)- (T.uwrapForward p (hmap ff fxs p)))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (greturn T.mkNoSrcPos p)- (gunzip T.mkNoSrcPos p))-+ (Monad m) =>+ T.R (T.Fun a (m (T.Tuple2 b c))) ->+ T.R (T.List a) ->+ T.RefExp -> T.R (m (T.Tuple2 (T.List b) (T.List c)))+gmapAndUnzipM pmapAndUnzipM p+ = T.ufun2 amapAndUnzipM pmapAndUnzipM p hmapAndUnzipM+hmapAndUnzipM ff fxs p+ = T.uap2 T.mkNoSrcPos p ((!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gsequence T.mkNoSrcPos p)+ (T.uwrapForward p (hmap ff fxs p)))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (greturn T.mkNoSrcPos p)+ (gunzip T.mkNoSrcPos p))+ gzipWithM ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (m c)))- (T.Fun (T.List a) (T.Fun (T.List b) (m (T.List c)))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (m c)))+ (T.Fun (T.List a) (T.Fun (T.List b) (m (T.List c)))))+ hzipWithM ::- Monad m =>- (T.R (T.Fun a (T.Fun b (m c)))) ->- (T.R (T.List a)) -> (T.R (T.List b)) -> T.RefExp -> T.R (m (T.List c))--gzipWithM pzipWithM p = T.ufun3 azipWithM pzipWithM p hzipWithM--hzipWithM ff fxs fys p =- T.uap1 T.mkNoSrcPos p (gsequence T.mkNoSrcPos p)- (T.uwrapForward p (hzipWith ff fxs fys p))-+ (Monad m) =>+ T.R (T.Fun a (T.Fun b (m c))) ->+ T.R (T.List a) ->+ T.R (T.List b) -> T.RefExp -> T.R (m (T.List c))+gzipWithM pzipWithM p+ = T.ufun3 azipWithM pzipWithM p hzipWithM+hzipWithM ff fxs fys p+ = T.uap1 T.mkNoSrcPos p (gsequence T.mkNoSrcPos p)+ (T.uwrapForward p (hzipWith ff fxs fys p))+ gzipWithM_ ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (m c)))- (T.Fun (T.List a) (T.Fun (T.List b) (m T.Tuple0))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (m c)))+ (T.Fun (T.List a) (T.Fun (T.List b) (m T.Tuple0))))+ hzipWithM_ ::- Monad m =>- (T.R (T.Fun a (T.Fun b (m c)))) ->- (T.R (T.List a)) -> (T.R (T.List b)) -> T.RefExp -> T.R (m T.Tuple0)--gzipWithM_ pzipWithM_ p = T.ufun3 azipWithM_ pzipWithM_ p hzipWithM_--hzipWithM_ ff fxs fys p =- T.uap1 T.mkNoSrcPos p (gsequence_ T.mkNoSrcPos p)- (T.uwrapForward p (hzipWith ff fxs fys p))-+ (Monad m) =>+ T.R (T.Fun a (T.Fun b (m c))) ->+ T.R (T.List a) ->+ T.R (T.List b) -> T.RefExp -> T.R (m T.Tuple0)+gzipWithM_ pzipWithM_ p+ = T.ufun3 azipWithM_ pzipWithM_ p hzipWithM_+hzipWithM_ ff fxs fys p+ = T.uap1 T.mkNoSrcPos p (gsequence_ T.mkNoSrcPos p)+ (T.uwrapForward p (hzipWith ff fxs fys p))+ gfoldM ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (T.Fun a (T.Fun b (m a))) (T.Fun a (T.Fun (T.List b) (m a))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (m a)))+ (T.Fun a (T.Fun (T.List b) (m a))))+ hfoldM ::- Monad m =>- (T.R (T.Fun a (T.Fun b (m a)))) ->- (T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R (m a)-+ (Monad m) =>+ T.R (T.Fun a (T.Fun b (m a))) ->+ T.R a -> T.R (T.List b) -> T.RefExp -> T.R (m a) gfoldM pfoldM p = T.ufun3 afoldM pfoldM p hfoldM--hfoldM ff fa (T.R T.List _) p =- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p) fa-hfoldM ff fa (T.R (T.Cons fx fxs) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>>= p) (T.uap2 T.mkNoSrcPos p ff fa fx)- (T.ufun1 T.mkLambda T.mkNoSrcPos p- (\ fy p -> T.uwrapForward p (hfoldM ff fy fxs p)))+hfoldM ff fa (T.R T.Nil _) p+ = T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p) fa+hfoldM ff fa (T.R (T.Cons fx fxs) _) p+ = T.uap2 T.mkNoSrcPos p ((!>>=) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ff fa fx)+ (T.ufun1 T.mkLambda T.mkNoSrcPos p+ (\ fy p -> T.uwrapForward p (hfoldM ff fy fxs p))) hfoldM _ _ _ p = T.fatal p-+ gfilterM ::- Monad m =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Fun a (m Bool)) (T.Fun (T.List a) (m (T.List a))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (m Bool))+ (T.Fun (T.List a) (m (T.List a))))+ hfilterM ::- Monad m =>- (T.R (T.Fun a (m Bool))) -> (T.R (T.List a)) -> T.RefExp -> T.R (m (T.List a))--gfilterM pfilterM p = T.ufun2 afilterM pfilterM p hfilterM--hfilterM fp (T.R T.List _) p =- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p T.List T.aList)-hfilterM fp (T.R (T.Cons fx fxs) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p)- (T.uap1 T.mkNoSrcPos p fp fx)- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fb p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p)- (T.uwrapForward p (hfilterM fp fxs p))- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fys p ->- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.ucif p fb (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx fys)- (T.projection T.mkNoSrcPos p fys))))))+ (Monad m) =>+ T.R (T.Fun a (m Bool)) ->+ T.R (T.List a) -> T.RefExp -> T.R (m (T.List a))+gfilterM pfilterM p+ = T.ufun2 afilterM pfilterM p hfilterM+hfilterM fp (T.R T.Nil _) p+ = T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p T.Nil T.aNil)+hfilterM fp (T.R (T.Cons fx fxs) _) p+ = T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p fp fx)+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fb p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ (T.uwrapForward p (hfilterM fp fxs p))+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fys p ->+ T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.ucif p fb+ (T.con2 T.mkNoSrcPos p T.Cons T.aCons fx fys)+ (T.projection T.mkNoSrcPos p fys)))))) hfilterM _ _ p = T.fatal p-+ gliftM ::- Monad m =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Fun a b) (T.Fun (m a) (m b)))--hliftM :: Monad m => (T.R (T.Fun a b)) -> T.RefExp -> T.R (T.Fun (m a) (m b))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.Fun a b) (T.Fun (m a) (m b)))+ +hliftM ::+ (Monad m) =>+ T.R (T.Fun a b) ->+ T.RefExp -> T.R (T.Fun (m a) (m b)) gliftM pliftM p = T.ufun1 aliftM pliftM p hliftM--hliftM ff p =- T.ufun1 T.mkLambda T.mkNoSrcPos p- (\ fa p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fa- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fa' p ->- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p ff fa'))))-+hliftM ff p+ = T.ufun1 T.mkLambda T.mkNoSrcPos p+ (\ fa p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fa+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fa' p ->+ T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p ff fa'))))+ gliftM2 ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun (T.Fun a (T.Fun b c)) (T.Fun (m a) (T.Fun (m b) (m c))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b c))+ (T.Fun (m a) (T.Fun (m b) (m c))))+ hliftM2 ::- Monad m =>- (T.R (T.Fun a (T.Fun b c))) ->- T.RefExp -> T.R (T.Fun (m a) (T.Fun (m b) (m c)))-+ (Monad m) =>+ T.R (T.Fun a (T.Fun b c)) ->+ T.RefExp -> T.R (T.Fun (m a) (T.Fun (m b) (m c))) gliftM2 pliftM2 p = T.ufun1 aliftM2 pliftM2 p hliftM2--hliftM2 ff p =- T.ufun2 T.mkLambda T.mkNoSrcPos p- (\ fa fb p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fa- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fa' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fb- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fb' p ->- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p ff fa' fb'))))))-+hliftM2 ff p+ = T.ufun2 T.mkLambda T.mkNoSrcPos p+ (\ fa fb p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fa+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fa' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fb+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fb' p ->+ T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ff fa' fb'))))))+ gliftM3 ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (T.Fun c d)))- (T.Fun (m a) (T.Fun (m b) (T.Fun (m c) (m d)))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (T.Fun c d)))+ (T.Fun (m a) (T.Fun (m b) (T.Fun (m c) (m d)))))+ hliftM3 ::- Monad m =>- (T.R (T.Fun a (T.Fun b (T.Fun c d)))) ->- T.RefExp -> T.R (T.Fun (m a) (T.Fun (m b) (T.Fun (m c) (m d))))-+ (Monad m) =>+ T.R (T.Fun a (T.Fun b (T.Fun c d))) ->+ T.RefExp ->+ T.R (T.Fun (m a) (T.Fun (m b) (T.Fun (m c) (m d)))) gliftM3 pliftM3 p = T.ufun1 aliftM3 pliftM3 p hliftM3--hliftM3 ff p =- T.ufun3 T.mkLambda T.mkNoSrcPos p- (\ fa fb fc p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fa- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fa' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fb- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fb' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fc- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fc' p ->- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.uap3 T.mkNoSrcPos p ff fa' fb' fc'))))))))-+hliftM3 ff p+ = T.ufun3 T.mkLambda T.mkNoSrcPos p+ (\ fa fb fc p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fa+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fa' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fb+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fb' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fc+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fc' p ->+ T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)+ (T.uap3 T.mkNoSrcPos p ff fa' fb' fc'))))))))+ gliftM4 ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (T.Fun c (T.Fun d e))))- (T.Fun (m a) (T.Fun (m b) (T.Fun (m c) (T.Fun (m d) (m e))))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Fun a (T.Fun b (T.Fun c (T.Fun d e))))+ (T.Fun (m a)+ (T.Fun (m b) (T.Fun (m c) (T.Fun (m d) (m e))))))+ hliftM4 ::- Monad m =>- (T.R (T.Fun a (T.Fun b (T.Fun c (T.Fun d e))))) ->- T.RefExp ->- T.R (T.Fun (m a) (T.Fun (m b) (T.Fun (m c) (T.Fun (m d) (m e)))))-+ (Monad m) =>+ T.R (T.Fun a (T.Fun b (T.Fun c (T.Fun d e)))) ->+ T.RefExp ->+ T.R+ (T.Fun (m a)+ (T.Fun (m b) (T.Fun (m c) (T.Fun (m d) (m e))))) gliftM4 pliftM4 p = T.ufun1 aliftM4 pliftM4 p hliftM4--hliftM4 ff p =- T.ufun4 T.mkLambda T.mkNoSrcPos p- (\ fa fb fc fd p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fa- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fa' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fb- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fb' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fc- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fc' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p)- fd- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fd' p ->- T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)- (T.uap4 T.mkNoSrcPos p ff fa' fb' fc'- fd'))))))))))-+hliftM4 ff p+ = T.ufun4 T.mkLambda T.mkNoSrcPos p+ (\ fa fb fc fd p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fa+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fa' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fb+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fb' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fc+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fc' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fd+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fd' p ->+ T.uap1 T.mkNoSrcPos p+ (greturn T.mkNoSrcPos p)+ (T.uap4 T.mkNoSrcPos p ff fa' fb' fc'+ fd'))))))))))+ gliftM5 ::- Monad m =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e f)))))- (T.Fun (m a)- (T.Fun (m b) (T.Fun (m c) (T.Fun (m d) (T.Fun (m e) (m f)))))))-+ (Monad m) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun+ (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e f)))))+ (T.Fun (m a)+ (T.Fun (m b)+ (T.Fun (m c) (T.Fun (m d) (T.Fun (m e) (m f)))))))+ hliftM5 ::- Monad m =>- (T.R (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e f)))))) ->- T.RefExp ->- T.R- (T.Fun (m a)- (T.Fun (m b) (T.Fun (m c) (T.Fun (m d) (T.Fun (m e) (m f))))))-+ (Monad m) =>+ T.R+ (T.Fun a (T.Fun b (T.Fun c (T.Fun d (T.Fun e f)))))+ ->+ T.RefExp ->+ T.R+ (T.Fun (m a)+ (T.Fun (m b)+ (T.Fun (m c) (T.Fun (m d) (T.Fun (m e) (m f)))))) gliftM5 pliftM5 p = T.ufun1 aliftM5 pliftM5 p hliftM5--hliftM5 ff p =- T.ufun5 T.mkLambda T.mkNoSrcPos p- (\ fa fb fc fd fe p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fa- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fa' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fb- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fb' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p) fc- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fc' p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>>= p)- fd- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fd' p ->- T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!>>= p) fe- (T.ufun1 T.mkDoLambda T.mkNoSrcPos p- (\ fe' p ->- T.uap1 T.mkNoSrcPos p- (greturn T.mkNoSrcPos p)- (T.uap5 T.mkNoSrcPos p ff fa' fb' fc' fd'- fe'))))))))))))-+hliftM5 ff p+ = T.ufun5 T.mkLambda T.mkNoSrcPos p+ (\ fa fb fc fd fe p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fa+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fa' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fb+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fb' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fc+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fc' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos p)+ fd+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fd' p ->+ T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!>>=) T.mkNoSrcPos+ p)+ fe+ (T.ufun1 T.mkDoLambda T.mkNoSrcPos p+ (\ fe' p ->+ T.uap1 T.mkNoSrcPos p+ (greturn T.mkNoSrcPos p)+ (T.uap5 T.mkNoSrcPos p ff fa'+ fb'+ fc'+ fd'+ fe'))))))))))))+aap+ = T.mkVariable tMonad 510001 510030 3 (0) "ap"+ Prelude.False+afilterM+ = T.mkVariable tMonad 700001 740004 3 (2) "filterM"+ Prelude.False+afoldM+ = T.mkVariable tMonad 660001 670049 3 (3) "foldM"+ Prelude.False+aguard+ = T.mkVariable tMonad 540001 540050 3 (1) "guard"+ Prelude.False+ajoin+ = T.mkVariable tMonad 420001 420028 3 (1) "join"+ Prelude.False+aliftM+ = T.mkVariable tMonad 770001 770055 3 (1) "liftM"+ Prelude.False+aliftM2+ = T.mkVariable tMonad 800001 800069 3 (1) "liftM2"+ Prelude.False+aliftM3+ = T.mkVariable tMonad 840001 850024 3 (1) "liftM3"+ Prelude.False+aliftM4+ = T.mkVariable tMonad 890001 900029 3 (1) "liftM4"+ Prelude.False+aliftM5+ = T.mkVariable tMonad 940001 950043 3 (1) "liftM5"+ Prelude.False+amapAndUnzipM+ = T.mkVariable tMonad 570001 570058 3 (2)+ "mapAndUnzipM"+ Prelude.False+amsum+ = T.mkVariable tMonad 390001 390032 3 (1) "msum"+ Prelude.False+aunless+ = T.mkVariable tMonad 480001 480034 3 (2) "unless"+ Prelude.False+awhen+ = T.mkVariable tMonad 450001 450046 3 (2) "when"+ Prelude.False+azipWithM+ = T.mkVariable tMonad 600001 600046 3 (3) "zipWithM"+ Prelude.False+azipWithM_+ = T.mkVariable tMonad 630001 630048 3 (3) "zipWithM_"+ Prelude.False+c27v5v28v31mplus+ = T.mkVariable tMonad 270005 280031 3 (-1) "mplus"+ Prelude.False+c25v5v25v35mzero+ = T.mkVariable tMonad 250005 250035 3 (-1) "mzero"+ Prelude.False+c32v5v32v16mplus+ = T.mkVariable tMonad 320005 320016 3 (-1) "mplus"+ Prelude.False+c31v5v31v15mzero+ = T.mkVariable tMonad 310005 310015 3 (-1) "mzero"+ Prelude.False+p = T.mkRoot tMonad = T.mkModule "Monad" "Monad.hs" Prelude.False--amsum = T.mkVariable tMonad 390001 390032 3 1 "msum" Prelude.False--ajoin = T.mkVariable tMonad 420001 420028 3 1 "join" Prelude.False--awhen = T.mkVariable tMonad 450001 450047 3 2 "when" Prelude.False--aunless = T.mkVariable tMonad 480001 480034 3 2 "unless" Prelude.False--aap = T.mkVariable tMonad 510001 510029 3 0 "ap" Prelude.False--aguard = T.mkVariable tMonad 540001 540051 3 1 "guard" Prelude.False--amapAndUnzipM =- T.mkVariable tMonad 570001 570058 3 2 "mapAndUnzipM" Prelude.False--azipWithM = T.mkVariable tMonad 600001 600045 3 3 "zipWithM" Prelude.False--azipWithM_ = T.mkVariable tMonad 630001 630047 3 3 "zipWithM_" Prelude.False--afoldM = T.mkVariable tMonad 660001 670049 3 3 "foldM" Prelude.False--afilterM = T.mkVariable tMonad 700001 730032 3 2 "filterM" Prelude.False--aliftM = T.mkVariable tMonad 770001 770052 3 1 "liftM" Prelude.False--aliftM2 = T.mkVariable tMonad 800001 800066 3 1 "liftM2" Prelude.False--aliftM3 = T.mkVariable tMonad 840001 850021 3 1 "liftM3" Prelude.False--aliftM4 = T.mkVariable tMonad 890001 900026 3 1 "liftM4" Prelude.False--aliftM5 = T.mkVariable tMonad 940001 950040 3 1 "liftM5" Prelude.False--a25v5v25v35mzero = T.mkVariable tMonad 250005 250035 3 0 "mzero" Prelude.False--a27v14v28v18mplus = T.mkVariable tMonad 270014 280018 3 2 "mplus" Prelude.False--a31v5v31v15mzero = T.mkVariable tMonad 310005 310015 3 0 "mzero" Prelude.False--a32v5v32v15mplus = T.mkVariable tMonad 320005 320015 3 0 "mplus" Prelude.False
Hat/Numeric.hs view
@@ -1,18 +1,21 @@ module Hat.Numeric- (gfromRat,afromRat,hfromRat,gshowSigned,ashowSigned,hshowSigned,gshowIntAtBase- ,ashowIntAtBase,hshowIntAtBase,gshowInt,gshowOct,gshowHex,greadSigned- ,areadSigned,hreadSigned,greadInt,areadInt,hreadInt,greadDec,greadOct- ,greadHex,gfloatToDigits,afloatToDigits,hfloatToDigits,gshowEFloat- ,ashowEFloat,hshowEFloat,gshowFFloat,ashowFFloat,hshowFFloat,gshowGFloat- ,ashowGFloat,hshowGFloat,gshowFloat,greadFloat,areadFloat,hreadFloat- ,glexDigits) 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.PreludeBasic --tNumeric = T.mkModule "Numeric" "Numeric.hs" Prelude.False+ (gfromRat, afromRat, hfromRat, gshowSigned,+ ashowSigned, hshowSigned, gshowIntAtBase,+ ashowIntAtBase, hshowIntAtBase, gshowInt, gshowOct,+ gshowHex, greadSigned, areadSigned, hreadSigned,+ greadInt, areadInt, hreadInt, greadDec, greadOct,+ greadHex, gfloatToDigits, afloatToDigits,+ hfloatToDigits, gshowEFloat, ashowEFloat,+ hshowEFloat, gshowFFloat, ashowFFloat, hshowFFloat,+ gshowGFloat, ashowGFloat, hshowGFloat, gshowFloat,+ greadFloat, areadFloat, hreadFloat, glexDigits)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBasic+p = T.mkRoot+tNumeric+ = T.mkModule "Numeric" "Numeric.hs" Prelude.False
Hat/Prelude.hs view
@@ -1,65 +1,105 @@ module Hat.Prelude- (g_filter,a_filter,h_filter,g_foldr,a_foldr,h_foldr,gmap,amap,hmap,(!++),(+++)- ,(*++),gfilter,afilter,hfilter,gconcat,aconcat,hconcat,ghead,ahead,hhead- ,glast,alast,hlast,gtail,atail,htail,ginit,ainit,hinit,gnull,anull,hnull- ,glength,alength,hlength,(!!!),(+!!),(*!!),gfoldl,afoldl,hfoldl,gfoldl1- ,afoldl1,hfoldl1,gscanl,ascanl,hscanl,gscanl1,ascanl1,hscanl1,gfoldr,afoldr- ,hfoldr,gfoldr1,afoldr1,hfoldr1,gscanr,ascanr,hscanr,gscanr1,ascanr1,hscanr1- ,giterate,aiterate,hiterate,grepeat,arepeat,hrepeat,greplicate,areplicate- ,hreplicate,gcycle,acycle,hcycle,gtake,atake,htake,gdrop,adrop,hdrop- ,gsplitAt,asplitAt,hsplitAt,gtakeWhile,atakeWhile,htakeWhile,gdropWhile- ,adropWhile,hdropWhile,gspan,aspan,hspan,gbreak,abreak,hbreak,glines,alines- ,hlines,gwords,awords,hwords,gunlines,gunwords,aunwords,hunwords,greverse- ,gand,gor,gany,aany,hany,gall,aall,hall,gelem,aelem,helem,gnotElem,anotElem- ,hnotElem,glookup,alookup,hlookup,gsum,gproduct,gmaximum,amaximum,hmaximum- ,gminimum,aminimum,hminimum,gconcatMap,aconcatMap,hconcatMap,gzip,gzip3- ,gzipWith,azipWith,hzipWith,gzipWith3,azipWith3,hzipWith3,gunzip,gunzip3- ,ReadS(),ReadS___1(),ReadS___2(),ShowS(),ShowS___1(),ShowS___2()- ,Read(greadsPrec,greadList,sreadsPrec,sreadList),Show(gshowsPrec,gshow- ,gshowList,sshowsPrec,sshow,sshowList),greads,gshows,gread,aread,hread- ,glex,alex,hlex,gshowChar,gshowString,greadParen,areadParen,hreadParen- ,gshowParen,ashowParen,hshowParen,FilePath(),IOError(),gioError,aioError- ,hioError,guserError,auserError,huserError,gcatch,acatch,hcatch,gputChar- ,aputChar,hputChar,gputStr,aputStr,hputStr,gputStrLn,aputStrLn,hputStrLn- ,gprint,aprint,hprint,ggetChar,ggetLine,ggetContents,ginteract,ainteract- ,hinteract,greadFile,areadFile,hreadFile,gwriteFile,awriteFile,hwriteFile- ,gappendFile,aappendFile,happendFile,greadIO,areadIO,hreadIO,greadLn- ,Bool(False,True),aFalse,aTrue,Maybe(Nothing,Just),aNothing,aJust- ,Either(Left,Right),aLeft,aRight,Ordering(LT,EQ,GT),aLT,aEQ,aGT,Char()- ,String(),Int(),Integer(),Float(),Double(),Rational(),IO(),Eq((!==),(!/=)- ,(|==),(|/=)),Ord(gcompare,(!<),(!<=),(!>=),(!>),gmax,gmin,scompare,(|<)- ,(|<=),(|>=),(|>),smax,smin),Enum(gsucc,gpred,gtoEnum,gfromEnum,genumFrom- ,genumFromThen,genumFromTo,genumFromThenTo,ssucc,spred,stoEnum,sfromEnum- ,senumFrom,senumFromThen,senumFromTo,senumFromThenTo),Bounded(gminBound- ,gmaxBound,sminBound,smaxBound),Num((!+),(!-),(!*),gnegate,gabs,gsignum- ,gfromInteger,(|+),(|-),(|*),snegate,sabs,ssignum,sfromInteger)- ,Real(gtoRational,stoRational),Integral(gquot,grem,gdiv,gmod,gquotRem- ,gdivMod,gtoInteger,squot,srem,sdiv,smod,squotRem,sdivMod,stoInteger)- ,Fractional((!/),grecip,gfromRational,(|/),srecip,sfromRational)- ,Floating(gpi,gexp,glog,gsqrt,(!**),glogBase,gsin,gcos,gtan,gasin,gacos- ,gatan,gsinh,gcosh,gtanh,gasinh,gacosh,gatanh,spi,sexp,slog,ssqrt,(|**)- ,slogBase,ssin,scos,stan,sasin,sacos,satan,ssinh,scosh,stanh,sasinh,sacosh- ,satanh),RealFrac(gproperFraction,gtruncate,ground,gceiling,gfloor- ,sproperFraction,struncate,sround,sceiling,sfloor),RealFloat(gfloatRadix- ,gfloatDigits,gfloatRange,gdecodeFloat,gencodeFloat,gexponent,gsignificand- ,gscaleFloat,gisNaN,gisInfinite,gisDenormalized,gisIEEE,gisNegativeZero- ,gatan2,sfloatRadix,sfloatDigits,sfloatRange,sdecodeFloat,sencodeFloat- ,sexponent,ssignificand,sscaleFloat,sisNaN,sisInfinite,sisDenormalized- ,sisIEEE,sisNegativeZero,satan2),Monad((!>>=),(!>>),greturn,gfail,(|>>=)- ,(|>>),sreturn,sfail),Functor(gfmap,sfmap),gmapM,amapM,hmapM,gmapM_,amapM_- ,hmapM_,gsequence,gsequence_,(!=<<),(+=<<),(*=<<),gmaybe,amaybe,hmaybe- ,geither,aeither,heither,(!&&),(+&&),(*&&),(!||),(+||),(*||),gnot,anot,hnot- ,gotherwise,gsubtract,geven,aeven,heven,godd,ggcd,agcd,hgcd,glcm,alcm,hlcm- ,(!^),(+^),(*^),(!^^),(+^^),(*^^),gfromIntegral,grealToFrac,gfst,afst,hfst- ,gsnd,asnd,hsnd,gcurry,acurry,hcurry,guncurry,auncurry,huncurry,gid,aid,hid- ,gconst,aconst,hconst,(!.),(+.),(*.),gflip,aflip,hflip,(!$),(+$),(*$),guntil- ,auntil,huntil,gasTypeOf,gerror,aerror,herror,gundefined,gseq,aseq,hseq- ,(!$!),(+$!),(*$!)) where--import qualified Prelude -import Hat.Hack -import qualified Hat.Hat as T -import Hat.Hat (WrapVal(wrapVal))-import Hat.PreludeBasic --tPrelude = T.mkModule "Prelude" "Prelude.hs" Prelude.False+ (g_filter, a_filter, h_filter, g_foldr, a_foldr,+ h_foldr, gmap, amap, hmap, (!++), (+++), (*++),+ gfilter, afilter, hfilter, gconcat, aconcat, hconcat,+ ghead, ahead, hhead, glast, alast, hlast, gtail,+ atail, htail, ginit, ainit, hinit, gnull, anull,+ hnull, glength, alength, hlength, (!!!), (+!!),+ (*!!), gfoldl, afoldl, hfoldl, gfoldl1, afoldl1,+ hfoldl1, gscanl, ascanl, hscanl, gscanl1, ascanl1,+ hscanl1, gfoldr, afoldr, hfoldr, gfoldr1, afoldr1,+ hfoldr1, gscanr, ascanr, hscanr, gscanr1, ascanr1,+ hscanr1, giterate, aiterate, hiterate, grepeat,+ arepeat, hrepeat, greplicate, areplicate, hreplicate,+ gcycle, acycle, hcycle, gtake, atake, htake, gdrop,+ adrop, hdrop, gsplitAt, asplitAt, hsplitAt,+ gtakeWhile, atakeWhile, htakeWhile, gdropWhile,+ adropWhile, hdropWhile, gspan, aspan, hspan, gbreak,+ abreak, hbreak, glines, alines, hlines, gwords,+ awords, hwords, gunlines, gunwords, aunwords,+ hunwords, greverse, gand, gor, gany, aany, hany,+ gall, aall, hall, gelem, aelem, helem, gnotElem,+ anotElem, hnotElem, glookup, alookup, hlookup, gsum,+ gproduct, gmaximum, amaximum, hmaximum, gminimum,+ aminimum, hminimum, gconcatMap, aconcatMap,+ hconcatMap, gzip, gzip3, gzipWith, azipWith,+ hzipWith, gzipWith3, azipWith3, hzipWith3, gunzip,+ gunzip3, ReadS, ReadS___1, ReadS___2, ShowS,+ ShowS___1, ShowS___2,+ Read(greadsPrec, greadList, sreadsPrec, sreadList),+ Show(gshowsPrec, gshow, gshowList, sshowsPrec, sshow,+ sshowList),+ greads, gshows, gread, aread, hread, glex, alex,+ hlex, gshowChar, gshowString, greadParen, areadParen,+ hreadParen, gshowParen, ashowParen, hshowParen,+ FilePath, IOError, gioError, aioError, hioError,+ guserError, auserError, huserError, gcatch, acatch,+ hcatch, gputChar, aputChar, hputChar, gputStr,+ aputStr, hputStr, gputStrLn, aputStrLn, hputStrLn,+ gprint, aprint, hprint, ggetChar, ggetLine,+ ggetContents, ginteract, ainteract, hinteract,+ greadFile, areadFile, hreadFile, gwriteFile,+ awriteFile, hwriteFile, gappendFile, aappendFile,+ happendFile, greadIO, areadIO, hreadIO, greadLn,+ Bool(False, True), aFalse, aTrue,+ Maybe(Nothing, Just), aNothing, aJust,+ Either(Left, Right), aLeft, aRight,+ Ordering(LT, EQ, GT), aLT, aEQ, aGT, Char, String,+ Int, Integer, Float, Double, Rational, IO,+ Eq((!==), (!/=), (|==), (|/=)),+ Ord(gcompare, (!<), (!<=), (!>=), (!>), gmax, gmin,+ scompare, (|<), (|<=), (|>=), (|>), smax, smin),+ Enum(gsucc, gpred, gtoEnum, gfromEnum, genumFrom,+ genumFromThen, genumFromTo, genumFromThenTo, ssucc,+ spred, stoEnum, sfromEnum, senumFrom, senumFromThen,+ senumFromTo, senumFromThenTo),+ Bounded(gminBound, gmaxBound, sminBound, smaxBound),+ Num((!+), (!-), (!*), gnegate, gabs, gsignum,+ gfromInteger, (|+), (|-), (|*), snegate, sabs,+ ssignum, sfromInteger),+ Real(gtoRational, stoRational),+ Integral(gquot, grem, gdiv, gmod, gquotRem, gdivMod,+ gtoInteger, squot, srem, sdiv, smod, squotRem,+ sdivMod, stoInteger),+ Fractional((!/), grecip, gfromRational, (|/), srecip,+ sfromRational),+ Floating(gpi, gexp, glog, gsqrt, (!**), glogBase,+ gsin, gcos, gtan, gasin, gacos, gatan, gsinh, gcosh,+ gtanh, gasinh, gacosh, gatanh, spi, sexp, slog,+ ssqrt, (|**), slogBase, ssin, scos, stan, sasin,+ sacos, satan, ssinh, scosh, stanh, sasinh, sacosh,+ satanh),+ RealFrac(gproperFraction, gtruncate, ground,+ gceiling, gfloor, sproperFraction, struncate, sround,+ sceiling, sfloor),+ RealFloat(gfloatRadix, gfloatDigits, gfloatRange,+ gdecodeFloat, gencodeFloat, gexponent, gsignificand,+ gscaleFloat, gisNaN, gisInfinite, gisDenormalized,+ gisIEEE, gisNegativeZero, gatan2, sfloatRadix,+ sfloatDigits, sfloatRange, sdecodeFloat,+ sencodeFloat, sexponent, ssignificand, sscaleFloat,+ sisNaN, sisInfinite, sisDenormalized, sisIEEE,+ sisNegativeZero, satan2),+ Monad((!>>=), (!>>), greturn, gfail, (|>>=), (|>>),+ sreturn, sfail),+ Functor(gfmap, sfmap), gmapM, amapM, hmapM, gmapM_,+ amapM_, hmapM_, gsequence, gsequence_, (!=<<),+ (+=<<), (*=<<), gmaybe, amaybe, hmaybe, geither,+ aeither, heither, (!&&), (+&&), (*&&), (!||), (+||),+ (*||), gnot, anot, hnot, gotherwise, gsubtract,+ geven, aeven, heven, godd, ggcd, agcd, hgcd, glcm,+ alcm, hlcm, (!^), (+^), (*^), (!^^), (+^^), (*^^),+ gfromIntegral, grealToFrac, gfst, afst, hfst, gsnd,+ asnd, hsnd, gcurry, acurry, hcurry, guncurry,+ auncurry, huncurry, gid, aid, hid, gconst, aconst,+ hconst, (!.), (+.), (*.), gflip, aflip, hflip, (!$),+ (+$), (*$), guntil, auntil, huntil, gasTypeOf,+ gerror, aerror, herror, gundefined, gseq, aseq, hseq,+ (!$!), (+$!), (*$!))+ where+import qualified Prelude+import qualified Hat.Hat as T+import Hat.PreludeBasic+p = T.mkRoot+tPrelude+ = T.mkModule "Prelude" "Prelude.hs" Prelude.False
Hat/PreludeBasic.hs view
file too large to diff
Hat/PreludeBuiltin.hs view
@@ -1,1734 +1,1989 @@ module Hat.PreludeBuiltin- (T.Fun(),Bool(True,False),aTrue,aFalse,Char(),Int(),Integer(),Float(),Double()- ,IOError(),T.List(T.Cons,T.List),T.aCons,T.aList,IO(),T.Tuple0(T.Tuple0)- ,T.aTuple0,T.Tuple2(T.Tuple2),T.aTuple2,T.Tuple3(T.Tuple3),T.aTuple3- ,T.Tuple4(T.Tuple4),T.aTuple4,T.Tuple5(T.Tuple5),T.aTuple5- ,T.Tuple6(T.Tuple6),T.aTuple6,T.Tuple7(T.Tuple7),T.aTuple7- ,T.Tuple8(T.Tuple8),T.aTuple8,T.Tuple9(T.Tuple9),T.aTuple9- ,T.Tuple10(T.Tuple10),T.aTuple10,T.Tuple11(T.Tuple11),T.aTuple11- ,T.Tuple12(T.Tuple12),T.aTuple12,T.Tuple13(T.Tuple13),T.aTuple13- ,T.Tuple14(T.Tuple14),T.aTuple14,T.Tuple15(T.Tuple15),T.aTuple15,String()- ,gerror,aerror,herror,gundefined,gseq,aseq,hseq,gisAscii,aisAscii,hisAscii- ,gisLatin1,aisLatin1,hisLatin1,gisControl,aisControl,hisControl,gisPrint- ,aisPrint,hisPrint,gisSpace,aisSpace,hisSpace,gisUpper,aisUpper,hisUpper- ,gisLower,aisLower,hisLower,gisAlpha,aisAlpha,hisAlpha,gisDigit,aisDigit- ,hisDigit,gisOctDigit,aisOctDigit,hisOctDigit,gisHexDigit,aisHexDigit- ,hisHexDigit,gisAlphaNum,aisAlphaNum,hisAlphaNum,gtoUpper,atoUpper,htoUpper- ,gtoLower,atoLower,htoLower,gprimIntToChar,aprimIntToChar,hprimIntToChar- ,gprimCharToInt,aprimCharToInt,hprimCharToInt,gprimUnicodeMaxBound- ,gprimIntMinBound,gprimIntMaxBound,gprimIntEq,aprimIntEq,hprimIntEq- ,gprimIntNe,aprimIntNe,hprimIntNe,gprimIntLt,aprimIntLt,hprimIntLt- ,gprimIntLe,aprimIntLe,hprimIntLe,gprimIntGt,aprimIntGt,hprimIntGt- ,gprimIntGe,aprimIntGe,hprimIntGe,gprimIntQuot,aprimIntQuot,hprimIntQuot- ,gprimIntRem,aprimIntRem,hprimIntRem,gprimIntPlus,aprimIntPlus,hprimIntPlus- ,gprimIntMinus,aprimIntMinus,hprimIntMinus,gprimIntTimes,aprimIntTimes- ,hprimIntTimes,gprimIntNegate,aprimIntNegate,hprimIntNegate,gprimIntAbs- ,aprimIntAbs,hprimIntAbs,gprimIntSignum,aprimIntSignum,hprimIntSignum- ,gprimIntegerFromInt,aprimIntegerFromInt,hprimIntegerFromInt- ,gprimIntFromInteger,aprimIntFromInteger,hprimIntFromInteger,gprimIntegerEq- ,aprimIntegerEq,hprimIntegerEq,gprimIntegerNe,aprimIntegerNe,hprimIntegerNe- ,gprimIntegerLt,aprimIntegerLt,hprimIntegerLt,gprimIntegerLe,aprimIntegerLe- ,hprimIntegerLe,gprimIntegerGt,aprimIntegerGt,hprimIntegerGt,gprimIntegerGe- ,aprimIntegerGe,hprimIntegerGe,gprimIntegerQuot,aprimIntegerQuot- ,hprimIntegerQuot,gprimIntegerRem,aprimIntegerRem,hprimIntegerRem- ,gprimIntegerQuotRem,aprimIntegerQuotRem,hprimIntegerQuotRem,gprimIntegerAdd- ,aprimIntegerAdd,hprimIntegerAdd,gprimIntegerSub,aprimIntegerSub- ,hprimIntegerSub,gprimIntegerMul,aprimIntegerMul,hprimIntegerMul- ,gprimIntegerNeg,aprimIntegerNeg,hprimIntegerNeg,gprimFloatFromInteger- ,aprimFloatFromInteger,hprimFloatFromInteger,gprimFloatRadix,aprimFloatRadix- ,hprimFloatRadix,gprimFloatDigits,aprimFloatDigits,hprimFloatDigits- ,gprimFloatRange,aprimFloatRange,hprimFloatRange,gprimDecodeFloat- ,aprimDecodeFloat,hprimDecodeFloat,gprimEncodeFloat,aprimEncodeFloat- ,hprimEncodeFloat,gprimFloatIsNaN,aprimFloatIsNaN,hprimFloatIsNaN- ,gprimFloatIsInfinite,aprimFloatIsInfinite,hprimFloatIsInfinite- ,gprimFloatIsDenormalized,aprimFloatIsDenormalized,hprimFloatIsDenormalized- ,gprimFloatIsNegativeZero,aprimFloatIsNegativeZero,hprimFloatIsNegativeZero- ,gprimFloatIsIEEE,aprimFloatIsIEEE,hprimFloatIsIEEE,gprimFloatEq- ,aprimFloatEq,hprimFloatEq,gprimFloatNe,aprimFloatNe,hprimFloatNe- ,gprimFloatLt,aprimFloatLt,hprimFloatLt,gprimFloatLe,aprimFloatLe- ,hprimFloatLe,gprimFloatGt,aprimFloatGt,hprimFloatGt,gprimFloatGe- ,aprimFloatGe,hprimFloatGe,gprimFloatPi,gprimFloatExp,aprimFloatExp- ,hprimFloatExp,gprimFloatLog,aprimFloatLog,hprimFloatLog,gprimFloatSqrt- ,aprimFloatSqrt,hprimFloatSqrt,gprimFloatSin,aprimFloatSin,hprimFloatSin- ,gprimFloatCos,aprimFloatCos,hprimFloatCos,gprimFloatTan,aprimFloatTan- ,hprimFloatTan,gprimFloatAsin,aprimFloatAsin,hprimFloatAsin,gprimFloatAcos- ,aprimFloatAcos,hprimFloatAcos,gprimFloatAtan,aprimFloatAtan,hprimFloatAtan- ,gprimFloatDiv,aprimFloatDiv,hprimFloatDiv,gprimFloatAdd,aprimFloatAdd- ,hprimFloatAdd,gprimFloatSub,aprimFloatSub,hprimFloatSub,gprimFloatMul- ,aprimFloatMul,hprimFloatMul,gprimFloatAbs,aprimFloatAbs,hprimFloatAbs- ,gprimFloatSignum,aprimFloatSignum,hprimFloatSignum,gprimDoubleFromInteger- ,aprimDoubleFromInteger,hprimDoubleFromInteger,gprimDoubleRadix- ,aprimDoubleRadix,hprimDoubleRadix,gprimDoubleDigits,aprimDoubleDigits- ,hprimDoubleDigits,gprimDoubleRange,aprimDoubleRange,hprimDoubleRange- ,gprimDecodeDouble,aprimDecodeDouble,hprimDecodeDouble,gprimEncodeDouble- ,aprimEncodeDouble,hprimEncodeDouble,gprimDoubleIsNaN,aprimDoubleIsNaN- ,hprimDoubleIsNaN,gprimDoubleIsInfinite,aprimDoubleIsInfinite- ,hprimDoubleIsInfinite,gprimDoubleIsDenormalized,aprimDoubleIsDenormalized- ,hprimDoubleIsDenormalized,gprimDoubleIsNegativeZero- ,aprimDoubleIsNegativeZero,hprimDoubleIsNegativeZero,gprimDoubleIsIEEE- ,aprimDoubleIsIEEE,hprimDoubleIsIEEE,gprimDoubleEq,aprimDoubleEq- ,hprimDoubleEq,gprimDoubleNe,aprimDoubleNe,hprimDoubleNe,gprimDoubleLt- ,aprimDoubleLt,hprimDoubleLt,gprimDoubleLe,aprimDoubleLe,hprimDoubleLe- ,gprimDoubleGt,aprimDoubleGt,hprimDoubleGt,gprimDoubleGe,aprimDoubleGe- ,hprimDoubleGe,gprimDoublePi,gprimDoubleExp,aprimDoubleExp,hprimDoubleExp- ,gprimDoubleLog,aprimDoubleLog,hprimDoubleLog,gprimDoubleSqrt- ,aprimDoubleSqrt,hprimDoubleSqrt,gprimDoubleSin,aprimDoubleSin- ,hprimDoubleSin,gprimDoubleCos,aprimDoubleCos,hprimDoubleCos,gprimDoubleTan- ,aprimDoubleTan,hprimDoubleTan,gprimDoubleAsin,aprimDoubleAsin- ,hprimDoubleAsin,gprimDoubleAcos,aprimDoubleAcos,hprimDoubleAcos- ,gprimDoubleAtan,aprimDoubleAtan,hprimDoubleAtan,gprimDoubleDiv- ,aprimDoubleDiv,hprimDoubleDiv,gprimDoubleAdd,aprimDoubleAdd,hprimDoubleAdd- ,gprimDoubleSub,aprimDoubleSub,hprimDoubleSub,gprimDoubleMul,aprimDoubleMul- ,hprimDoubleMul,gprimDoubleAbs,aprimDoubleAbs,hprimDoubleAbs- ,gprimDoubleSignum,aprimDoubleSignum,hprimDoubleSignum,gprimIOBind- ,aprimIOBind,hprimIOBind,gprimIOReturn,aprimIOReturn,hprimIOReturn,gioError- ,aioError,hioError,guserError,auserError,huserError,gcatch,acatch,hcatch- ,gputChar,aputChar,hputChar,ggetChar,ggetContents,greadFile,areadFile- ,hreadFile,gwriteFile,awriteFile,hwriteFile,gappendFile,aappendFile- ,happendFile,gprimIOErrorShow,aprimIOErrorShow,hprimIOErrorShow) where--import qualified Prelude -import Hat.Hack -import qualified Hat.Hat as T -import Hat.Hat (WrapVal(wrapVal))-import Hat.PreludeBuiltinTypes -import Hat.Hat -import qualified Prelude -import qualified System.IO.Error -import qualified Data.Char as Char --gseq :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun b b))--gseq pseq p = T.ufun2 aseq pseq p hseq--hseq z1seq z2seq kseq =- T.fromId kseq (Prelude.seq (T.toId kseq z1seq) (T.toId kseq z2seq))--gisAscii :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisAscii pisAscii p = T.ufun1 aisAscii pisAscii p hisAscii--hisAscii z1isAscii kisAscii =- fromBool kisAscii (Char.isAscii (T.toChar kisAscii z1isAscii))--gisLatin1 :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisLatin1 pisLatin1 p = T.ufun1 aisLatin1 pisLatin1 p hisLatin1--hisLatin1 z1isLatin1 kisLatin1 =- fromBool kisLatin1 (Char.isLatin1 (T.toChar kisLatin1 z1isLatin1))--gisControl :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisControl pisControl p = T.ufun1 aisControl pisControl p hisControl--hisControl z1isControl kisControl =- fromBool kisControl (Char.isControl (T.toChar kisControl z1isControl))--gisPrint :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisPrint pisPrint p = T.ufun1 aisPrint pisPrint p hisPrint--hisPrint z1isPrint kisPrint =- fromBool kisPrint (Char.isPrint (T.toChar kisPrint z1isPrint))--gisSpace :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisSpace pisSpace p = T.ufun1 aisSpace pisSpace p hisSpace--hisSpace z1isSpace kisSpace =- fromBool kisSpace (Char.isSpace (T.toChar kisSpace z1isSpace))--gisUpper :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisUpper pisUpper p = T.ufun1 aisUpper pisUpper p hisUpper--hisUpper z1isUpper kisUpper =- fromBool kisUpper (Char.isUpper (T.toChar kisUpper z1isUpper))--gisLower :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisLower pisLower p = T.ufun1 aisLower pisLower p hisLower--hisLower z1isLower kisLower =- fromBool kisLower (Char.isLower (T.toChar kisLower z1isLower))--gisAlpha :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisAlpha pisAlpha p = T.ufun1 aisAlpha pisAlpha p hisAlpha--hisAlpha z1isAlpha kisAlpha =- fromBool kisAlpha (Char.isAlpha (T.toChar kisAlpha z1isAlpha))--gisDigit :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisDigit pisDigit p = T.ufun1 aisDigit pisDigit p hisDigit--hisDigit z1isDigit kisDigit =- fromBool kisDigit (Char.isDigit (T.toChar kisDigit z1isDigit))--gisOctDigit :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisOctDigit pisOctDigit p = T.ufun1 aisOctDigit pisOctDigit p hisOctDigit--hisOctDigit z1isOctDigit kisOctDigit =- fromBool kisOctDigit (Char.isOctDigit (T.toChar kisOctDigit z1isOctDigit))--gisHexDigit :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisHexDigit pisHexDigit p = T.ufun1 aisHexDigit pisHexDigit p hisHexDigit--hisHexDigit z1isHexDigit kisHexDigit =- fromBool kisHexDigit (Char.isHexDigit (T.toChar kisHexDigit z1isHexDigit))--gisAlphaNum :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)--gisAlphaNum pisAlphaNum p = T.ufun1 aisAlphaNum pisAlphaNum p hisAlphaNum--hisAlphaNum z1isAlphaNum kisAlphaNum =- fromBool kisAlphaNum (Char.isAlphaNum (T.toChar kisAlphaNum z1isAlphaNum))--gtoUpper :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Char)--gtoUpper ptoUpper p = T.ufun1 atoUpper ptoUpper p htoUpper--htoUpper z1toUpper ktoUpper =- T.fromChar ktoUpper (Char.toUpper (T.toChar ktoUpper z1toUpper))--gtoLower :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Char)--gtoLower ptoLower p = T.ufun1 atoLower ptoLower p htoLower--htoLower z1toLower ktoLower =- T.fromChar ktoLower (Char.toLower (T.toChar ktoLower z1toLower))--gprimCharToInt :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Int)--gprimCharToInt pprimCharToInt p =- T.ufun1 aprimCharToInt pprimCharToInt p hprimCharToInt--hprimCharToInt z1primCharToInt kprimCharToInt =- T.fromInt kprimCharToInt (Char.ord (T.toChar kprimCharToInt z1primCharToInt))--gprimIntToChar :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Char)--gprimIntToChar pprimIntToChar p =- T.ufun1 aprimIntToChar pprimIntToChar p hprimIntToChar--hprimIntToChar z1primIntToChar kprimIntToChar =- T.fromChar kprimIntToChar (Char.chr (T.toInt kprimIntToChar z1primIntToChar))--gprimUnicodeMaxBound :: T.RefSrcPos -> T.RefExp -> T.R Char--gprimUnicodeMaxBound pprimUnicodeMaxBound p =- T.uconstUse pprimUnicodeMaxBound p sprimUnicodeMaxBound--sprimUnicodeMaxBound =- T.uconstDef T.mkRoot aprimUnicodeMaxBound- (\ p -> T.fromChar p Prelude.maxBound)--gprimIntMinBound :: T.RefSrcPos -> T.RefExp -> T.R Int--gprimIntMinBound pprimIntMinBound p =- T.uconstUse pprimIntMinBound p sprimIntMinBound--sprimIntMinBound =- T.uconstDef T.mkRoot aprimIntMinBound (\ p -> T.fromInt p Prelude.minBound)--gprimIntMaxBound :: T.RefSrcPos -> T.RefExp -> T.R Int--gprimIntMaxBound pprimIntMaxBound p =- T.uconstUse pprimIntMaxBound p sprimIntMaxBound--sprimIntMaxBound =- T.uconstDef T.mkRoot aprimIntMaxBound (\ p -> T.fromInt p Prelude.maxBound)--gprimIntEq :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))--gprimIntEq pprimIntEq p = T.ufun2 aprimIntEq pprimIntEq p hprimIntEq--hprimIntEq z1primIntEq z2primIntEq kprimIntEq =- fromBool kprimIntEq- ((T.toInt kprimIntEq z1primIntEq)- Prelude.==- (T.toInt kprimIntEq z2primIntEq))--gprimIntNe :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))--gprimIntNe pprimIntNe p = T.ufun2 aprimIntNe pprimIntNe p hprimIntNe--hprimIntNe z1primIntNe z2primIntNe kprimIntNe =- fromBool kprimIntNe- ((T.toInt kprimIntNe z1primIntNe)- Prelude./=- (T.toInt kprimIntNe z2primIntNe))--gprimIntLt :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))--gprimIntLt pprimIntLt p = T.ufun2 aprimIntLt pprimIntLt p hprimIntLt--hprimIntLt z1primIntLt z2primIntLt kprimIntLt =- fromBool kprimIntLt- ((T.toInt kprimIntLt z1primIntLt)- Prelude.<- (T.toInt kprimIntLt z2primIntLt))--gprimIntLe :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))--gprimIntLe pprimIntLe p = T.ufun2 aprimIntLe pprimIntLe p hprimIntLe--hprimIntLe z1primIntLe z2primIntLe kprimIntLe =- fromBool kprimIntLe- ((T.toInt kprimIntLe z1primIntLe)- Prelude.<=- (T.toInt kprimIntLe z2primIntLe))--gprimIntGt :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))--gprimIntGt pprimIntGt p = T.ufun2 aprimIntGt pprimIntGt p hprimIntGt--hprimIntGt z1primIntGt z2primIntGt kprimIntGt =- fromBool kprimIntGt- ((T.toInt kprimIntGt z1primIntGt)- Prelude.>- (T.toInt kprimIntGt z2primIntGt))--gprimIntGe :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))--gprimIntGe pprimIntGe p = T.ufun2 aprimIntGe pprimIntGe p hprimIntGe--hprimIntGe z1primIntGe z2primIntGe kprimIntGe =- fromBool kprimIntGe- ((T.toInt kprimIntGe z1primIntGe)- Prelude.>=- (T.toInt kprimIntGe z2primIntGe))--gprimIntQuot :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))--gprimIntQuot pprimIntQuot p = T.ufun2 aprimIntQuot pprimIntQuot p hprimIntQuot--hprimIntQuot z1primIntQuot z2primIntQuot kprimIntQuot =- T.fromInt kprimIntQuot- (Prelude.quot (T.toInt kprimIntQuot z1primIntQuot)- (T.toInt kprimIntQuot z2primIntQuot))--gprimIntRem :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))--gprimIntRem pprimIntRem p = T.ufun2 aprimIntRem pprimIntRem p hprimIntRem--hprimIntRem z1primIntRem z2primIntRem kprimIntRem =- T.fromInt kprimIntRem- (Prelude.rem (T.toInt kprimIntRem z1primIntRem)- (T.toInt kprimIntRem z2primIntRem))--gprimIntPlus :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))--gprimIntPlus pprimIntPlus p = T.ufun2 aprimIntPlus pprimIntPlus p hprimIntPlus--hprimIntPlus z1primIntPlus z2primIntPlus kprimIntPlus =- T.fromInt kprimIntPlus- ((T.toInt kprimIntPlus z1primIntPlus)- Prelude.+- (T.toInt kprimIntPlus z2primIntPlus))--gprimIntMinus :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))--gprimIntMinus pprimIntMinus p =- T.ufun2 aprimIntMinus pprimIntMinus p hprimIntMinus--hprimIntMinus z1primIntMinus z2primIntMinus kprimIntMinus =- T.fromInt kprimIntMinus- ((T.toInt kprimIntMinus z1primIntMinus)- Prelude.-- (T.toInt kprimIntMinus z2primIntMinus))--gprimIntTimes :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))--gprimIntTimes pprimIntTimes p =- T.ufun2 aprimIntTimes pprimIntTimes p hprimIntTimes--hprimIntTimes z1primIntTimes z2primIntTimes kprimIntTimes =- T.fromInt kprimIntTimes- ((T.toInt kprimIntTimes z1primIntTimes)- Prelude.*- (T.toInt kprimIntTimes z2primIntTimes))--gprimIntNegate :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)--gprimIntNegate pprimIntNegate p =- T.ufun1 aprimIntNegate pprimIntNegate p hprimIntNegate--hprimIntNegate z1primIntNegate kprimIntNegate =- T.fromInt kprimIntNegate- (Prelude.negate (T.toInt kprimIntNegate z1primIntNegate))--gprimIntAbs :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)--gprimIntAbs pprimIntAbs p = T.ufun1 aprimIntAbs pprimIntAbs p hprimIntAbs--hprimIntAbs z1primIntAbs kprimIntAbs =- T.fromInt kprimIntAbs (Prelude.abs (T.toInt kprimIntAbs z1primIntAbs))--gprimIntSignum :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)--gprimIntSignum pprimIntSignum p =- T.ufun1 aprimIntSignum pprimIntSignum p hprimIntSignum--hprimIntSignum z1primIntSignum kprimIntSignum =- T.fromInt kprimIntSignum- (Prelude.signum (T.toInt kprimIntSignum z1primIntSignum))--gprimIntegerFromInt :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Integer)--gprimIntegerFromInt pprimIntegerFromInt p =- T.ufun1 aprimIntegerFromInt pprimIntegerFromInt p hprimIntegerFromInt--hprimIntegerFromInt z1primIntegerFromInt kprimIntegerFromInt =- T.fromInteger kprimIntegerFromInt- (Prelude.toInteger (T.toInt kprimIntegerFromInt z1primIntegerFromInt))--gprimIntFromInteger :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer Int)--gprimIntFromInteger pprimIntFromInteger p =- T.ufun1 aprimIntFromInteger pprimIntFromInteger p hprimIntFromInteger--hprimIntFromInteger z1primIntFromInteger kprimIntFromInteger =- T.fromInt kprimIntFromInteger- (Prelude.fromInteger (T.toInteger kprimIntFromInteger z1primIntFromInteger))--gprimIntegerEq ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))--gprimIntegerEq pprimIntegerEq p =- T.ufun2 aprimIntegerEq pprimIntegerEq p hprimIntegerEq--hprimIntegerEq z1primIntegerEq z2primIntegerEq kprimIntegerEq =- fromBool kprimIntegerEq- ((T.toInteger kprimIntegerEq z1primIntegerEq)- Prelude.==- (T.toInteger kprimIntegerEq z2primIntegerEq))--gprimIntegerNe ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))--gprimIntegerNe pprimIntegerNe p =- T.ufun2 aprimIntegerNe pprimIntegerNe p hprimIntegerNe--hprimIntegerNe z1primIntegerNe z2primIntegerNe kprimIntegerNe =- fromBool kprimIntegerNe- ((T.toInteger kprimIntegerNe z1primIntegerNe)- Prelude./=- (T.toInteger kprimIntegerNe z2primIntegerNe))--gprimIntegerLt ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))--gprimIntegerLt pprimIntegerLt p =- T.ufun2 aprimIntegerLt pprimIntegerLt p hprimIntegerLt--hprimIntegerLt z1primIntegerLt z2primIntegerLt kprimIntegerLt =- fromBool kprimIntegerLt- ((T.toInteger kprimIntegerLt z1primIntegerLt)- Prelude.<- (T.toInteger kprimIntegerLt z2primIntegerLt))--gprimIntegerLe ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))--gprimIntegerLe pprimIntegerLe p =- T.ufun2 aprimIntegerLe pprimIntegerLe p hprimIntegerLe--hprimIntegerLe z1primIntegerLe z2primIntegerLe kprimIntegerLe =- fromBool kprimIntegerLe- ((T.toInteger kprimIntegerLe z1primIntegerLe)- Prelude.<=- (T.toInteger kprimIntegerLe z2primIntegerLe))--gprimIntegerGt ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))--gprimIntegerGt pprimIntegerGt p =- T.ufun2 aprimIntegerGt pprimIntegerGt p hprimIntegerGt--hprimIntegerGt z1primIntegerGt z2primIntegerGt kprimIntegerGt =- fromBool kprimIntegerGt- ((T.toInteger kprimIntegerGt z1primIntegerGt)- Prelude.>- (T.toInteger kprimIntegerGt z2primIntegerGt))--gprimIntegerGe ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))--gprimIntegerGe pprimIntegerGe p =- T.ufun2 aprimIntegerGe pprimIntegerGe p hprimIntegerGe--hprimIntegerGe z1primIntegerGe z2primIntegerGe kprimIntegerGe =- fromBool kprimIntegerGe- ((T.toInteger kprimIntegerGe z1primIntegerGe)- Prelude.>=- (T.toInteger kprimIntegerGe z2primIntegerGe))--gprimIntegerQuot ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Integer))--gprimIntegerQuot pprimIntegerQuot p =- T.ufun2 aprimIntegerQuot pprimIntegerQuot p hprimIntegerQuot--hprimIntegerQuot z1primIntegerQuot z2primIntegerQuot kprimIntegerQuot =- T.fromInteger kprimIntegerQuot- (Prelude.quot (T.toInteger kprimIntegerQuot z1primIntegerQuot)- (T.toInteger kprimIntegerQuot z2primIntegerQuot))--gprimIntegerRem ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Integer))--gprimIntegerRem pprimIntegerRem p =- T.ufun2 aprimIntegerRem pprimIntegerRem p hprimIntegerRem--hprimIntegerRem z1primIntegerRem z2primIntegerRem kprimIntegerRem =- T.fromInteger kprimIntegerRem- (Prelude.rem (T.toInteger kprimIntegerRem z1primIntegerRem)- (T.toInteger kprimIntegerRem z2primIntegerRem))--gprimIntegerQuotRem ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun Integer (T.Fun Integer (T.Tuple2 Integer Integer)))--gprimIntegerQuotRem pprimIntegerQuotRem p =- T.ufun2 aprimIntegerQuotRem pprimIntegerQuotRem p hprimIntegerQuotRem--hprimIntegerQuotRem z1primIntegerQuotRem z2primIntegerQuotRem- kprimIntegerQuotRem =- (T.fromTuple2 T.fromInteger T.fromInteger) kprimIntegerQuotRem- (Prelude.quotRem (T.toInteger kprimIntegerQuotRem z1primIntegerQuotRem)- (T.toInteger kprimIntegerQuotRem z2primIntegerQuotRem))--gprimIntegerAdd ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Integer))--gprimIntegerAdd pprimIntegerAdd p =- T.ufun2 aprimIntegerAdd pprimIntegerAdd p hprimIntegerAdd--hprimIntegerAdd z1primIntegerAdd z2primIntegerAdd kprimIntegerAdd =- T.fromInteger kprimIntegerAdd- ((T.toInteger kprimIntegerAdd z1primIntegerAdd)- Prelude.+- (T.toInteger kprimIntegerAdd z2primIntegerAdd))--gprimIntegerSub ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Integer))--gprimIntegerSub pprimIntegerSub p =- T.ufun2 aprimIntegerSub pprimIntegerSub p hprimIntegerSub--hprimIntegerSub z1primIntegerSub z2primIntegerSub kprimIntegerSub =- T.fromInteger kprimIntegerSub- ((T.toInteger kprimIntegerSub z1primIntegerSub)- Prelude.-- (T.toInteger kprimIntegerSub z2primIntegerSub))--gprimIntegerMul ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Integer))--gprimIntegerMul pprimIntegerMul p =- T.ufun2 aprimIntegerMul pprimIntegerMul p hprimIntegerMul--hprimIntegerMul z1primIntegerMul z2primIntegerMul kprimIntegerMul =- T.fromInteger kprimIntegerMul- ((T.toInteger kprimIntegerMul z1primIntegerMul)- Prelude.*- (T.toInteger kprimIntegerMul z2primIntegerMul))--gprimIntegerNeg :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer Integer)--gprimIntegerNeg pprimIntegerNeg p =- T.ufun1 aprimIntegerNeg pprimIntegerNeg p hprimIntegerNeg--hprimIntegerNeg z1primIntegerNeg kprimIntegerNeg =- T.fromInteger kprimIntegerNeg- (Prelude.negate (T.toInteger kprimIntegerNeg z1primIntegerNeg))--gprimFloatFromInteger :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer Float)--gprimFloatFromInteger pprimFloatFromInteger p =- T.ufun1 aprimFloatFromInteger pprimFloatFromInteger p hprimFloatFromInteger--hprimFloatFromInteger z1primFloatFromInteger kprimFloatFromInteger =- T.fromFloat kprimFloatFromInteger- (Prelude.fromInteger- (T.toInteger kprimFloatFromInteger z1primFloatFromInteger))--gprimFloatRadix :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Integer)--gprimFloatRadix pprimFloatRadix p =- T.ufun1 aprimFloatRadix pprimFloatRadix p hprimFloatRadix--hprimFloatRadix z1primFloatRadix kprimFloatRadix =- T.fromInteger kprimFloatRadix- (Prelude.floatRadix (T.toFloat kprimFloatRadix z1primFloatRadix))--gprimFloatDigits :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Int)--gprimFloatDigits pprimFloatDigits p =- T.ufun1 aprimFloatDigits pprimFloatDigits p hprimFloatDigits--hprimFloatDigits z1primFloatDigits kprimFloatDigits =- T.fromInt kprimFloatDigits- (Prelude.floatDigits (T.toFloat kprimFloatDigits z1primFloatDigits))--gprimFloatRange ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Tuple2 Int Int))--gprimFloatRange pprimFloatRange p =- T.ufun1 aprimFloatRange pprimFloatRange p hprimFloatRange--hprimFloatRange z1primFloatRange kprimFloatRange =- (T.fromTuple2 T.fromInt T.fromInt) kprimFloatRange- (Prelude.floatRange (T.toFloat kprimFloatRange z1primFloatRange))--gprimDecodeFloat ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Tuple2 Integer Int))--gprimDecodeFloat pprimDecodeFloat p =- T.ufun1 aprimDecodeFloat pprimDecodeFloat p hprimDecodeFloat--hprimDecodeFloat z1primDecodeFloat kprimDecodeFloat =- (T.fromTuple2 T.fromInteger T.fromInt) kprimDecodeFloat- (Prelude.decodeFloat (T.toFloat kprimDecodeFloat z1primDecodeFloat))--gprimEncodeFloat ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Int Float))--gprimEncodeFloat pprimEncodeFloat p =- T.ufun2 aprimEncodeFloat pprimEncodeFloat p hprimEncodeFloat--hprimEncodeFloat z1primEncodeFloat z2primEncodeFloat kprimEncodeFloat =- T.fromFloat kprimEncodeFloat- (Prelude.encodeFloat (T.toInteger kprimEncodeFloat z1primEncodeFloat)- (T.toInt kprimEncodeFloat z2primEncodeFloat))--gprimFloatIsNaN :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)--gprimFloatIsNaN pprimFloatIsNaN p =- T.ufun1 aprimFloatIsNaN pprimFloatIsNaN p hprimFloatIsNaN--hprimFloatIsNaN z1primFloatIsNaN kprimFloatIsNaN =- fromBool kprimFloatIsNaN- (Prelude.isNaN (T.toFloat kprimFloatIsNaN z1primFloatIsNaN))--gprimFloatIsInfinite :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)--gprimFloatIsInfinite pprimFloatIsInfinite p =- T.ufun1 aprimFloatIsInfinite pprimFloatIsInfinite p hprimFloatIsInfinite--hprimFloatIsInfinite z1primFloatIsInfinite kprimFloatIsInfinite =- fromBool kprimFloatIsInfinite- (Prelude.isInfinite (T.toFloat kprimFloatIsInfinite z1primFloatIsInfinite))--gprimFloatIsDenormalized :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)--gprimFloatIsDenormalized pprimFloatIsDenormalized p =- T.ufun1 aprimFloatIsDenormalized pprimFloatIsDenormalized p- hprimFloatIsDenormalized--hprimFloatIsDenormalized z1primFloatIsDenormalized kprimFloatIsDenormalized =- fromBool kprimFloatIsDenormalized- (Prelude.isDenormalized- (T.toFloat kprimFloatIsDenormalized z1primFloatIsDenormalized))--gprimFloatIsNegativeZero :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)--gprimFloatIsNegativeZero pprimFloatIsNegativeZero p =- T.ufun1 aprimFloatIsNegativeZero pprimFloatIsNegativeZero p- hprimFloatIsNegativeZero--hprimFloatIsNegativeZero z1primFloatIsNegativeZero kprimFloatIsNegativeZero =- fromBool kprimFloatIsNegativeZero- (Prelude.isNegativeZero- (T.toFloat kprimFloatIsNegativeZero z1primFloatIsNegativeZero))--gprimFloatIsIEEE :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)--gprimFloatIsIEEE pprimFloatIsIEEE p =- T.ufun1 aprimFloatIsIEEE pprimFloatIsIEEE p hprimFloatIsIEEE--hprimFloatIsIEEE z1primFloatIsIEEE kprimFloatIsIEEE =- fromBool kprimFloatIsIEEE- (Prelude.isIEEE (T.toFloat kprimFloatIsIEEE z1primFloatIsIEEE))--gprimFloatEq :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))--gprimFloatEq pprimFloatEq p = T.ufun2 aprimFloatEq pprimFloatEq p hprimFloatEq--hprimFloatEq z1primFloatEq z2primFloatEq kprimFloatEq =- fromBool kprimFloatEq- ((T.toFloat kprimFloatEq z1primFloatEq)- Prelude.==- (T.toFloat kprimFloatEq z2primFloatEq))--gprimFloatNe :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))--gprimFloatNe pprimFloatNe p = T.ufun2 aprimFloatNe pprimFloatNe p hprimFloatNe--hprimFloatNe z1primFloatNe z2primFloatNe kprimFloatNe =- fromBool kprimFloatNe- ((T.toFloat kprimFloatNe z1primFloatNe)- Prelude./=- (T.toFloat kprimFloatNe z2primFloatNe))--gprimFloatLt :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))--gprimFloatLt pprimFloatLt p = T.ufun2 aprimFloatLt pprimFloatLt p hprimFloatLt--hprimFloatLt z1primFloatLt z2primFloatLt kprimFloatLt =- fromBool kprimFloatLt- ((T.toFloat kprimFloatLt z1primFloatLt)- Prelude.<- (T.toFloat kprimFloatLt z2primFloatLt))--gprimFloatLe :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))--gprimFloatLe pprimFloatLe p = T.ufun2 aprimFloatLe pprimFloatLe p hprimFloatLe--hprimFloatLe z1primFloatLe z2primFloatLe kprimFloatLe =- fromBool kprimFloatLe- ((T.toFloat kprimFloatLe z1primFloatLe)- Prelude.<=- (T.toFloat kprimFloatLe z2primFloatLe))--gprimFloatGt :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))--gprimFloatGt pprimFloatGt p = T.ufun2 aprimFloatGt pprimFloatGt p hprimFloatGt--hprimFloatGt z1primFloatGt z2primFloatGt kprimFloatGt =- fromBool kprimFloatGt- ((T.toFloat kprimFloatGt z1primFloatGt)- Prelude.>- (T.toFloat kprimFloatGt z2primFloatGt))--gprimFloatGe :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))--gprimFloatGe pprimFloatGe p = T.ufun2 aprimFloatGe pprimFloatGe p hprimFloatGe--hprimFloatGe z1primFloatGe z2primFloatGe kprimFloatGe =- fromBool kprimFloatGe- ((T.toFloat kprimFloatGe z1primFloatGe)- Prelude.>=- (T.toFloat kprimFloatGe z2primFloatGe))--gprimFloatPi :: T.RefSrcPos -> T.RefExp -> T.R Float--gprimFloatPi pprimFloatPi p = T.uconstUse pprimFloatPi p sprimFloatPi--sprimFloatPi =- T.uconstDef T.mkRoot aprimFloatPi (\ p -> T.fromFloat p Prelude.pi)--gprimFloatExp :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatExp pprimFloatExp p =- T.ufun1 aprimFloatExp pprimFloatExp p hprimFloatExp--hprimFloatExp z1primFloatExp kprimFloatExp =- T.fromFloat kprimFloatExp- (Prelude.exp (T.toFloat kprimFloatExp z1primFloatExp))--gprimFloatLog :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatLog pprimFloatLog p =- T.ufun1 aprimFloatLog pprimFloatLog p hprimFloatLog--hprimFloatLog z1primFloatLog kprimFloatLog =- T.fromFloat kprimFloatLog- (Prelude.log (T.toFloat kprimFloatLog z1primFloatLog))--gprimFloatSqrt :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatSqrt pprimFloatSqrt p =- T.ufun1 aprimFloatSqrt pprimFloatSqrt p hprimFloatSqrt--hprimFloatSqrt z1primFloatSqrt kprimFloatSqrt =- T.fromFloat kprimFloatSqrt- (Prelude.sqrt (T.toFloat kprimFloatSqrt z1primFloatSqrt))--gprimFloatSin :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatSin pprimFloatSin p =- T.ufun1 aprimFloatSin pprimFloatSin p hprimFloatSin--hprimFloatSin z1primFloatSin kprimFloatSin =- T.fromFloat kprimFloatSin- (Prelude.sin (T.toFloat kprimFloatSin z1primFloatSin))--gprimFloatCos :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatCos pprimFloatCos p =- T.ufun1 aprimFloatCos pprimFloatCos p hprimFloatCos--hprimFloatCos z1primFloatCos kprimFloatCos =- T.fromFloat kprimFloatCos- (Prelude.cos (T.toFloat kprimFloatCos z1primFloatCos))--gprimFloatTan :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatTan pprimFloatTan p =- T.ufun1 aprimFloatTan pprimFloatTan p hprimFloatTan--hprimFloatTan z1primFloatTan kprimFloatTan =- T.fromFloat kprimFloatTan- (Prelude.tan (T.toFloat kprimFloatTan z1primFloatTan))--gprimFloatAsin :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatAsin pprimFloatAsin p =- T.ufun1 aprimFloatAsin pprimFloatAsin p hprimFloatAsin--hprimFloatAsin z1primFloatAsin kprimFloatAsin =- T.fromFloat kprimFloatAsin- (Prelude.asin (T.toFloat kprimFloatAsin z1primFloatAsin))--gprimFloatAcos :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatAcos pprimFloatAcos p =- T.ufun1 aprimFloatAcos pprimFloatAcos p hprimFloatAcos--hprimFloatAcos z1primFloatAcos kprimFloatAcos =- T.fromFloat kprimFloatAcos- (Prelude.acos (T.toFloat kprimFloatAcos z1primFloatAcos))--gprimFloatAtan :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatAtan pprimFloatAtan p =- T.ufun1 aprimFloatAtan pprimFloatAtan p hprimFloatAtan--hprimFloatAtan z1primFloatAtan kprimFloatAtan =- T.fromFloat kprimFloatAtan- (Prelude.atan (T.toFloat kprimFloatAtan z1primFloatAtan))--gprimFloatDiv ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Float))--gprimFloatDiv pprimFloatDiv p =- T.ufun2 aprimFloatDiv pprimFloatDiv p hprimFloatDiv--hprimFloatDiv z1primFloatDiv z2primFloatDiv kprimFloatDiv =- T.fromFloat kprimFloatDiv- ((T.toFloat kprimFloatDiv z1primFloatDiv)- Prelude./- (T.toFloat kprimFloatDiv z2primFloatDiv))--gprimFloatAdd ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Float))--gprimFloatAdd pprimFloatAdd p =- T.ufun2 aprimFloatAdd pprimFloatAdd p hprimFloatAdd--hprimFloatAdd z1primFloatAdd z2primFloatAdd kprimFloatAdd =- T.fromFloat kprimFloatAdd- ((T.toFloat kprimFloatAdd z1primFloatAdd)- Prelude.+- (T.toFloat kprimFloatAdd z2primFloatAdd))--gprimFloatSub ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Float))--gprimFloatSub pprimFloatSub p =- T.ufun2 aprimFloatSub pprimFloatSub p hprimFloatSub--hprimFloatSub z1primFloatSub z2primFloatSub kprimFloatSub =- T.fromFloat kprimFloatSub- ((T.toFloat kprimFloatSub z1primFloatSub)- Prelude.-- (T.toFloat kprimFloatSub z2primFloatSub))--gprimFloatMul ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float (T.Fun Float Float))--gprimFloatMul pprimFloatMul p =- T.ufun2 aprimFloatMul pprimFloatMul p hprimFloatMul--hprimFloatMul z1primFloatMul z2primFloatMul kprimFloatMul =- T.fromFloat kprimFloatMul- ((T.toFloat kprimFloatMul z1primFloatMul)- Prelude.*- (T.toFloat kprimFloatMul z2primFloatMul))--gprimFloatAbs :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatAbs pprimFloatAbs p =- T.ufun1 aprimFloatAbs pprimFloatAbs p hprimFloatAbs--hprimFloatAbs z1primFloatAbs kprimFloatAbs =- T.fromFloat kprimFloatAbs- (Prelude.abs (T.toFloat kprimFloatAbs z1primFloatAbs))--gprimFloatSignum :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)--gprimFloatSignum pprimFloatSignum p =- T.ufun1 aprimFloatSignum pprimFloatSignum p hprimFloatSignum--hprimFloatSignum z1primFloatSignum kprimFloatSignum =- T.fromFloat kprimFloatSignum- (Prelude.signum (T.toFloat kprimFloatSignum z1primFloatSignum))--gprimDoubleFromInteger :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer Double)--gprimDoubleFromInteger pprimDoubleFromInteger p =- T.ufun1 aprimDoubleFromInteger pprimDoubleFromInteger p hprimDoubleFromInteger--hprimDoubleFromInteger z1primDoubleFromInteger kprimDoubleFromInteger =- T.fromDouble kprimDoubleFromInteger- (Prelude.fromInteger- (T.toInteger kprimDoubleFromInteger z1primDoubleFromInteger))--gprimDoubleRadix :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Integer)--gprimDoubleRadix pprimDoubleRadix p =- T.ufun1 aprimDoubleRadix pprimDoubleRadix p hprimDoubleRadix--hprimDoubleRadix z1primDoubleRadix kprimDoubleRadix =- T.fromInteger kprimDoubleRadix- (Prelude.floatRadix (T.toDouble kprimDoubleRadix z1primDoubleRadix))--gprimDoubleDigits :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Int)--gprimDoubleDigits pprimDoubleDigits p =- T.ufun1 aprimDoubleDigits pprimDoubleDigits p hprimDoubleDigits--hprimDoubleDigits z1primDoubleDigits kprimDoubleDigits =- T.fromInt kprimDoubleDigits- (Prelude.floatDigits (T.toDouble kprimDoubleDigits z1primDoubleDigits))--gprimDoubleRange ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Tuple2 Int Int))--gprimDoubleRange pprimDoubleRange p =- T.ufun1 aprimDoubleRange pprimDoubleRange p hprimDoubleRange--hprimDoubleRange z1primDoubleRange kprimDoubleRange =- (T.fromTuple2 T.fromInt T.fromInt) kprimDoubleRange- (Prelude.floatRange (T.toDouble kprimDoubleRange z1primDoubleRange))--gprimDecodeDouble ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Tuple2 Integer Int))--gprimDecodeDouble pprimDecodeDouble p =- T.ufun1 aprimDecodeDouble pprimDecodeDouble p hprimDecodeDouble--hprimDecodeDouble z1primDecodeDouble kprimDecodeDouble =- (T.fromTuple2 T.fromInteger T.fromInt) kprimDecodeDouble- (Prelude.decodeFloat (T.toDouble kprimDecodeDouble z1primDecodeDouble))--gprimEncodeDouble ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Int Double))--gprimEncodeDouble pprimEncodeDouble p =- T.ufun2 aprimEncodeDouble pprimEncodeDouble p hprimEncodeDouble--hprimEncodeDouble z1primEncodeDouble z2primEncodeDouble kprimEncodeDouble =- T.fromDouble kprimEncodeDouble- (Prelude.encodeFloat (T.toInteger kprimEncodeDouble z1primEncodeDouble)- (T.toInt kprimEncodeDouble z2primEncodeDouble))--gprimDoubleIsNaN :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)--gprimDoubleIsNaN pprimDoubleIsNaN p =- T.ufun1 aprimDoubleIsNaN pprimDoubleIsNaN p hprimDoubleIsNaN--hprimDoubleIsNaN z1primDoubleIsNaN kprimDoubleIsNaN =- fromBool kprimDoubleIsNaN- (Prelude.isNaN (T.toDouble kprimDoubleIsNaN z1primDoubleIsNaN))--gprimDoubleIsInfinite :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)--gprimDoubleIsInfinite pprimDoubleIsInfinite p =- T.ufun1 aprimDoubleIsInfinite pprimDoubleIsInfinite p hprimDoubleIsInfinite--hprimDoubleIsInfinite z1primDoubleIsInfinite kprimDoubleIsInfinite =- fromBool kprimDoubleIsInfinite- (Prelude.isInfinite- (T.toDouble kprimDoubleIsInfinite z1primDoubleIsInfinite))--gprimDoubleIsDenormalized :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)--gprimDoubleIsDenormalized pprimDoubleIsDenormalized p =- T.ufun1 aprimDoubleIsDenormalized pprimDoubleIsDenormalized p- hprimDoubleIsDenormalized--hprimDoubleIsDenormalized z1primDoubleIsDenormalized kprimDoubleIsDenormalized =- fromBool kprimDoubleIsDenormalized- (Prelude.isDenormalized- (T.toDouble kprimDoubleIsDenormalized z1primDoubleIsDenormalized))--gprimDoubleIsNegativeZero :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)--gprimDoubleIsNegativeZero pprimDoubleIsNegativeZero p =- T.ufun1 aprimDoubleIsNegativeZero pprimDoubleIsNegativeZero p- hprimDoubleIsNegativeZero--hprimDoubleIsNegativeZero z1primDoubleIsNegativeZero kprimDoubleIsNegativeZero =- fromBool kprimDoubleIsNegativeZero- (Prelude.isNegativeZero- (T.toDouble kprimDoubleIsNegativeZero z1primDoubleIsNegativeZero))--gprimDoubleIsIEEE :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)--gprimDoubleIsIEEE pprimDoubleIsIEEE p =- T.ufun1 aprimDoubleIsIEEE pprimDoubleIsIEEE p hprimDoubleIsIEEE--hprimDoubleIsIEEE z1primDoubleIsIEEE kprimDoubleIsIEEE =- fromBool kprimDoubleIsIEEE- (Prelude.isIEEE (T.toDouble kprimDoubleIsIEEE z1primDoubleIsIEEE))--gprimDoubleEq ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))--gprimDoubleEq pprimDoubleEq p =- T.ufun2 aprimDoubleEq pprimDoubleEq p hprimDoubleEq--hprimDoubleEq z1primDoubleEq z2primDoubleEq kprimDoubleEq =- fromBool kprimDoubleEq- ((T.toDouble kprimDoubleEq z1primDoubleEq)- Prelude.==- (T.toDouble kprimDoubleEq z2primDoubleEq))--gprimDoubleNe ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))--gprimDoubleNe pprimDoubleNe p =- T.ufun2 aprimDoubleNe pprimDoubleNe p hprimDoubleNe--hprimDoubleNe z1primDoubleNe z2primDoubleNe kprimDoubleNe =- fromBool kprimDoubleNe- ((T.toDouble kprimDoubleNe z1primDoubleNe)- Prelude./=- (T.toDouble kprimDoubleNe z2primDoubleNe))--gprimDoubleLt ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))--gprimDoubleLt pprimDoubleLt p =- T.ufun2 aprimDoubleLt pprimDoubleLt p hprimDoubleLt--hprimDoubleLt z1primDoubleLt z2primDoubleLt kprimDoubleLt =- fromBool kprimDoubleLt- ((T.toDouble kprimDoubleLt z1primDoubleLt)- Prelude.<- (T.toDouble kprimDoubleLt z2primDoubleLt))--gprimDoubleLe ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))--gprimDoubleLe pprimDoubleLe p =- T.ufun2 aprimDoubleLe pprimDoubleLe p hprimDoubleLe--hprimDoubleLe z1primDoubleLe z2primDoubleLe kprimDoubleLe =- fromBool kprimDoubleLe- ((T.toDouble kprimDoubleLe z1primDoubleLe)- Prelude.<=- (T.toDouble kprimDoubleLe z2primDoubleLe))--gprimDoubleGt ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))--gprimDoubleGt pprimDoubleGt p =- T.ufun2 aprimDoubleGt pprimDoubleGt p hprimDoubleGt--hprimDoubleGt z1primDoubleGt z2primDoubleGt kprimDoubleGt =- fromBool kprimDoubleGt- ((T.toDouble kprimDoubleGt z1primDoubleGt)- Prelude.>- (T.toDouble kprimDoubleGt z2primDoubleGt))--gprimDoubleGe ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))--gprimDoubleGe pprimDoubleGe p =- T.ufun2 aprimDoubleGe pprimDoubleGe p hprimDoubleGe--hprimDoubleGe z1primDoubleGe z2primDoubleGe kprimDoubleGe =- fromBool kprimDoubleGe- ((T.toDouble kprimDoubleGe z1primDoubleGe)- Prelude.>=- (T.toDouble kprimDoubleGe z2primDoubleGe))--gprimDoublePi :: T.RefSrcPos -> T.RefExp -> T.R Double--gprimDoublePi pprimDoublePi p = T.uconstUse pprimDoublePi p sprimDoublePi--sprimDoublePi =- T.uconstDef T.mkRoot aprimDoublePi (\ p -> T.fromDouble p Prelude.pi)--gprimDoubleExp :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleExp pprimDoubleExp p =- T.ufun1 aprimDoubleExp pprimDoubleExp p hprimDoubleExp--hprimDoubleExp z1primDoubleExp kprimDoubleExp =- T.fromDouble kprimDoubleExp- (Prelude.exp (T.toDouble kprimDoubleExp z1primDoubleExp))--gprimDoubleLog :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleLog pprimDoubleLog p =- T.ufun1 aprimDoubleLog pprimDoubleLog p hprimDoubleLog--hprimDoubleLog z1primDoubleLog kprimDoubleLog =- T.fromDouble kprimDoubleLog- (Prelude.log (T.toDouble kprimDoubleLog z1primDoubleLog))--gprimDoubleSqrt :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleSqrt pprimDoubleSqrt p =- T.ufun1 aprimDoubleSqrt pprimDoubleSqrt p hprimDoubleSqrt--hprimDoubleSqrt z1primDoubleSqrt kprimDoubleSqrt =- T.fromDouble kprimDoubleSqrt- (Prelude.sqrt (T.toDouble kprimDoubleSqrt z1primDoubleSqrt))--gprimDoubleSin :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleSin pprimDoubleSin p =- T.ufun1 aprimDoubleSin pprimDoubleSin p hprimDoubleSin--hprimDoubleSin z1primDoubleSin kprimDoubleSin =- T.fromDouble kprimDoubleSin- (Prelude.sin (T.toDouble kprimDoubleSin z1primDoubleSin))--gprimDoubleCos :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleCos pprimDoubleCos p =- T.ufun1 aprimDoubleCos pprimDoubleCos p hprimDoubleCos--hprimDoubleCos z1primDoubleCos kprimDoubleCos =- T.fromDouble kprimDoubleCos- (Prelude.cos (T.toDouble kprimDoubleCos z1primDoubleCos))--gprimDoubleTan :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleTan pprimDoubleTan p =- T.ufun1 aprimDoubleTan pprimDoubleTan p hprimDoubleTan--hprimDoubleTan z1primDoubleTan kprimDoubleTan =- T.fromDouble kprimDoubleTan- (Prelude.tan (T.toDouble kprimDoubleTan z1primDoubleTan))--gprimDoubleAsin :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleAsin pprimDoubleAsin p =- T.ufun1 aprimDoubleAsin pprimDoubleAsin p hprimDoubleAsin--hprimDoubleAsin z1primDoubleAsin kprimDoubleAsin =- T.fromDouble kprimDoubleAsin- (Prelude.asin (T.toDouble kprimDoubleAsin z1primDoubleAsin))--gprimDoubleAcos :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleAcos pprimDoubleAcos p =- T.ufun1 aprimDoubleAcos pprimDoubleAcos p hprimDoubleAcos--hprimDoubleAcos z1primDoubleAcos kprimDoubleAcos =- T.fromDouble kprimDoubleAcos- (Prelude.acos (T.toDouble kprimDoubleAcos z1primDoubleAcos))--gprimDoubleAtan :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleAtan pprimDoubleAtan p =- T.ufun1 aprimDoubleAtan pprimDoubleAtan p hprimDoubleAtan--hprimDoubleAtan z1primDoubleAtan kprimDoubleAtan =- T.fromDouble kprimDoubleAtan- (Prelude.atan (T.toDouble kprimDoubleAtan z1primDoubleAtan))--gprimDoubleDiv ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Double))--gprimDoubleDiv pprimDoubleDiv p =- T.ufun2 aprimDoubleDiv pprimDoubleDiv p hprimDoubleDiv--hprimDoubleDiv z1primDoubleDiv z2primDoubleDiv kprimDoubleDiv =- T.fromDouble kprimDoubleDiv- ((T.toDouble kprimDoubleDiv z1primDoubleDiv)- Prelude./- (T.toDouble kprimDoubleDiv z2primDoubleDiv))--gprimDoubleAdd ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Double))--gprimDoubleAdd pprimDoubleAdd p =- T.ufun2 aprimDoubleAdd pprimDoubleAdd p hprimDoubleAdd--hprimDoubleAdd z1primDoubleAdd z2primDoubleAdd kprimDoubleAdd =- T.fromDouble kprimDoubleAdd- ((T.toDouble kprimDoubleAdd z1primDoubleAdd)- Prelude.+- (T.toDouble kprimDoubleAdd z2primDoubleAdd))--gprimDoubleSub ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Double))--gprimDoubleSub pprimDoubleSub p =- T.ufun2 aprimDoubleSub pprimDoubleSub p hprimDoubleSub--hprimDoubleSub z1primDoubleSub z2primDoubleSub kprimDoubleSub =- T.fromDouble kprimDoubleSub- ((T.toDouble kprimDoubleSub z1primDoubleSub)- Prelude.-- (T.toDouble kprimDoubleSub z2primDoubleSub))--gprimDoubleMul ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double (T.Fun Double Double))--gprimDoubleMul pprimDoubleMul p =- T.ufun2 aprimDoubleMul pprimDoubleMul p hprimDoubleMul--hprimDoubleMul z1primDoubleMul z2primDoubleMul kprimDoubleMul =- T.fromDouble kprimDoubleMul- ((T.toDouble kprimDoubleMul z1primDoubleMul)- Prelude.*- (T.toDouble kprimDoubleMul z2primDoubleMul))--gprimDoubleAbs :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleAbs pprimDoubleAbs p =- T.ufun1 aprimDoubleAbs pprimDoubleAbs p hprimDoubleAbs--hprimDoubleAbs z1primDoubleAbs kprimDoubleAbs =- T.fromDouble kprimDoubleAbs- (Prelude.abs (T.toDouble kprimDoubleAbs z1primDoubleAbs))--gprimDoubleSignum :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)--gprimDoubleSignum pprimDoubleSignum p =- T.ufun1 aprimDoubleSignum pprimDoubleSignum p hprimDoubleSignum--hprimDoubleSignum z1primDoubleSignum kprimDoubleSignum =- T.fromDouble kprimDoubleSignum- (Prelude.signum (T.toDouble kprimDoubleSignum z1primDoubleSignum))--gprimIOBind ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (IO a) (T.Fun (T.Fun a (IO b)) (IO b)))--gprimIOBind pprimIOBind p = T.ufun2 aprimIOBind pprimIOBind p hprimIOBind--hprimIOBind z1primIOBind z2primIOBind kprimIOBind =- (T.fromIO T.fromId) kprimIOBind- (((T.toIO T.toId) kprimIOBind z1primIOBind)- Prelude.>>=- ((toFun T.fromId (T.toIO T.toId)) kprimIOBind z2primIOBind))--gprimIOReturn :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (IO a))--gprimIOReturn pprimIOReturn p =- T.ufun1 aprimIOReturn pprimIOReturn p hprimIOReturn--hprimIOReturn z1primIOReturn kprimIOReturn =- (T.fromIO T.fromId) kprimIOReturn- (Prelude.return (T.toId kprimIOReturn z1primIOReturn))--gprimIOErrorShow :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError String)--gprimIOErrorShow pprimIOErrorShow p =- T.ufun1 aprimIOErrorShow pprimIOErrorShow p hprimIOErrorShow--hprimIOErrorShow z1primIOErrorShow kprimIOErrorShow =- fromString kprimIOErrorShow- (Prelude.show (toIOError kprimIOErrorShow z1primIOErrorShow))--gioError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError (IO a))--gioError pioError p = T.ufun1 aioError pioError p hioError--hioError z1ioError kioError =- (T.fromIO T.fromId) kioError (Prelude.ioError (toIOError kioError z1ioError))--guserError :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String IOError)--guserError puserError p = T.ufun1 auserError puserError p huserError--huserError z1userError kuserError =- fromIOError kuserError (Prelude.userError (toString kuserError z1userError))--gcatch ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (IO a) (T.Fun (T.Fun IOError (IO a)) (IO a)))--gcatch pcatch p = T.ufun2 acatch pcatch p hcatch--hcatch z1catch z2catch kcatch =- (T.fromIO T.fromId) kcatch- (System.IO.Error.catchIOError ((T.toIO T.toId) kcatch z1catch)- ((toFun fromIOError (T.toIO T.toId)) kcatch z2catch))--gputChar :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char (IO T.Tuple0))--gputChar pputChar p = T.ufun1 aputChar pputChar p hputChar--hputChar z1putChar kputChar =- (T.fromIO T.fromTuple0) kputChar- ((\_ c -> T.outputTrace kputChar [c] Prelude.>> Prelude.putChar c) Prelude.True- (T.toChar kputChar z1putChar))--ggetChar :: T.RefSrcPos -> T.RefExp -> T.R (IO Char)--ggetChar pgetChar p = T.uconstUse pgetChar p sgetChar--sgetChar =- T.uconstDef T.mkRoot agetChar (\ p -> (T.fromIO T.fromChar) p Prelude.getChar)--ggetContents :: T.RefSrcPos -> T.RefExp -> T.R (IO String)--ggetContents pgetContents p = T.uconstUse pgetContents p sgetContents--sgetContents =- T.uconstDef T.mkRoot agetContents- (\ p -> (T.fromIO fromString) p Prelude.getContents)--greadFile :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO String))--greadFile preadFile p = T.ufun1 areadFile preadFile p hreadFile--hreadFile z1readFile kreadFile =- (T.fromIO fromString) kreadFile- (Prelude.readFile (toString kreadFile z1readFile))--gwriteFile ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (T.Fun String (IO T.Tuple0)))--gwriteFile pwriteFile p = T.ufun2 awriteFile pwriteFile p hwriteFile--hwriteFile z1writeFile z2writeFile kwriteFile =- (T.fromIO T.fromTuple0) kwriteFile- ((\_ n s -> T.outputTrace kwriteFile s Prelude.>> Prelude.writeFile n s) Prelude.True- (toString kwriteFile z1writeFile) (toString kwriteFile z2writeFile))--gappendFile ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (T.Fun String (IO T.Tuple0)))--gappendFile pappendFile p = T.ufun2 aappendFile pappendFile p happendFile--happendFile z1appendFile z2appendFile kappendFile =- (T.fromIO T.fromTuple0) kappendFile- ((\_ n s -> T.outputTrace kappendFile s Prelude.>> Prelude.appendFile n s) Prelude.True- (toString kappendFile z1appendFile) (toString kappendFile z2appendFile))--tPreludeBuiltin = T.mkModule "Prelude" "PreludeBuiltin.hs" Prelude.False--aseq = T.mkVariable tPreludeBuiltin 680001 690020 1 2 "seq" Prelude.False--aisAscii =- T.mkVariable tPreludeBuiltin 710001 720025 3 1 "isAscii" Prelude.False--aisLatin1 =- T.mkVariable tPreludeBuiltin 730001 740026 3 1 "isLatin1" Prelude.False--aisControl =- T.mkVariable tPreludeBuiltin 750001 760027 3 1 "isControl" Prelude.False--aisPrint =- T.mkVariable tPreludeBuiltin 770001 780025 3 1 "isPrint" Prelude.False--aisSpace =- T.mkVariable tPreludeBuiltin 790001 800025 3 1 "isSpace" Prelude.False--aisUpper =- T.mkVariable tPreludeBuiltin 810001 820025 3 1 "isUpper" Prelude.False--aisLower =- T.mkVariable tPreludeBuiltin 830001 840025 3 1 "isLower" Prelude.False--aisAlpha =- T.mkVariable tPreludeBuiltin 850001 860025 3 1 "isAlpha" Prelude.False--aisDigit =- T.mkVariable tPreludeBuiltin 870001 880025 3 1 "isDigit" Prelude.False--aisOctDigit =- T.mkVariable tPreludeBuiltin 890001 900028 3 1 "isOctDigit" Prelude.False--aisHexDigit =- T.mkVariable tPreludeBuiltin 910001 920028 3 1 "isHexDigit" Prelude.False--aisAlphaNum =- T.mkVariable tPreludeBuiltin 930001 940028 3 1 "isAlphaNum" Prelude.False--atoUpper =- T.mkVariable tPreludeBuiltin 960001 970025 3 1 "toUpper" Prelude.False--atoLower =- T.mkVariable tPreludeBuiltin 980001 990025 3 1 "toLower" Prelude.False--aprimCharToInt =- T.mkVariable tPreludeBuiltin 1020001 1030030 3 1 "primCharToInt" Prelude.False--aprimIntToChar =- T.mkVariable tPreludeBuiltin 1040001 1050031 3 1 "primIntToChar" Prelude.False--aprimUnicodeMaxBound =- T.mkVariable tPreludeBuiltin 1070001 1080029 3 0 "primUnicodeMaxBound"- Prelude.False--aprimIntMinBound =- T.mkVariable tPreludeBuiltin 1140001 1150024 3 0 "primIntMinBound"- Prelude.False--aprimIntMaxBound =- T.mkVariable tPreludeBuiltin 1160001 1170024 3 0 "primIntMaxBound"- Prelude.False--aprimIntEq =- T.mkVariable tPreludeBuiltin 1190001 1200033 3 2 "primIntEq" Prelude.False--aprimIntNe =- T.mkVariable tPreludeBuiltin 1210001 1220033 3 2 "primIntNe" Prelude.False--aprimIntLt =- T.mkVariable tPreludeBuiltin 1230001 1240033 3 2 "primIntLt" Prelude.False--aprimIntLe =- T.mkVariable tPreludeBuiltin 1250001 1260033 3 2 "primIntLe" Prelude.False--aprimIntGt =- T.mkVariable tPreludeBuiltin 1270001 1280033 3 2 "primIntGt" Prelude.False--aprimIntGe =- T.mkVariable tPreludeBuiltin 1290001 1300033 3 2 "primIntGe" Prelude.False--aprimIntQuot =- T.mkVariable tPreludeBuiltin 1310001 1320036 3 2 "primIntQuot" Prelude.False--aprimIntRem =- T.mkVariable tPreludeBuiltin 1330001 1340036 3 2 "primIntRem" Prelude.False--aprimIntPlus =- T.mkVariable tPreludeBuiltin 1350001 1360036 3 2 "primIntPlus" Prelude.False--aprimIntMinus =- T.mkVariable tPreludeBuiltin 1370001 1380036 3 2 "primIntMinus" Prelude.False--aprimIntTimes =- T.mkVariable tPreludeBuiltin 1390001 1400036 3 2 "primIntTimes" Prelude.False--aprimIntNegate =- T.mkVariable tPreludeBuiltin 1410001 1420029 3 1 "primIntNegate" Prelude.False--aprimIntAbs =- T.mkVariable tPreludeBuiltin 1430001 1440029 3 1 "primIntAbs" Prelude.False--aprimIntSignum =- T.mkVariable tPreludeBuiltin 1450001 1460029 3 1 "primIntSignum" Prelude.False--aprimIntegerFromInt =- T.mkVariable tPreludeBuiltin 1480001 1490038 3 1 "primIntegerFromInt"- Prelude.False--aprimIntFromInteger =- T.mkVariable tPreludeBuiltin 1500001 1510038 3 1 "primIntFromInteger"- Prelude.False--aprimIntegerEq =- T.mkVariable tPreludeBuiltin 1530001 1540045 3 2 "primIntegerEq" Prelude.False--aprimIntegerNe =- T.mkVariable tPreludeBuiltin 1550001 1560045 3 2 "primIntegerNe" Prelude.False--aprimIntegerLt =- T.mkVariable tPreludeBuiltin 1570001 1580045 3 2 "primIntegerLt" Prelude.False--aprimIntegerLe =- T.mkVariable tPreludeBuiltin 1590001 1600045 3 2 "primIntegerLe" Prelude.False--aprimIntegerGt =- T.mkVariable tPreludeBuiltin 1610001 1620045 3 2 "primIntegerGt" Prelude.False--aprimIntegerGe =- T.mkVariable tPreludeBuiltin 1630001 1640045 3 2 "primIntegerGe" Prelude.False--aprimIntegerQuot =- T.mkVariable tPreludeBuiltin 1650001 1660053 3 2 "primIntegerQuot"- Prelude.False--aprimIntegerRem =- T.mkVariable tPreludeBuiltin 1670001 1680053 3 2 "primIntegerRem"- Prelude.False--aprimIntegerQuotRem =- T.mkVariable tPreludeBuiltin 1690001 1700062 3 2 "primIntegerQuotRem"- Prelude.False--aprimIntegerAdd =- T.mkVariable tPreludeBuiltin 1710001 1720053 3 2 "primIntegerAdd"- Prelude.False--aprimIntegerSub =- T.mkVariable tPreludeBuiltin 1730001 1740053 3 2 "primIntegerSub"- Prelude.False--aprimIntegerMul =- T.mkVariable tPreludeBuiltin 1750001 1760053 3 2 "primIntegerMul"- Prelude.False--aprimIntegerNeg =- T.mkVariable tPreludeBuiltin 1770001 1780042 3 1 "primIntegerNeg"- Prelude.False--aprimFloatFromInteger =- T.mkVariable tPreludeBuiltin 1800001 1810043 3 1 "primFloatFromInteger"- Prelude.False--aprimFloatRadix =- T.mkVariable tPreludeBuiltin 1820001 1830043 3 1 "primFloatRadix"- Prelude.False--aprimFloatDigits =- T.mkVariable tPreludeBuiltin 1840001 1850039 3 1 "primFloatDigits"- Prelude.False--aprimFloatRange =- T.mkVariable tPreludeBuiltin 1860001 1870044 3 1 "primFloatRange"- Prelude.False--aprimDecodeFloat =- T.mkVariable tPreludeBuiltin 1880001 1890048 3 1 "primDecodeFloat"- Prelude.False--aprimEncodeFloat =- T.mkVariable tPreludeBuiltin 1900001 1910050 3 2 "primEncodeFloat"- Prelude.False--aprimFloatIsNaN =- T.mkVariable tPreludeBuiltin 1920001 1930035 3 1 "primFloatIsNaN"- Prelude.False--aprimFloatIsInfinite =- T.mkVariable tPreludeBuiltin 1940001 1950040 3 1 "primFloatIsInfinite"- Prelude.False--aprimFloatIsDenormalized =- T.mkVariable tPreludeBuiltin 1960001 1970044 3 1 "primFloatIsDenormalized"- Prelude.False--aprimFloatIsNegativeZero =- T.mkVariable tPreludeBuiltin 1980001 1990044 3 1 "primFloatIsNegativeZero"- Prelude.False--aprimFloatIsIEEE =- T.mkVariable tPreludeBuiltin 2000001 2010036 3 1 "primFloatIsIEEE"- Prelude.False--aprimFloatEq =- T.mkVariable tPreludeBuiltin 2030001 2040039 3 2 "primFloatEq" Prelude.False--aprimFloatNe =- T.mkVariable tPreludeBuiltin 2050001 2060039 3 2 "primFloatNe" Prelude.False--aprimFloatLt =- T.mkVariable tPreludeBuiltin 2070001 2080039 3 2 "primFloatLt" Prelude.False--aprimFloatLe =- T.mkVariable tPreludeBuiltin 2090001 2100039 3 2 "primFloatLe" Prelude.False--aprimFloatGt =- T.mkVariable tPreludeBuiltin 2110001 2120039 3 2 "primFloatGt" Prelude.False--aprimFloatGe =- T.mkVariable tPreludeBuiltin 2130001 2140039 3 2 "primFloatGe" Prelude.False--aprimFloatPi =- T.mkVariable tPreludeBuiltin 2150001 2160022 3 0 "primFloatPi" Prelude.False--aprimFloatExp =- T.mkVariable tPreludeBuiltin 2170001 2180033 3 1 "primFloatExp" Prelude.False--aprimFloatLog =- T.mkVariable tPreludeBuiltin 2190001 2200033 3 1 "primFloatLog" Prelude.False--aprimFloatSqrt =- T.mkVariable tPreludeBuiltin 2210001 2220033 3 1 "primFloatSqrt" Prelude.False--aprimFloatSin =- T.mkVariable tPreludeBuiltin 2230001 2240033 3 1 "primFloatSin" Prelude.False--aprimFloatCos =- T.mkVariable tPreludeBuiltin 2250001 2260033 3 1 "primFloatCos" Prelude.False--aprimFloatTan =- T.mkVariable tPreludeBuiltin 2270001 2280033 3 1 "primFloatTan" Prelude.False--aprimFloatAsin =- T.mkVariable tPreludeBuiltin 2290001 2300033 3 1 "primFloatAsin" Prelude.False--aprimFloatAcos =- T.mkVariable tPreludeBuiltin 2310001 2320033 3 1 "primFloatAcos" Prelude.False--aprimFloatAtan =- T.mkVariable tPreludeBuiltin 2330001 2340033 3 1 "primFloatAtan" Prelude.False--aprimFloatDiv =- T.mkVariable tPreludeBuiltin 2350001 2360042 3 2 "primFloatDiv" Prelude.False--aprimFloatAdd =- T.mkVariable tPreludeBuiltin 2370001 2380042 3 2 "primFloatAdd" Prelude.False--aprimFloatSub =- T.mkVariable tPreludeBuiltin 2390001 2400042 3 2 "primFloatSub" Prelude.False--aprimFloatMul =- T.mkVariable tPreludeBuiltin 2410001 2420042 3 2 "primFloatMul" Prelude.False--aprimFloatAbs =- T.mkVariable tPreludeBuiltin 2430001 2440035 3 1 "primFloatAbs" Prelude.False--aprimFloatSignum =- T.mkVariable tPreludeBuiltin 2450001 2460035 3 1 "primFloatSignum"- Prelude.False--aprimDoubleFromInteger =- T.mkVariable tPreludeBuiltin 2480001 2490044 3 1 "primDoubleFromInteger"- Prelude.False--aprimDoubleRadix =- T.mkVariable tPreludeBuiltin 2500001 2510040 3 1 "primDoubleRadix"- Prelude.False--aprimDoubleDigits =- T.mkVariable tPreludeBuiltin 2520001 2530036 3 1 "primDoubleDigits"- Prelude.False--aprimDoubleRange =- T.mkVariable tPreludeBuiltin 2540001 2550041 3 1 "primDoubleRange"- Prelude.False--aprimDecodeDouble =- T.mkVariable tPreludeBuiltin 2560001 2570044 3 1 "primDecodeDouble"- Prelude.False--aprimEncodeDouble =- T.mkVariable tPreludeBuiltin 2580001 2590046 3 2 "primEncodeDouble"- Prelude.False--aprimDoubleIsNaN =- T.mkVariable tPreludeBuiltin 2600001 2610037 3 1 "primDoubleIsNaN"- Prelude.False--aprimDoubleIsInfinite =- T.mkVariable tPreludeBuiltin 2620001 2630042 3 1 "primDoubleIsInfinite"- Prelude.False--aprimDoubleIsDenormalized =- T.mkVariable tPreludeBuiltin 2640001 2650046 3 1 "primDoubleIsDenormalized"- Prelude.False--aprimDoubleIsNegativeZero =- T.mkVariable tPreludeBuiltin 2660001 2670046 3 1 "primDoubleIsNegativeZero"- Prelude.False--aprimDoubleIsIEEE =- T.mkVariable tPreludeBuiltin 2680001 2690038 3 1 "primDoubleIsIEEE"- Prelude.False--aprimDoubleEq =- T.mkVariable tPreludeBuiltin 2710001 2720042 3 2 "primDoubleEq" Prelude.False--aprimDoubleNe =- T.mkVariable tPreludeBuiltin 2730001 2740042 3 2 "primDoubleNe" Prelude.False--aprimDoubleLt =- T.mkVariable tPreludeBuiltin 2750001 2760042 3 2 "primDoubleLt" Prelude.False--aprimDoubleLe =- T.mkVariable tPreludeBuiltin 2770001 2780042 3 2 "primDoubleLe" Prelude.False--aprimDoubleGt =- T.mkVariable tPreludeBuiltin 2790001 2800042 3 2 "primDoubleGt" Prelude.False--aprimDoubleGe =- T.mkVariable tPreludeBuiltin 2810001 2820042 3 2 "primDoubleGe" Prelude.False--aprimDoublePi =- T.mkVariable tPreludeBuiltin 2830001 2840024 3 0 "primDoublePi" Prelude.False--aprimDoubleExp =- T.mkVariable tPreludeBuiltin 2850001 2860036 3 1 "primDoubleExp" Prelude.False--aprimDoubleLog =- T.mkVariable tPreludeBuiltin 2870001 2880036 3 1 "primDoubleLog" Prelude.False--aprimDoubleSqrt =- T.mkVariable tPreludeBuiltin 2890001 2900036 3 1 "primDoubleSqrt"- Prelude.False--aprimDoubleSin =- T.mkVariable tPreludeBuiltin 2910001 2920036 3 1 "primDoubleSin" Prelude.False--aprimDoubleCos =- T.mkVariable tPreludeBuiltin 2930001 2940036 3 1 "primDoubleCos" Prelude.False--aprimDoubleTan =- T.mkVariable tPreludeBuiltin 2950001 2960036 3 1 "primDoubleTan" Prelude.False--aprimDoubleAsin =- T.mkVariable tPreludeBuiltin 2970001 2980036 3 1 "primDoubleAsin"- Prelude.False--aprimDoubleAcos =- T.mkVariable tPreludeBuiltin 2990001 3000036 3 1 "primDoubleAcos"- Prelude.False--aprimDoubleAtan =- T.mkVariable tPreludeBuiltin 3010001 3020036 3 1 "primDoubleAtan"- Prelude.False--aprimDoubleDiv =- T.mkVariable tPreludeBuiltin 3030001 3040046 3 2 "primDoubleDiv" Prelude.False--aprimDoubleAdd =- T.mkVariable tPreludeBuiltin 3050001 3060046 3 2 "primDoubleAdd" Prelude.False--aprimDoubleSub =- T.mkVariable tPreludeBuiltin 3070001 3080046 3 2 "primDoubleSub" Prelude.False--aprimDoubleMul =- T.mkVariable tPreludeBuiltin 3090001 3100046 3 2 "primDoubleMul" Prelude.False--aprimDoubleAbs =- T.mkVariable tPreludeBuiltin 3110001 3120038 3 1 "primDoubleAbs" Prelude.False--aprimDoubleSignum =- T.mkVariable tPreludeBuiltin 3130001 3140038 3 1 "primDoubleSignum"- Prelude.False--aprimIOBind =- T.mkVariable tPreludeBuiltin 3190001 3200041 3 2 "primIOBind" Prelude.False--aprimIOReturn =- T.mkVariable tPreludeBuiltin 3210001 3220025 3 1 "primIOReturn" Prelude.False--aprimIOErrorShow =- T.mkVariable tPreludeBuiltin 3250001 3260038 3 1 "primIOErrorShow"- Prelude.False--aioError =- T.mkVariable tPreludeBuiltin 3340001 3350027 3 1 "ioError" Prelude.False--auserError =- T.mkVariable tPreludeBuiltin 3370001 3380033 3 1 "userError" Prelude.False--acatch = T.mkVariable tPreludeBuiltin 3400001 3410043 3 2 "catch" Prelude.False--aputChar =- T.mkVariable tPreludeBuiltin 3460001 3480023 3 1 "putChar" Prelude.False--agetChar =- T.mkVariable tPreludeBuiltin 3500001 3510024 3 0 "getChar" Prelude.False--agetContents =- T.mkVariable tPreludeBuiltin 3530001 3540024 3 0 "getContents" Prelude.False--areadFile =- T.mkVariable tPreludeBuiltin 3560001 3570034 3 1 "readFile" Prelude.False--awriteFile =- T.mkVariable tPreludeBuiltin 3590001 3600044 3 2 "writeFile" Prelude.False--aappendFile =- T.mkVariable tPreludeBuiltin 3620001 3630044 3 2 "appendFile" Prelude.False+ (Bool(True, False), aTrue, aFalse, Char, Int,+ Integer, Float, Double, IOError, IO, String, gerror,+ aerror, herror, gundefined, gseq, aseq, hseq,+ gisAscii, aisAscii, hisAscii, gisLatin1, aisLatin1,+ hisLatin1, gisControl, aisControl, hisControl,+ gisPrint, aisPrint, hisPrint, gisSpace, aisSpace,+ hisSpace, gisUpper, aisUpper, hisUpper, gisLower,+ aisLower, hisLower, gisAlpha, aisAlpha, hisAlpha,+ gisDigit, aisDigit, hisDigit, gisOctDigit,+ aisOctDigit, hisOctDigit, gisHexDigit, aisHexDigit,+ hisHexDigit, gisAlphaNum, aisAlphaNum, hisAlphaNum,+ gtoUpper, atoUpper, htoUpper, gtoLower, atoLower,+ htoLower, gprimIntToChar, aprimIntToChar,+ hprimIntToChar, gprimCharToInt, aprimCharToInt,+ hprimCharToInt, gprimUnicodeMaxBound,+ gprimIntMinBound, gprimIntMaxBound, gprimIntEq,+ aprimIntEq, hprimIntEq, gprimIntNe, aprimIntNe,+ hprimIntNe, gprimIntLt, aprimIntLt, hprimIntLt,+ gprimIntLe, aprimIntLe, hprimIntLe, gprimIntGt,+ aprimIntGt, hprimIntGt, gprimIntGe, aprimIntGe,+ hprimIntGe, gprimIntQuot, aprimIntQuot, hprimIntQuot,+ gprimIntRem, aprimIntRem, hprimIntRem, gprimIntPlus,+ aprimIntPlus, hprimIntPlus, gprimIntMinus,+ aprimIntMinus, hprimIntMinus, gprimIntTimes,+ aprimIntTimes, hprimIntTimes, gprimIntNegate,+ aprimIntNegate, hprimIntNegate, gprimIntAbs,+ aprimIntAbs, hprimIntAbs, gprimIntSignum,+ aprimIntSignum, hprimIntSignum, gprimIntegerFromInt,+ aprimIntegerFromInt, hprimIntegerFromInt,+ gprimIntFromInteger, aprimIntFromInteger,+ hprimIntFromInteger, gprimIntegerEq, aprimIntegerEq,+ hprimIntegerEq, gprimIntegerNe, aprimIntegerNe,+ hprimIntegerNe, gprimIntegerLt, aprimIntegerLt,+ hprimIntegerLt, gprimIntegerLe, aprimIntegerLe,+ hprimIntegerLe, gprimIntegerGt, aprimIntegerGt,+ hprimIntegerGt, gprimIntegerGe, aprimIntegerGe,+ hprimIntegerGe, gprimIntegerQuot, aprimIntegerQuot,+ hprimIntegerQuot, gprimIntegerRem, aprimIntegerRem,+ hprimIntegerRem, gprimIntegerQuotRem,+ aprimIntegerQuotRem, hprimIntegerQuotRem,+ gprimIntegerAdd, aprimIntegerAdd, hprimIntegerAdd,+ gprimIntegerSub, aprimIntegerSub, hprimIntegerSub,+ gprimIntegerMul, aprimIntegerMul, hprimIntegerMul,+ gprimIntegerNeg, aprimIntegerNeg, hprimIntegerNeg,+ gprimFloatFromInteger, aprimFloatFromInteger,+ hprimFloatFromInteger, gprimFloatRadix,+ aprimFloatRadix, hprimFloatRadix, gprimFloatDigits,+ aprimFloatDigits, hprimFloatDigits, gprimFloatRange,+ aprimFloatRange, hprimFloatRange, gprimDecodeFloat,+ aprimDecodeFloat, hprimDecodeFloat, gprimEncodeFloat,+ aprimEncodeFloat, hprimEncodeFloat, gprimFloatIsNaN,+ aprimFloatIsNaN, hprimFloatIsNaN,+ gprimFloatIsInfinite, aprimFloatIsInfinite,+ hprimFloatIsInfinite, gprimFloatIsDenormalized,+ aprimFloatIsDenormalized, hprimFloatIsDenormalized,+ gprimFloatIsNegativeZero, aprimFloatIsNegativeZero,+ hprimFloatIsNegativeZero, gprimFloatIsIEEE,+ aprimFloatIsIEEE, hprimFloatIsIEEE, gprimFloatEq,+ aprimFloatEq, hprimFloatEq, gprimFloatNe,+ aprimFloatNe, hprimFloatNe, gprimFloatLt,+ aprimFloatLt, hprimFloatLt, gprimFloatLe,+ aprimFloatLe, hprimFloatLe, gprimFloatGt,+ aprimFloatGt, hprimFloatGt, gprimFloatGe,+ aprimFloatGe, hprimFloatGe, gprimFloatPi,+ gprimFloatExp, aprimFloatExp, hprimFloatExp,+ gprimFloatLog, aprimFloatLog, hprimFloatLog,+ gprimFloatSqrt, aprimFloatSqrt, hprimFloatSqrt,+ gprimFloatSin, aprimFloatSin, hprimFloatSin,+ gprimFloatCos, aprimFloatCos, hprimFloatCos,+ gprimFloatTan, aprimFloatTan, hprimFloatTan,+ gprimFloatAsin, aprimFloatAsin, hprimFloatAsin,+ gprimFloatAcos, aprimFloatAcos, hprimFloatAcos,+ gprimFloatAtan, aprimFloatAtan, hprimFloatAtan,+ gprimFloatDiv, aprimFloatDiv, hprimFloatDiv,+ gprimFloatAdd, aprimFloatAdd, hprimFloatAdd,+ gprimFloatSub, aprimFloatSub, hprimFloatSub,+ gprimFloatMul, aprimFloatMul, hprimFloatMul,+ gprimFloatAbs, aprimFloatAbs, hprimFloatAbs,+ gprimFloatSignum, aprimFloatSignum, hprimFloatSignum,+ gprimDoubleFromInteger, aprimDoubleFromInteger,+ hprimDoubleFromInteger, gprimDoubleRadix,+ aprimDoubleRadix, hprimDoubleRadix,+ gprimDoubleDigits, aprimDoubleDigits,+ hprimDoubleDigits, gprimDoubleRange,+ aprimDoubleRange, hprimDoubleRange,+ gprimDecodeDouble, aprimDecodeDouble,+ hprimDecodeDouble, gprimEncodeDouble,+ aprimEncodeDouble, hprimEncodeDouble,+ gprimDoubleIsNaN, aprimDoubleIsNaN, hprimDoubleIsNaN,+ gprimDoubleIsInfinite, aprimDoubleIsInfinite,+ hprimDoubleIsInfinite, gprimDoubleIsDenormalized,+ aprimDoubleIsDenormalized, hprimDoubleIsDenormalized,+ gprimDoubleIsNegativeZero, aprimDoubleIsNegativeZero,+ hprimDoubleIsNegativeZero, gprimDoubleIsIEEE,+ aprimDoubleIsIEEE, hprimDoubleIsIEEE, gprimDoubleEq,+ aprimDoubleEq, hprimDoubleEq, gprimDoubleNe,+ aprimDoubleNe, hprimDoubleNe, gprimDoubleLt,+ aprimDoubleLt, hprimDoubleLt, gprimDoubleLe,+ aprimDoubleLe, hprimDoubleLe, gprimDoubleGt,+ aprimDoubleGt, hprimDoubleGt, gprimDoubleGe,+ aprimDoubleGe, hprimDoubleGe, gprimDoublePi,+ gprimDoubleExp, aprimDoubleExp, hprimDoubleExp,+ gprimDoubleLog, aprimDoubleLog, hprimDoubleLog,+ gprimDoubleSqrt, aprimDoubleSqrt, hprimDoubleSqrt,+ gprimDoubleSin, aprimDoubleSin, hprimDoubleSin,+ gprimDoubleCos, aprimDoubleCos, hprimDoubleCos,+ gprimDoubleTan, aprimDoubleTan, hprimDoubleTan,+ gprimDoubleAsin, aprimDoubleAsin, hprimDoubleAsin,+ gprimDoubleAcos, aprimDoubleAcos, hprimDoubleAcos,+ gprimDoubleAtan, aprimDoubleAtan, hprimDoubleAtan,+ gprimDoubleDiv, aprimDoubleDiv, hprimDoubleDiv,+ gprimDoubleAdd, aprimDoubleAdd, hprimDoubleAdd,+ gprimDoubleSub, aprimDoubleSub, hprimDoubleSub,+ gprimDoubleMul, aprimDoubleMul, hprimDoubleMul,+ gprimDoubleAbs, aprimDoubleAbs, hprimDoubleAbs,+ gprimDoubleSignum, aprimDoubleSignum,+ hprimDoubleSignum, gprimIOBind, aprimIOBind,+ hprimIOBind, gprimIOReturn, aprimIOReturn,+ hprimIOReturn, gioError, aioError, hioError,+ guserError, auserError, huserError, gcatch, acatch,+ hcatch, gputChar, aputChar, hputChar, ggetChar,+ ggetContents, greadFile, areadFile, hreadFile,+ gwriteFile, awriteFile, hwriteFile, gappendFile,+ aappendFile, happendFile, gprimIOErrorShow,+ aprimIOErrorShow, hprimIOErrorShow)+ where+import qualified Prelude+import qualified Hat.Hat as T+import Hat.PreludeBuiltinTypes as T+import Hat.Hat+import qualified Prelude+import qualified System.IO.Error+import qualified Data.Char as Char+ +gseq ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (T.Fun b b))+gseq pseq p = T.ufun2 aseq pseq p hseq+hseq z1seq z2seq kseq+ = T.fromId kseq+ (Prelude.seq (T.toId kseq z1seq) (T.toId kseq z2seq))+ +gisAscii ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisAscii pisAscii p+ = T.ufun1 aisAscii pisAscii p hisAscii+hisAscii z1isAscii kisAscii+ = T.fromBool kisAscii+ (Char.isAscii (T.toChar kisAscii z1isAscii))+ +gisLatin1 ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisLatin1 pisLatin1 p+ = T.ufun1 aisLatin1 pisLatin1 p hisLatin1+hisLatin1 z1isLatin1 kisLatin1+ = T.fromBool kisLatin1+ (Char.isLatin1 (T.toChar kisLatin1 z1isLatin1))+ +gisControl ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisControl pisControl p+ = T.ufun1 aisControl pisControl p hisControl+hisControl z1isControl kisControl+ = T.fromBool kisControl+ (Char.isControl (T.toChar kisControl z1isControl))+ +gisPrint ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisPrint pisPrint p+ = T.ufun1 aisPrint pisPrint p hisPrint+hisPrint z1isPrint kisPrint+ = T.fromBool kisPrint+ (Char.isPrint (T.toChar kisPrint z1isPrint))+ +gisSpace ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisSpace pisSpace p+ = T.ufun1 aisSpace pisSpace p hisSpace+hisSpace z1isSpace kisSpace+ = T.fromBool kisSpace+ (Char.isSpace (T.toChar kisSpace z1isSpace))+ +gisUpper ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisUpper pisUpper p+ = T.ufun1 aisUpper pisUpper p hisUpper+hisUpper z1isUpper kisUpper+ = T.fromBool kisUpper+ (Char.isUpper (T.toChar kisUpper z1isUpper))+ +gisLower ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisLower pisLower p+ = T.ufun1 aisLower pisLower p hisLower+hisLower z1isLower kisLower+ = T.fromBool kisLower+ (Char.isLower (T.toChar kisLower z1isLower))+ +gisAlpha ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisAlpha pisAlpha p+ = T.ufun1 aisAlpha pisAlpha p hisAlpha+hisAlpha z1isAlpha kisAlpha+ = T.fromBool kisAlpha+ (Char.isAlpha (T.toChar kisAlpha z1isAlpha))+ +gisDigit ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisDigit pisDigit p+ = T.ufun1 aisDigit pisDigit p hisDigit+hisDigit z1isDigit kisDigit+ = T.fromBool kisDigit+ (Char.isDigit (T.toChar kisDigit z1isDigit))+ +gisOctDigit ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisOctDigit pisOctDigit p+ = T.ufun1 aisOctDigit pisOctDigit p hisOctDigit+hisOctDigit z1isOctDigit kisOctDigit+ = T.fromBool kisOctDigit+ (Char.isOctDigit (T.toChar kisOctDigit z1isOctDigit))+ +gisHexDigit ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisHexDigit pisHexDigit p+ = T.ufun1 aisHexDigit pisHexDigit p hisHexDigit+hisHexDigit z1isHexDigit kisHexDigit+ = T.fromBool kisHexDigit+ (Char.isHexDigit (T.toChar kisHexDigit z1isHexDigit))+ +gisAlphaNum ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Bool)+gisAlphaNum pisAlphaNum p+ = T.ufun1 aisAlphaNum pisAlphaNum p hisAlphaNum+hisAlphaNum z1isAlphaNum kisAlphaNum+ = T.fromBool kisAlphaNum+ (Char.isAlphaNum (T.toChar kisAlphaNum z1isAlphaNum))+ +gtoUpper ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Char)+gtoUpper ptoUpper p+ = T.ufun1 atoUpper ptoUpper p htoUpper+htoUpper z1toUpper ktoUpper+ = T.fromChar ktoUpper+ (Char.toUpper (T.toChar ktoUpper z1toUpper))+ +gtoLower ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Char)+gtoLower ptoLower p+ = T.ufun1 atoLower ptoLower p htoLower+htoLower z1toLower ktoLower+ = T.fromChar ktoLower+ (Char.toLower (T.toChar ktoLower z1toLower))+ +gprimCharToInt ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Char Int)+gprimCharToInt pprimCharToInt p+ = T.ufun1 aprimCharToInt pprimCharToInt p+ hprimCharToInt+hprimCharToInt z1primCharToInt kprimCharToInt+ = T.fromInt kprimCharToInt+ (Char.ord (T.toChar kprimCharToInt z1primCharToInt))+ +gprimIntToChar ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Char)+gprimIntToChar pprimIntToChar p+ = T.ufun1 aprimIntToChar pprimIntToChar p+ hprimIntToChar+hprimIntToChar z1primIntToChar kprimIntToChar+ = T.fromChar kprimIntToChar+ (Char.chr (T.toInt kprimIntToChar z1primIntToChar))+ +gprimUnicodeMaxBound ::+ T.RefSrcPos -> T.RefExp -> T.R Char+gprimUnicodeMaxBound pprimUnicodeMaxBound p+ = T.uconstUse pprimUnicodeMaxBound p+ sprimUnicodeMaxBound+sprimUnicodeMaxBound+ = T.uconstDef p aprimUnicodeMaxBound+ (\ p -> T.fromChar p Prelude.maxBound)+ +gprimIntMinBound ::+ T.RefSrcPos -> T.RefExp -> T.R Int+gprimIntMinBound pprimIntMinBound p+ = T.uconstUse pprimIntMinBound p sprimIntMinBound+sprimIntMinBound+ = T.uconstDef p aprimIntMinBound+ (\ p -> T.fromInt p Prelude.minBound)+ +gprimIntMaxBound ::+ T.RefSrcPos -> T.RefExp -> T.R Int+gprimIntMaxBound pprimIntMaxBound p+ = T.uconstUse pprimIntMaxBound p sprimIntMaxBound+sprimIntMaxBound+ = T.uconstDef p aprimIntMaxBound+ (\ p -> T.fromInt p Prelude.maxBound)+ +gprimIntEq ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))+gprimIntEq pprimIntEq p+ = T.ufun2 aprimIntEq pprimIntEq p hprimIntEq+hprimIntEq z1primIntEq z2primIntEq kprimIntEq+ = T.fromBool kprimIntEq+ ((Prelude.==) (T.toInt kprimIntEq z1primIntEq)+ (T.toInt kprimIntEq z2primIntEq))+ +gprimIntNe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))+gprimIntNe pprimIntNe p+ = T.ufun2 aprimIntNe pprimIntNe p hprimIntNe+hprimIntNe z1primIntNe z2primIntNe kprimIntNe+ = T.fromBool kprimIntNe+ ((Prelude./=) (T.toInt kprimIntNe z1primIntNe)+ (T.toInt kprimIntNe z2primIntNe))+ +gprimIntLt ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))+gprimIntLt pprimIntLt p+ = T.ufun2 aprimIntLt pprimIntLt p hprimIntLt+hprimIntLt z1primIntLt z2primIntLt kprimIntLt+ = T.fromBool kprimIntLt+ ((Prelude.<) (T.toInt kprimIntLt z1primIntLt)+ (T.toInt kprimIntLt z2primIntLt))+ +gprimIntLe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))+gprimIntLe pprimIntLe p+ = T.ufun2 aprimIntLe pprimIntLe p hprimIntLe+hprimIntLe z1primIntLe z2primIntLe kprimIntLe+ = T.fromBool kprimIntLe+ ((Prelude.<=) (T.toInt kprimIntLe z1primIntLe)+ (T.toInt kprimIntLe z2primIntLe))+ +gprimIntGt ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))+gprimIntGt pprimIntGt p+ = T.ufun2 aprimIntGt pprimIntGt p hprimIntGt+hprimIntGt z1primIntGt z2primIntGt kprimIntGt+ = T.fromBool kprimIntGt+ ((Prelude.>) (T.toInt kprimIntGt z1primIntGt)+ (T.toInt kprimIntGt z2primIntGt))+ +gprimIntGe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Bool))+gprimIntGe pprimIntGe p+ = T.ufun2 aprimIntGe pprimIntGe p hprimIntGe+hprimIntGe z1primIntGe z2primIntGe kprimIntGe+ = T.fromBool kprimIntGe+ ((Prelude.>=) (T.toInt kprimIntGe z1primIntGe)+ (T.toInt kprimIntGe z2primIntGe))+ +gprimIntQuot ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))+gprimIntQuot pprimIntQuot p+ = T.ufun2 aprimIntQuot pprimIntQuot p hprimIntQuot+hprimIntQuot z1primIntQuot z2primIntQuot kprimIntQuot+ = T.fromInt kprimIntQuot+ (Prelude.quot (T.toInt kprimIntQuot z1primIntQuot)+ (T.toInt kprimIntQuot z2primIntQuot))+ +gprimIntRem ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))+gprimIntRem pprimIntRem p+ = T.ufun2 aprimIntRem pprimIntRem p hprimIntRem+hprimIntRem z1primIntRem z2primIntRem kprimIntRem+ = T.fromInt kprimIntRem+ (Prelude.rem (T.toInt kprimIntRem z1primIntRem)+ (T.toInt kprimIntRem z2primIntRem))+ +gprimIntPlus ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))+gprimIntPlus pprimIntPlus p+ = T.ufun2 aprimIntPlus pprimIntPlus p hprimIntPlus+hprimIntPlus z1primIntPlus z2primIntPlus kprimIntPlus+ = T.fromInt kprimIntPlus+ ((Prelude.+) (T.toInt kprimIntPlus z1primIntPlus)+ (T.toInt kprimIntPlus z2primIntPlus))+ +gprimIntMinus ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))+gprimIntMinus pprimIntMinus p+ = T.ufun2 aprimIntMinus pprimIntMinus p hprimIntMinus+hprimIntMinus z1primIntMinus z2primIntMinus+ kprimIntMinus+ = T.fromInt kprimIntMinus+ ((Prelude.-) (T.toInt kprimIntMinus z1primIntMinus)+ (T.toInt kprimIntMinus z2primIntMinus))+ +gprimIntTimes ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int (T.Fun Int Int))+gprimIntTimes pprimIntTimes p+ = T.ufun2 aprimIntTimes pprimIntTimes p hprimIntTimes+hprimIntTimes z1primIntTimes z2primIntTimes+ kprimIntTimes+ = T.fromInt kprimIntTimes+ ((Prelude.*) (T.toInt kprimIntTimes z1primIntTimes)+ (T.toInt kprimIntTimes z2primIntTimes))+ +gprimIntNegate ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)+gprimIntNegate pprimIntNegate p+ = T.ufun1 aprimIntNegate pprimIntNegate p+ hprimIntNegate+hprimIntNegate z1primIntNegate kprimIntNegate+ = T.fromInt kprimIntNegate+ (Prelude.negate+ (T.toInt kprimIntNegate z1primIntNegate))+ +gprimIntAbs ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)+gprimIntAbs pprimIntAbs p+ = T.ufun1 aprimIntAbs pprimIntAbs p hprimIntAbs+hprimIntAbs z1primIntAbs kprimIntAbs+ = T.fromInt kprimIntAbs+ (Prelude.abs (T.toInt kprimIntAbs z1primIntAbs))+ +gprimIntSignum ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Int)+gprimIntSignum pprimIntSignum p+ = T.ufun1 aprimIntSignum pprimIntSignum p+ hprimIntSignum+hprimIntSignum z1primIntSignum kprimIntSignum+ = T.fromInt kprimIntSignum+ (Prelude.signum+ (T.toInt kprimIntSignum z1primIntSignum))+ +gprimIntegerFromInt ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Integer)+gprimIntegerFromInt pprimIntegerFromInt p+ = T.ufun1 aprimIntegerFromInt pprimIntegerFromInt p+ hprimIntegerFromInt+hprimIntegerFromInt z1primIntegerFromInt+ kprimIntegerFromInt+ = T.fromInteger kprimIntegerFromInt+ (Prelude.toInteger+ (T.toInt kprimIntegerFromInt z1primIntegerFromInt))+ +gprimIntFromInteger ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer Int)+gprimIntFromInteger pprimIntFromInteger p+ = T.ufun1 aprimIntFromInteger pprimIntFromInteger p+ hprimIntFromInteger+hprimIntFromInteger z1primIntFromInteger+ kprimIntFromInteger+ = T.fromInt kprimIntFromInteger+ (Prelude.fromInteger+ (T.toInteger kprimIntFromInteger+ z1primIntFromInteger))+ +gprimIntegerEq ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))+gprimIntegerEq pprimIntegerEq p+ = T.ufun2 aprimIntegerEq pprimIntegerEq p+ hprimIntegerEq+hprimIntegerEq z1primIntegerEq z2primIntegerEq+ kprimIntegerEq+ = T.fromBool kprimIntegerEq+ ((Prelude.==)+ (T.toInteger kprimIntegerEq z1primIntegerEq)+ (T.toInteger kprimIntegerEq z2primIntegerEq))+ +gprimIntegerNe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))+gprimIntegerNe pprimIntegerNe p+ = T.ufun2 aprimIntegerNe pprimIntegerNe p+ hprimIntegerNe+hprimIntegerNe z1primIntegerNe z2primIntegerNe+ kprimIntegerNe+ = T.fromBool kprimIntegerNe+ ((Prelude./=)+ (T.toInteger kprimIntegerNe z1primIntegerNe)+ (T.toInteger kprimIntegerNe z2primIntegerNe))+ +gprimIntegerLt ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))+gprimIntegerLt pprimIntegerLt p+ = T.ufun2 aprimIntegerLt pprimIntegerLt p+ hprimIntegerLt+hprimIntegerLt z1primIntegerLt z2primIntegerLt+ kprimIntegerLt+ = T.fromBool kprimIntegerLt+ ((Prelude.<)+ (T.toInteger kprimIntegerLt z1primIntegerLt)+ (T.toInteger kprimIntegerLt z2primIntegerLt))+ +gprimIntegerLe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))+gprimIntegerLe pprimIntegerLe p+ = T.ufun2 aprimIntegerLe pprimIntegerLe p+ hprimIntegerLe+hprimIntegerLe z1primIntegerLe z2primIntegerLe+ kprimIntegerLe+ = T.fromBool kprimIntegerLe+ ((Prelude.<=)+ (T.toInteger kprimIntegerLe z1primIntegerLe)+ (T.toInteger kprimIntegerLe z2primIntegerLe))+ +gprimIntegerGt ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))+gprimIntegerGt pprimIntegerGt p+ = T.ufun2 aprimIntegerGt pprimIntegerGt p+ hprimIntegerGt+hprimIntegerGt z1primIntegerGt z2primIntegerGt+ kprimIntegerGt+ = T.fromBool kprimIntegerGt+ ((Prelude.>)+ (T.toInteger kprimIntegerGt z1primIntegerGt)+ (T.toInteger kprimIntegerGt z2primIntegerGt))+ +gprimIntegerGe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Bool))+gprimIntegerGe pprimIntegerGe p+ = T.ufun2 aprimIntegerGe pprimIntegerGe p+ hprimIntegerGe+hprimIntegerGe z1primIntegerGe z2primIntegerGe+ kprimIntegerGe+ = T.fromBool kprimIntegerGe+ ((Prelude.>=)+ (T.toInteger kprimIntegerGe z1primIntegerGe)+ (T.toInteger kprimIntegerGe z2primIntegerGe))+ +gprimIntegerQuot ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Integer (T.Fun Integer Integer))+gprimIntegerQuot pprimIntegerQuot p+ = T.ufun2 aprimIntegerQuot pprimIntegerQuot p+ hprimIntegerQuot+hprimIntegerQuot z1primIntegerQuot z2primIntegerQuot+ kprimIntegerQuot+ = T.fromInteger kprimIntegerQuot+ (Prelude.quot+ (T.toInteger kprimIntegerQuot z1primIntegerQuot)+ (T.toInteger kprimIntegerQuot z2primIntegerQuot))+ +gprimIntegerRem ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Integer (T.Fun Integer Integer))+gprimIntegerRem pprimIntegerRem p+ = T.ufun2 aprimIntegerRem pprimIntegerRem p+ hprimIntegerRem+hprimIntegerRem z1primIntegerRem z2primIntegerRem+ kprimIntegerRem+ = T.fromInteger kprimIntegerRem+ (Prelude.rem+ (T.toInteger kprimIntegerRem z1primIntegerRem)+ (T.toInteger kprimIntegerRem z2primIntegerRem))+ +gprimIntegerQuotRem ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun Integer+ (T.Fun Integer (T.Tuple2 Integer Integer)))+gprimIntegerQuotRem pprimIntegerQuotRem p+ = T.ufun2 aprimIntegerQuotRem pprimIntegerQuotRem p+ hprimIntegerQuotRem+hprimIntegerQuotRem z1primIntegerQuotRem+ z2primIntegerQuotRem kprimIntegerQuotRem+ = T.fromTuple2 T.fromInteger T.fromInteger+ kprimIntegerQuotRem+ (Prelude.quotRem+ (T.toInteger kprimIntegerQuotRem+ z1primIntegerQuotRem)+ (T.toInteger kprimIntegerQuotRem+ z2primIntegerQuotRem))+ +gprimIntegerAdd ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Integer (T.Fun Integer Integer))+gprimIntegerAdd pprimIntegerAdd p+ = T.ufun2 aprimIntegerAdd pprimIntegerAdd p+ hprimIntegerAdd+hprimIntegerAdd z1primIntegerAdd z2primIntegerAdd+ kprimIntegerAdd+ = T.fromInteger kprimIntegerAdd+ ((Prelude.+)+ (T.toInteger kprimIntegerAdd z1primIntegerAdd)+ (T.toInteger kprimIntegerAdd z2primIntegerAdd))+ +gprimIntegerSub ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Integer (T.Fun Integer Integer))+gprimIntegerSub pprimIntegerSub p+ = T.ufun2 aprimIntegerSub pprimIntegerSub p+ hprimIntegerSub+hprimIntegerSub z1primIntegerSub z2primIntegerSub+ kprimIntegerSub+ = T.fromInteger kprimIntegerSub+ ((Prelude.-)+ (T.toInteger kprimIntegerSub z1primIntegerSub)+ (T.toInteger kprimIntegerSub z2primIntegerSub))+ +gprimIntegerMul ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Integer (T.Fun Integer Integer))+gprimIntegerMul pprimIntegerMul p+ = T.ufun2 aprimIntegerMul pprimIntegerMul p+ hprimIntegerMul+hprimIntegerMul z1primIntegerMul z2primIntegerMul+ kprimIntegerMul+ = T.fromInteger kprimIntegerMul+ ((Prelude.*)+ (T.toInteger kprimIntegerMul z1primIntegerMul)+ (T.toInteger kprimIntegerMul z2primIntegerMul))+ +gprimIntegerNeg ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer Integer)+gprimIntegerNeg pprimIntegerNeg p+ = T.ufun1 aprimIntegerNeg pprimIntegerNeg p+ hprimIntegerNeg+hprimIntegerNeg z1primIntegerNeg kprimIntegerNeg+ = T.fromInteger kprimIntegerNeg+ (Prelude.negate+ (T.toInteger kprimIntegerNeg z1primIntegerNeg))+ +gprimFloatFromInteger ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer Float)+gprimFloatFromInteger pprimFloatFromInteger p+ = T.ufun1 aprimFloatFromInteger pprimFloatFromInteger+ p+ hprimFloatFromInteger+hprimFloatFromInteger z1primFloatFromInteger+ kprimFloatFromInteger+ = T.fromFloat kprimFloatFromInteger+ (Prelude.fromInteger+ (T.toInteger kprimFloatFromInteger+ z1primFloatFromInteger))+ +gprimFloatRadix ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Integer)+gprimFloatRadix pprimFloatRadix p+ = T.ufun1 aprimFloatRadix pprimFloatRadix p+ hprimFloatRadix+hprimFloatRadix z1primFloatRadix kprimFloatRadix+ = T.fromInteger kprimFloatRadix+ (Prelude.floatRadix+ (T.toFloat kprimFloatRadix z1primFloatRadix))+ +gprimFloatDigits ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Int)+gprimFloatDigits pprimFloatDigits p+ = T.ufun1 aprimFloatDigits pprimFloatDigits p+ hprimFloatDigits+hprimFloatDigits z1primFloatDigits kprimFloatDigits+ = T.fromInt kprimFloatDigits+ (Prelude.floatDigits+ (T.toFloat kprimFloatDigits z1primFloatDigits))+ +gprimFloatRange ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Tuple2 Int Int))+gprimFloatRange pprimFloatRange p+ = T.ufun1 aprimFloatRange pprimFloatRange p+ hprimFloatRange+hprimFloatRange z1primFloatRange kprimFloatRange+ = T.fromTuple2 T.fromInt T.fromInt kprimFloatRange+ (Prelude.floatRange+ (T.toFloat kprimFloatRange z1primFloatRange))+ +gprimDecodeFloat ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Tuple2 Integer Int))+gprimDecodeFloat pprimDecodeFloat p+ = T.ufun1 aprimDecodeFloat pprimDecodeFloat p+ hprimDecodeFloat+hprimDecodeFloat z1primDecodeFloat kprimDecodeFloat+ = T.fromTuple2 T.fromInteger T.fromInt+ kprimDecodeFloat+ (Prelude.decodeFloat+ (T.toFloat kprimDecodeFloat z1primDecodeFloat))+ +gprimEncodeFloat ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer (T.Fun Int Float))+gprimEncodeFloat pprimEncodeFloat p+ = T.ufun2 aprimEncodeFloat pprimEncodeFloat p+ hprimEncodeFloat+hprimEncodeFloat z1primEncodeFloat z2primEncodeFloat+ kprimEncodeFloat+ = T.fromFloat kprimEncodeFloat+ (Prelude.encodeFloat+ (T.toInteger kprimEncodeFloat z1primEncodeFloat)+ (T.toInt kprimEncodeFloat z2primEncodeFloat))+ +gprimFloatIsNaN ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)+gprimFloatIsNaN pprimFloatIsNaN p+ = T.ufun1 aprimFloatIsNaN pprimFloatIsNaN p+ hprimFloatIsNaN+hprimFloatIsNaN z1primFloatIsNaN kprimFloatIsNaN+ = T.fromBool kprimFloatIsNaN+ (Prelude.isNaN+ (T.toFloat kprimFloatIsNaN z1primFloatIsNaN))+ +gprimFloatIsInfinite ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)+gprimFloatIsInfinite pprimFloatIsInfinite p+ = T.ufun1 aprimFloatIsInfinite pprimFloatIsInfinite p+ hprimFloatIsInfinite+hprimFloatIsInfinite z1primFloatIsInfinite+ kprimFloatIsInfinite+ = T.fromBool kprimFloatIsInfinite+ (Prelude.isInfinite+ (T.toFloat kprimFloatIsInfinite+ z1primFloatIsInfinite))+ +gprimFloatIsDenormalized ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)+gprimFloatIsDenormalized pprimFloatIsDenormalized p+ = T.ufun1 aprimFloatIsDenormalized+ pprimFloatIsDenormalized+ p+ hprimFloatIsDenormalized+hprimFloatIsDenormalized z1primFloatIsDenormalized+ kprimFloatIsDenormalized+ = T.fromBool kprimFloatIsDenormalized+ (Prelude.isDenormalized+ (T.toFloat kprimFloatIsDenormalized+ z1primFloatIsDenormalized))+ +gprimFloatIsNegativeZero ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)+gprimFloatIsNegativeZero pprimFloatIsNegativeZero p+ = T.ufun1 aprimFloatIsNegativeZero+ pprimFloatIsNegativeZero+ p+ hprimFloatIsNegativeZero+hprimFloatIsNegativeZero z1primFloatIsNegativeZero+ kprimFloatIsNegativeZero+ = T.fromBool kprimFloatIsNegativeZero+ (Prelude.isNegativeZero+ (T.toFloat kprimFloatIsNegativeZero+ z1primFloatIsNegativeZero))+ +gprimFloatIsIEEE ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Bool)+gprimFloatIsIEEE pprimFloatIsIEEE p+ = T.ufun1 aprimFloatIsIEEE pprimFloatIsIEEE p+ hprimFloatIsIEEE+hprimFloatIsIEEE z1primFloatIsIEEE kprimFloatIsIEEE+ = T.fromBool kprimFloatIsIEEE+ (Prelude.isIEEE+ (T.toFloat kprimFloatIsIEEE z1primFloatIsIEEE))+ +gprimFloatEq ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))+gprimFloatEq pprimFloatEq p+ = T.ufun2 aprimFloatEq pprimFloatEq p hprimFloatEq+hprimFloatEq z1primFloatEq z2primFloatEq kprimFloatEq+ = T.fromBool kprimFloatEq+ ((Prelude.==) (T.toFloat kprimFloatEq z1primFloatEq)+ (T.toFloat kprimFloatEq z2primFloatEq))+ +gprimFloatNe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))+gprimFloatNe pprimFloatNe p+ = T.ufun2 aprimFloatNe pprimFloatNe p hprimFloatNe+hprimFloatNe z1primFloatNe z2primFloatNe kprimFloatNe+ = T.fromBool kprimFloatNe+ ((Prelude./=) (T.toFloat kprimFloatNe z1primFloatNe)+ (T.toFloat kprimFloatNe z2primFloatNe))+ +gprimFloatLt ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))+gprimFloatLt pprimFloatLt p+ = T.ufun2 aprimFloatLt pprimFloatLt p hprimFloatLt+hprimFloatLt z1primFloatLt z2primFloatLt kprimFloatLt+ = T.fromBool kprimFloatLt+ ((Prelude.<) (T.toFloat kprimFloatLt z1primFloatLt)+ (T.toFloat kprimFloatLt z2primFloatLt))+ +gprimFloatLe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))+gprimFloatLe pprimFloatLe p+ = T.ufun2 aprimFloatLe pprimFloatLe p hprimFloatLe+hprimFloatLe z1primFloatLe z2primFloatLe kprimFloatLe+ = T.fromBool kprimFloatLe+ ((Prelude.<=) (T.toFloat kprimFloatLe z1primFloatLe)+ (T.toFloat kprimFloatLe z2primFloatLe))+ +gprimFloatGt ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))+gprimFloatGt pprimFloatGt p+ = T.ufun2 aprimFloatGt pprimFloatGt p hprimFloatGt+hprimFloatGt z1primFloatGt z2primFloatGt kprimFloatGt+ = T.fromBool kprimFloatGt+ ((Prelude.>) (T.toFloat kprimFloatGt z1primFloatGt)+ (T.toFloat kprimFloatGt z2primFloatGt))+ +gprimFloatGe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Bool))+gprimFloatGe pprimFloatGe p+ = T.ufun2 aprimFloatGe pprimFloatGe p hprimFloatGe+hprimFloatGe z1primFloatGe z2primFloatGe kprimFloatGe+ = T.fromBool kprimFloatGe+ ((Prelude.>=) (T.toFloat kprimFloatGe z1primFloatGe)+ (T.toFloat kprimFloatGe z2primFloatGe))+ +gprimFloatPi :: T.RefSrcPos -> T.RefExp -> T.R Float+gprimFloatPi pprimFloatPi p+ = T.uconstUse pprimFloatPi p sprimFloatPi+sprimFloatPi+ = T.uconstDef p aprimFloatPi+ (\ p -> T.fromFloat p Prelude.pi)+ +gprimFloatExp ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatExp pprimFloatExp p+ = T.ufun1 aprimFloatExp pprimFloatExp p hprimFloatExp+hprimFloatExp z1primFloatExp kprimFloatExp+ = T.fromFloat kprimFloatExp+ (Prelude.exp+ (T.toFloat kprimFloatExp z1primFloatExp))+ +gprimFloatLog ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatLog pprimFloatLog p+ = T.ufun1 aprimFloatLog pprimFloatLog p hprimFloatLog+hprimFloatLog z1primFloatLog kprimFloatLog+ = T.fromFloat kprimFloatLog+ (Prelude.log+ (T.toFloat kprimFloatLog z1primFloatLog))+ +gprimFloatSqrt ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatSqrt pprimFloatSqrt p+ = T.ufun1 aprimFloatSqrt pprimFloatSqrt p+ hprimFloatSqrt+hprimFloatSqrt z1primFloatSqrt kprimFloatSqrt+ = T.fromFloat kprimFloatSqrt+ (Prelude.sqrt+ (T.toFloat kprimFloatSqrt z1primFloatSqrt))+ +gprimFloatSin ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatSin pprimFloatSin p+ = T.ufun1 aprimFloatSin pprimFloatSin p hprimFloatSin+hprimFloatSin z1primFloatSin kprimFloatSin+ = T.fromFloat kprimFloatSin+ (Prelude.sin+ (T.toFloat kprimFloatSin z1primFloatSin))+ +gprimFloatCos ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatCos pprimFloatCos p+ = T.ufun1 aprimFloatCos pprimFloatCos p hprimFloatCos+hprimFloatCos z1primFloatCos kprimFloatCos+ = T.fromFloat kprimFloatCos+ (Prelude.cos+ (T.toFloat kprimFloatCos z1primFloatCos))+ +gprimFloatTan ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatTan pprimFloatTan p+ = T.ufun1 aprimFloatTan pprimFloatTan p hprimFloatTan+hprimFloatTan z1primFloatTan kprimFloatTan+ = T.fromFloat kprimFloatTan+ (Prelude.tan+ (T.toFloat kprimFloatTan z1primFloatTan))+ +gprimFloatAsin ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatAsin pprimFloatAsin p+ = T.ufun1 aprimFloatAsin pprimFloatAsin p+ hprimFloatAsin+hprimFloatAsin z1primFloatAsin kprimFloatAsin+ = T.fromFloat kprimFloatAsin+ (Prelude.asin+ (T.toFloat kprimFloatAsin z1primFloatAsin))+ +gprimFloatAcos ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatAcos pprimFloatAcos p+ = T.ufun1 aprimFloatAcos pprimFloatAcos p+ hprimFloatAcos+hprimFloatAcos z1primFloatAcos kprimFloatAcos+ = T.fromFloat kprimFloatAcos+ (Prelude.acos+ (T.toFloat kprimFloatAcos z1primFloatAcos))+ +gprimFloatAtan ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatAtan pprimFloatAtan p+ = T.ufun1 aprimFloatAtan pprimFloatAtan p+ hprimFloatAtan+hprimFloatAtan z1primFloatAtan kprimFloatAtan+ = T.fromFloat kprimFloatAtan+ (Prelude.atan+ (T.toFloat kprimFloatAtan z1primFloatAtan))+ +gprimFloatDiv ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Float))+gprimFloatDiv pprimFloatDiv p+ = T.ufun2 aprimFloatDiv pprimFloatDiv p hprimFloatDiv+hprimFloatDiv z1primFloatDiv z2primFloatDiv+ kprimFloatDiv+ = T.fromFloat kprimFloatDiv+ ((Prelude./) (T.toFloat kprimFloatDiv z1primFloatDiv)+ (T.toFloat kprimFloatDiv z2primFloatDiv))+ +gprimFloatAdd ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Float))+gprimFloatAdd pprimFloatAdd p+ = T.ufun2 aprimFloatAdd pprimFloatAdd p hprimFloatAdd+hprimFloatAdd z1primFloatAdd z2primFloatAdd+ kprimFloatAdd+ = T.fromFloat kprimFloatAdd+ ((Prelude.+) (T.toFloat kprimFloatAdd z1primFloatAdd)+ (T.toFloat kprimFloatAdd z2primFloatAdd))+ +gprimFloatSub ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Float))+gprimFloatSub pprimFloatSub p+ = T.ufun2 aprimFloatSub pprimFloatSub p hprimFloatSub+hprimFloatSub z1primFloatSub z2primFloatSub+ kprimFloatSub+ = T.fromFloat kprimFloatSub+ ((Prelude.-) (T.toFloat kprimFloatSub z1primFloatSub)+ (T.toFloat kprimFloatSub z2primFloatSub))+ +gprimFloatMul ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Float (T.Fun Float Float))+gprimFloatMul pprimFloatMul p+ = T.ufun2 aprimFloatMul pprimFloatMul p hprimFloatMul+hprimFloatMul z1primFloatMul z2primFloatMul+ kprimFloatMul+ = T.fromFloat kprimFloatMul+ ((Prelude.*) (T.toFloat kprimFloatMul z1primFloatMul)+ (T.toFloat kprimFloatMul z2primFloatMul))+ +gprimFloatAbs ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatAbs pprimFloatAbs p+ = T.ufun1 aprimFloatAbs pprimFloatAbs p hprimFloatAbs+hprimFloatAbs z1primFloatAbs kprimFloatAbs+ = T.fromFloat kprimFloatAbs+ (Prelude.abs+ (T.toFloat kprimFloatAbs z1primFloatAbs))+ +gprimFloatSignum ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Float Float)+gprimFloatSignum pprimFloatSignum p+ = T.ufun1 aprimFloatSignum pprimFloatSignum p+ hprimFloatSignum+hprimFloatSignum z1primFloatSignum kprimFloatSignum+ = T.fromFloat kprimFloatSignum+ (Prelude.signum+ (T.toFloat kprimFloatSignum z1primFloatSignum))+ +gprimDoubleFromInteger ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer Double)+gprimDoubleFromInteger pprimDoubleFromInteger p+ = T.ufun1 aprimDoubleFromInteger+ pprimDoubleFromInteger+ p+ hprimDoubleFromInteger+hprimDoubleFromInteger z1primDoubleFromInteger+ kprimDoubleFromInteger+ = T.fromDouble kprimDoubleFromInteger+ (Prelude.fromInteger+ (T.toInteger kprimDoubleFromInteger+ z1primDoubleFromInteger))+ +gprimDoubleRadix ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Integer)+gprimDoubleRadix pprimDoubleRadix p+ = T.ufun1 aprimDoubleRadix pprimDoubleRadix p+ hprimDoubleRadix+hprimDoubleRadix z1primDoubleRadix kprimDoubleRadix+ = T.fromInteger kprimDoubleRadix+ (Prelude.floatRadix+ (T.toDouble kprimDoubleRadix z1primDoubleRadix))+ +gprimDoubleDigits ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Int)+gprimDoubleDigits pprimDoubleDigits p+ = T.ufun1 aprimDoubleDigits pprimDoubleDigits p+ hprimDoubleDigits+hprimDoubleDigits z1primDoubleDigits+ kprimDoubleDigits+ = T.fromInt kprimDoubleDigits+ (Prelude.floatDigits+ (T.toDouble kprimDoubleDigits z1primDoubleDigits))+ +gprimDoubleRange ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Tuple2 Int Int))+gprimDoubleRange pprimDoubleRange p+ = T.ufun1 aprimDoubleRange pprimDoubleRange p+ hprimDoubleRange+hprimDoubleRange z1primDoubleRange kprimDoubleRange+ = T.fromTuple2 T.fromInt T.fromInt kprimDoubleRange+ (Prelude.floatRange+ (T.toDouble kprimDoubleRange z1primDoubleRange))+ +gprimDecodeDouble ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Tuple2 Integer Int))+gprimDecodeDouble pprimDecodeDouble p+ = T.ufun1 aprimDecodeDouble pprimDecodeDouble p+ hprimDecodeDouble+hprimDecodeDouble z1primDecodeDouble+ kprimDecodeDouble+ = T.fromTuple2 T.fromInteger T.fromInt+ kprimDecodeDouble+ (Prelude.decodeFloat+ (T.toDouble kprimDecodeDouble z1primDecodeDouble))+ +gprimEncodeDouble ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Integer (T.Fun Int Double))+gprimEncodeDouble pprimEncodeDouble p+ = T.ufun2 aprimEncodeDouble pprimEncodeDouble p+ hprimEncodeDouble+hprimEncodeDouble z1primEncodeDouble+ z2primEncodeDouble kprimEncodeDouble+ = T.fromDouble kprimEncodeDouble+ (Prelude.encodeFloat+ (T.toInteger kprimEncodeDouble z1primEncodeDouble)+ (T.toInt kprimEncodeDouble z2primEncodeDouble))+ +gprimDoubleIsNaN ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)+gprimDoubleIsNaN pprimDoubleIsNaN p+ = T.ufun1 aprimDoubleIsNaN pprimDoubleIsNaN p+ hprimDoubleIsNaN+hprimDoubleIsNaN z1primDoubleIsNaN kprimDoubleIsNaN+ = T.fromBool kprimDoubleIsNaN+ (Prelude.isNaN+ (T.toDouble kprimDoubleIsNaN z1primDoubleIsNaN))+ +gprimDoubleIsInfinite ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)+gprimDoubleIsInfinite pprimDoubleIsInfinite p+ = T.ufun1 aprimDoubleIsInfinite pprimDoubleIsInfinite+ p+ hprimDoubleIsInfinite+hprimDoubleIsInfinite z1primDoubleIsInfinite+ kprimDoubleIsInfinite+ = T.fromBool kprimDoubleIsInfinite+ (Prelude.isInfinite+ (T.toDouble kprimDoubleIsInfinite+ z1primDoubleIsInfinite))+ +gprimDoubleIsDenormalized ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)+gprimDoubleIsDenormalized pprimDoubleIsDenormalized p+ = T.ufun1 aprimDoubleIsDenormalized+ pprimDoubleIsDenormalized+ p+ hprimDoubleIsDenormalized+hprimDoubleIsDenormalized z1primDoubleIsDenormalized+ kprimDoubleIsDenormalized+ = T.fromBool kprimDoubleIsDenormalized+ (Prelude.isDenormalized+ (T.toDouble kprimDoubleIsDenormalized+ z1primDoubleIsDenormalized))+ +gprimDoubleIsNegativeZero ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)+gprimDoubleIsNegativeZero pprimDoubleIsNegativeZero p+ = T.ufun1 aprimDoubleIsNegativeZero+ pprimDoubleIsNegativeZero+ p+ hprimDoubleIsNegativeZero+hprimDoubleIsNegativeZero z1primDoubleIsNegativeZero+ kprimDoubleIsNegativeZero+ = T.fromBool kprimDoubleIsNegativeZero+ (Prelude.isNegativeZero+ (T.toDouble kprimDoubleIsNegativeZero+ z1primDoubleIsNegativeZero))+ +gprimDoubleIsIEEE ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Bool)+gprimDoubleIsIEEE pprimDoubleIsIEEE p+ = T.ufun1 aprimDoubleIsIEEE pprimDoubleIsIEEE p+ hprimDoubleIsIEEE+hprimDoubleIsIEEE z1primDoubleIsIEEE+ kprimDoubleIsIEEE+ = T.fromBool kprimDoubleIsIEEE+ (Prelude.isIEEE+ (T.toDouble kprimDoubleIsIEEE z1primDoubleIsIEEE))+ +gprimDoubleEq ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))+gprimDoubleEq pprimDoubleEq p+ = T.ufun2 aprimDoubleEq pprimDoubleEq p hprimDoubleEq+hprimDoubleEq z1primDoubleEq z2primDoubleEq+ kprimDoubleEq+ = T.fromBool kprimDoubleEq+ ((Prelude.==)+ (T.toDouble kprimDoubleEq z1primDoubleEq)+ (T.toDouble kprimDoubleEq z2primDoubleEq))+ +gprimDoubleNe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))+gprimDoubleNe pprimDoubleNe p+ = T.ufun2 aprimDoubleNe pprimDoubleNe p hprimDoubleNe+hprimDoubleNe z1primDoubleNe z2primDoubleNe+ kprimDoubleNe+ = T.fromBool kprimDoubleNe+ ((Prelude./=)+ (T.toDouble kprimDoubleNe z1primDoubleNe)+ (T.toDouble kprimDoubleNe z2primDoubleNe))+ +gprimDoubleLt ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))+gprimDoubleLt pprimDoubleLt p+ = T.ufun2 aprimDoubleLt pprimDoubleLt p hprimDoubleLt+hprimDoubleLt z1primDoubleLt z2primDoubleLt+ kprimDoubleLt+ = T.fromBool kprimDoubleLt+ ((Prelude.<)+ (T.toDouble kprimDoubleLt z1primDoubleLt)+ (T.toDouble kprimDoubleLt z2primDoubleLt))+ +gprimDoubleLe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))+gprimDoubleLe pprimDoubleLe p+ = T.ufun2 aprimDoubleLe pprimDoubleLe p hprimDoubleLe+hprimDoubleLe z1primDoubleLe z2primDoubleLe+ kprimDoubleLe+ = T.fromBool kprimDoubleLe+ ((Prelude.<=)+ (T.toDouble kprimDoubleLe z1primDoubleLe)+ (T.toDouble kprimDoubleLe z2primDoubleLe))+ +gprimDoubleGt ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))+gprimDoubleGt pprimDoubleGt p+ = T.ufun2 aprimDoubleGt pprimDoubleGt p hprimDoubleGt+hprimDoubleGt z1primDoubleGt z2primDoubleGt+ kprimDoubleGt+ = T.fromBool kprimDoubleGt+ ((Prelude.>)+ (T.toDouble kprimDoubleGt z1primDoubleGt)+ (T.toDouble kprimDoubleGt z2primDoubleGt))+ +gprimDoubleGe ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Bool))+gprimDoubleGe pprimDoubleGe p+ = T.ufun2 aprimDoubleGe pprimDoubleGe p hprimDoubleGe+hprimDoubleGe z1primDoubleGe z2primDoubleGe+ kprimDoubleGe+ = T.fromBool kprimDoubleGe+ ((Prelude.>=)+ (T.toDouble kprimDoubleGe z1primDoubleGe)+ (T.toDouble kprimDoubleGe z2primDoubleGe))+ +gprimDoublePi ::+ T.RefSrcPos -> T.RefExp -> T.R Double+gprimDoublePi pprimDoublePi p+ = T.uconstUse pprimDoublePi p sprimDoublePi+sprimDoublePi+ = T.uconstDef p aprimDoublePi+ (\ p -> T.fromDouble p Prelude.pi)+ +gprimDoubleExp ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleExp pprimDoubleExp p+ = T.ufun1 aprimDoubleExp pprimDoubleExp p+ hprimDoubleExp+hprimDoubleExp z1primDoubleExp kprimDoubleExp+ = T.fromDouble kprimDoubleExp+ (Prelude.exp+ (T.toDouble kprimDoubleExp z1primDoubleExp))+ +gprimDoubleLog ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleLog pprimDoubleLog p+ = T.ufun1 aprimDoubleLog pprimDoubleLog p+ hprimDoubleLog+hprimDoubleLog z1primDoubleLog kprimDoubleLog+ = T.fromDouble kprimDoubleLog+ (Prelude.log+ (T.toDouble kprimDoubleLog z1primDoubleLog))+ +gprimDoubleSqrt ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleSqrt pprimDoubleSqrt p+ = T.ufun1 aprimDoubleSqrt pprimDoubleSqrt p+ hprimDoubleSqrt+hprimDoubleSqrt z1primDoubleSqrt kprimDoubleSqrt+ = T.fromDouble kprimDoubleSqrt+ (Prelude.sqrt+ (T.toDouble kprimDoubleSqrt z1primDoubleSqrt))+ +gprimDoubleSin ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleSin pprimDoubleSin p+ = T.ufun1 aprimDoubleSin pprimDoubleSin p+ hprimDoubleSin+hprimDoubleSin z1primDoubleSin kprimDoubleSin+ = T.fromDouble kprimDoubleSin+ (Prelude.sin+ (T.toDouble kprimDoubleSin z1primDoubleSin))+ +gprimDoubleCos ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleCos pprimDoubleCos p+ = T.ufun1 aprimDoubleCos pprimDoubleCos p+ hprimDoubleCos+hprimDoubleCos z1primDoubleCos kprimDoubleCos+ = T.fromDouble kprimDoubleCos+ (Prelude.cos+ (T.toDouble kprimDoubleCos z1primDoubleCos))+ +gprimDoubleTan ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleTan pprimDoubleTan p+ = T.ufun1 aprimDoubleTan pprimDoubleTan p+ hprimDoubleTan+hprimDoubleTan z1primDoubleTan kprimDoubleTan+ = T.fromDouble kprimDoubleTan+ (Prelude.tan+ (T.toDouble kprimDoubleTan z1primDoubleTan))+ +gprimDoubleAsin ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleAsin pprimDoubleAsin p+ = T.ufun1 aprimDoubleAsin pprimDoubleAsin p+ hprimDoubleAsin+hprimDoubleAsin z1primDoubleAsin kprimDoubleAsin+ = T.fromDouble kprimDoubleAsin+ (Prelude.asin+ (T.toDouble kprimDoubleAsin z1primDoubleAsin))+ +gprimDoubleAcos ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleAcos pprimDoubleAcos p+ = T.ufun1 aprimDoubleAcos pprimDoubleAcos p+ hprimDoubleAcos+hprimDoubleAcos z1primDoubleAcos kprimDoubleAcos+ = T.fromDouble kprimDoubleAcos+ (Prelude.acos+ (T.toDouble kprimDoubleAcos z1primDoubleAcos))+ +gprimDoubleAtan ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleAtan pprimDoubleAtan p+ = T.ufun1 aprimDoubleAtan pprimDoubleAtan p+ hprimDoubleAtan+hprimDoubleAtan z1primDoubleAtan kprimDoubleAtan+ = T.fromDouble kprimDoubleAtan+ (Prelude.atan+ (T.toDouble kprimDoubleAtan z1primDoubleAtan))+ +gprimDoubleDiv ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Double))+gprimDoubleDiv pprimDoubleDiv p+ = T.ufun2 aprimDoubleDiv pprimDoubleDiv p+ hprimDoubleDiv+hprimDoubleDiv z1primDoubleDiv z2primDoubleDiv+ kprimDoubleDiv+ = T.fromDouble kprimDoubleDiv+ ((Prelude./)+ (T.toDouble kprimDoubleDiv z1primDoubleDiv)+ (T.toDouble kprimDoubleDiv z2primDoubleDiv))+ +gprimDoubleAdd ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Double))+gprimDoubleAdd pprimDoubleAdd p+ = T.ufun2 aprimDoubleAdd pprimDoubleAdd p+ hprimDoubleAdd+hprimDoubleAdd z1primDoubleAdd z2primDoubleAdd+ kprimDoubleAdd+ = T.fromDouble kprimDoubleAdd+ ((Prelude.+)+ (T.toDouble kprimDoubleAdd z1primDoubleAdd)+ (T.toDouble kprimDoubleAdd z2primDoubleAdd))+ +gprimDoubleSub ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Double))+gprimDoubleSub pprimDoubleSub p+ = T.ufun2 aprimDoubleSub pprimDoubleSub p+ hprimDoubleSub+hprimDoubleSub z1primDoubleSub z2primDoubleSub+ kprimDoubleSub+ = T.fromDouble kprimDoubleSub+ ((Prelude.-)+ (T.toDouble kprimDoubleSub z1primDoubleSub)+ (T.toDouble kprimDoubleSub z2primDoubleSub))+ +gprimDoubleMul ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Double (T.Fun Double Double))+gprimDoubleMul pprimDoubleMul p+ = T.ufun2 aprimDoubleMul pprimDoubleMul p+ hprimDoubleMul+hprimDoubleMul z1primDoubleMul z2primDoubleMul+ kprimDoubleMul+ = T.fromDouble kprimDoubleMul+ ((Prelude.*)+ (T.toDouble kprimDoubleMul z1primDoubleMul)+ (T.toDouble kprimDoubleMul z2primDoubleMul))+ +gprimDoubleAbs ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleAbs pprimDoubleAbs p+ = T.ufun1 aprimDoubleAbs pprimDoubleAbs p+ hprimDoubleAbs+hprimDoubleAbs z1primDoubleAbs kprimDoubleAbs+ = T.fromDouble kprimDoubleAbs+ (Prelude.abs+ (T.toDouble kprimDoubleAbs z1primDoubleAbs))+ +gprimDoubleSignum ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Double Double)+gprimDoubleSignum pprimDoubleSignum p+ = T.ufun1 aprimDoubleSignum pprimDoubleSignum p+ hprimDoubleSignum+hprimDoubleSignum z1primDoubleSignum+ kprimDoubleSignum+ = T.fromDouble kprimDoubleSignum+ (Prelude.signum+ (T.toDouble kprimDoubleSignum z1primDoubleSignum))+ +gprimIOBind ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (IO a) (T.Fun (T.Fun a (IO b)) (IO b)))+gprimIOBind pprimIOBind p+ = T.ufun2 aprimIOBind pprimIOBind p hprimIOBind+hprimIOBind z1primIOBind z2primIOBind kprimIOBind+ = T.fromIO T.fromId kprimIOBind+ ((Prelude.>>=)+ (T.toIO T.toId kprimIOBind z1primIOBind)+ ((T.toFun T.fromId (T.toIO T.toId)) kprimIOBind+ z2primIOBind))+ +gprimIOReturn ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun a (IO a))+gprimIOReturn pprimIOReturn p+ = T.ufun1 aprimIOReturn pprimIOReturn p hprimIOReturn+hprimIOReturn z1primIOReturn kprimIOReturn+ = T.fromIO T.fromId kprimIOReturn+ (Prelude.return+ (T.toId kprimIOReturn z1primIOReturn))+ +gprimIOErrorShow ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError String)+gprimIOErrorShow pprimIOErrorShow p+ = T.ufun1 aprimIOErrorShow pprimIOErrorShow p+ hprimIOErrorShow+hprimIOErrorShow z1primIOErrorShow kprimIOErrorShow+ = T.fromString kprimIOErrorShow+ (Prelude.show+ (T.toIOError kprimIOErrorShow z1primIOErrorShow))+ +gioError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun IOError (IO a))+gioError pioError p+ = T.ufun1 aioError pioError p hioError+hioError z1ioError kioError+ = T.fromIO T.fromId kioError+ (Prelude.ioError (T.toIOError kioError z1ioError))+ +guserError ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun String IOError)+guserError puserError p+ = T.ufun1 auserError puserError p huserError+huserError z1userError kuserError+ = T.fromIOError kuserError+ (Prelude.userError+ (T.toString kuserError z1userError))+ +gcatch ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (IO a) (T.Fun (T.Fun IOError (IO a)) (IO a)))+gcatch pcatch p = T.ufun2 acatch pcatch p hcatch+hcatch z1catch z2catch kcatch+ = T.fromIO T.fromId kcatch+ (System.IO.Error.catchIOError+ (T.toIO T.toId kcatch z1catch)+ ((T.toFun T.fromIOError (T.toIO T.toId)) kcatch+ z2catch))+ +gputChar ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Char (IO T.Tuple0))+gputChar pputChar p+ = T.ufun1 aputChar pputChar p hputChar+hputChar z1putChar kputChar+ = T.fromIO T.fromTuple0 kputChar+ ((\_ c -> T.outputTrace kputChar [c] Prelude.>> Prelude.putChar c) Prelude.True+ (T.toChar kputChar z1putChar))+ +ggetChar :: T.RefSrcPos -> T.RefExp -> T.R (IO Char)+ggetChar pgetChar p = T.uconstUse pgetChar p sgetChar+sgetChar+ = T.uconstDef p agetChar+ (\ p -> T.fromIO T.fromChar p Prelude.getChar)+ +ggetContents ::+ T.RefSrcPos -> T.RefExp -> T.R (IO String)+ggetContents pgetContents p+ = T.uconstUse pgetContents p sgetContents+sgetContents+ = T.uconstDef p agetContents+ (\ p -> T.fromIO T.fromString p Prelude.getContents)+ +greadFile ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO String))+greadFile preadFile p+ = T.ufun1 areadFile preadFile p hreadFile+hreadFile z1readFile kreadFile+ = T.fromIO T.fromString kreadFile+ (Prelude.readFile (T.toString kreadFile z1readFile))+ +gwriteFile ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun String (T.Fun String (IO T.Tuple0)))+gwriteFile pwriteFile p+ = T.ufun2 awriteFile pwriteFile p hwriteFile+hwriteFile z1writeFile z2writeFile kwriteFile+ = T.fromIO T.fromTuple0 kwriteFile+ ((\_ n s -> T.outputTrace kwriteFile s Prelude.>> Prelude.writeFile n s) Prelude.True+ (T.toString kwriteFile z1writeFile)+ (T.toString kwriteFile z2writeFile))+ +gappendFile ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun String (T.Fun String (IO T.Tuple0)))+gappendFile pappendFile p+ = T.ufun2 aappendFile pappendFile p happendFile+happendFile z1appendFile z2appendFile kappendFile+ = T.fromIO T.fromTuple0 kappendFile+ ((\_ n s -> T.outputTrace kappendFile s Prelude.>> Prelude.appendFile n s) Prelude.True+ (T.toString kappendFile z1appendFile)+ (T.toString kappendFile z2appendFile))+aappendFile+ = T.mkVariable tPreludeBuiltin 3630001 3640021 3 (2)+ "appendFile"+ Prelude.False+acatch+ = T.mkVariable tPreludeBuiltin 3410001 3420010 3 (2)+ "catch"+ Prelude.False+agetChar+ = T.mkVariable tPreludeBuiltin 3510001 3520021 3 (0)+ "getChar"+ Prelude.False+agetContents+ = T.mkVariable tPreludeBuiltin 3540001 3550021 3 (0)+ "getContents"+ Prelude.False+aioError+ = T.mkVariable tPreludeBuiltin 3350001 3360012 3 (1)+ "ioError"+ Prelude.False+aisAlpha+ = T.mkVariable tPreludeBuiltin 860001 870012 3 (1)+ "isAlpha"+ Prelude.False+aisAlphaNum+ = T.mkVariable tPreludeBuiltin 940001 950015 3 (1)+ "isAlphaNum"+ Prelude.False+aisAscii+ = T.mkVariable tPreludeBuiltin 720001 730012 3 (1)+ "isAscii"+ Prelude.False+aisControl+ = T.mkVariable tPreludeBuiltin 760001 770014 3 (1)+ "isControl"+ Prelude.False+aisDigit+ = T.mkVariable tPreludeBuiltin 880001 890012 3 (1)+ "isDigit"+ Prelude.False+aisHexDigit+ = T.mkVariable tPreludeBuiltin 920001 930015 3 (1)+ "isHexDigit"+ Prelude.False+aisLatin1+ = T.mkVariable tPreludeBuiltin 740001 750013 3 (1)+ "isLatin1"+ Prelude.False+aisLower+ = T.mkVariable tPreludeBuiltin 840001 850012 3 (1)+ "isLower"+ Prelude.False+aisOctDigit+ = T.mkVariable tPreludeBuiltin 900001 910015 3 (1)+ "isOctDigit"+ Prelude.False+aisPrint+ = T.mkVariable tPreludeBuiltin 780001 790012 3 (1)+ "isPrint"+ Prelude.False+aisSpace+ = T.mkVariable tPreludeBuiltin 800001 810012 3 (1)+ "isSpace"+ Prelude.False+aisUpper+ = T.mkVariable tPreludeBuiltin 820001 830012 3 (1)+ "isUpper"+ Prelude.False+aprimCharToInt+ = T.mkVariable tPreludeBuiltin 1030001 1040018 3 (1)+ "primCharToInt"+ Prelude.False+aprimDecodeDouble+ = T.mkVariable tPreludeBuiltin 2570001 2580021 3 (1)+ "primDecodeDouble"+ Prelude.False+aprimDecodeFloat+ = T.mkVariable tPreludeBuiltin 1890001 1900026 3 (1)+ "primDecodeFloat"+ Prelude.False+aprimDoubleAbs+ = T.mkVariable tPreludeBuiltin 3120001 3130021 3 (1)+ "primDoubleAbs"+ Prelude.False+aprimDoubleAcos+ = T.mkVariable tPreludeBuiltin 3000001 3010019 3 (1)+ "primDoubleAcos"+ Prelude.False+aprimDoubleAdd+ = T.mkVariable tPreludeBuiltin 3060001 3070019 3 (2)+ "primDoubleAdd"+ Prelude.False+aprimDoubleAsin+ = T.mkVariable tPreludeBuiltin 2980001 2990019 3 (1)+ "primDoubleAsin"+ Prelude.False+aprimDoubleAtan+ = T.mkVariable tPreludeBuiltin 3020001 3030019 3 (1)+ "primDoubleAtan"+ Prelude.False+aprimDoubleCos+ = T.mkVariable tPreludeBuiltin 2940001 2950019 3 (1)+ "primDoubleCos"+ Prelude.False+aprimDoubleDigits+ = T.mkVariable tPreludeBuiltin 2530001 2540022 3 (1)+ "primDoubleDigits"+ Prelude.False+aprimDoubleDiv+ = T.mkVariable tPreludeBuiltin 3040001 3050019 3 (2)+ "primDoubleDiv"+ Prelude.False+aprimDoubleEq+ = T.mkVariable tPreludeBuiltin 2720001 2730017 3 (2)+ "primDoubleEq"+ Prelude.False+aprimDoubleExp+ = T.mkVariable tPreludeBuiltin 2860001 2870019 3 (1)+ "primDoubleExp"+ Prelude.False+aprimDoubleFromInteger+ = T.mkVariable tPreludeBuiltin 2490001 2500026 3 (1)+ "primDoubleFromInteger"+ Prelude.False+aprimDoubleGe+ = T.mkVariable tPreludeBuiltin 2820001 2830017 3 (2)+ "primDoubleGe"+ Prelude.False+aprimDoubleGt+ = T.mkVariable tPreludeBuiltin 2800001 2810017 3 (2)+ "primDoubleGt"+ Prelude.False+aprimDoubleIsDenormalized+ = T.mkVariable tPreludeBuiltin 2650001 2660031 3 (1)+ "primDoubleIsDenormalized"+ Prelude.False+aprimDoubleIsIEEE+ = T.mkVariable tPreludeBuiltin 2690001 2700023 3 (1)+ "primDoubleIsIEEE"+ Prelude.False+aprimDoubleIsInfinite+ = T.mkVariable tPreludeBuiltin 2630001 2640027 3 (1)+ "primDoubleIsInfinite"+ Prelude.False+aprimDoubleIsNaN+ = T.mkVariable tPreludeBuiltin 2610001 2620022 3 (1)+ "primDoubleIsNaN"+ Prelude.False+aprimDoubleIsNegativeZero+ = T.mkVariable tPreludeBuiltin 2670001 2680031 3 (1)+ "primDoubleIsNegativeZero"+ Prelude.False+aprimDoubleLe+ = T.mkVariable tPreludeBuiltin 2780001 2790017 3 (2)+ "primDoubleLe"+ Prelude.False+aprimDoubleLog+ = T.mkVariable tPreludeBuiltin 2880001 2890019 3 (1)+ "primDoubleLog"+ Prelude.False+aprimDoubleLt+ = T.mkVariable tPreludeBuiltin 2760001 2770017 3 (2)+ "primDoubleLt"+ Prelude.False+aprimDoubleMul+ = T.mkVariable tPreludeBuiltin 3100001 3110019 3 (2)+ "primDoubleMul"+ Prelude.False+aprimDoubleNe+ = T.mkVariable tPreludeBuiltin 2740001 2750017 3 (2)+ "primDoubleNe"+ Prelude.False+aprimDoublePi+ = T.mkVariable tPreludeBuiltin 2840001 2850017 3 (0)+ "primDoublePi"+ Prelude.False+aprimDoubleRadix+ = T.mkVariable tPreludeBuiltin 2510001 2520022 3 (1)+ "primDoubleRadix"+ Prelude.False+aprimDoubleRange+ = T.mkVariable tPreludeBuiltin 2550001 2560022 3 (1)+ "primDoubleRange"+ Prelude.False+aprimDoubleSignum+ = T.mkVariable tPreludeBuiltin 3140001 3150021 3 (1)+ "primDoubleSignum"+ Prelude.False+aprimDoubleSin+ = T.mkVariable tPreludeBuiltin 2920001 2930019 3 (1)+ "primDoubleSin"+ Prelude.False+aprimDoubleSqrt+ = T.mkVariable tPreludeBuiltin 2900001 2910019 3 (1)+ "primDoubleSqrt"+ Prelude.False+aprimDoubleSub+ = T.mkVariable tPreludeBuiltin 3080001 3090019 3 (2)+ "primDoubleSub"+ Prelude.False+aprimDoubleTan+ = T.mkVariable tPreludeBuiltin 2960001 2970019 3 (1)+ "primDoubleTan"+ Prelude.False+aprimEncodeDouble+ = T.mkVariable tPreludeBuiltin 2590001 2600021 3 (2)+ "primEncodeDouble"+ Prelude.False+aprimEncodeFloat+ = T.mkVariable tPreludeBuiltin 1910001 1920026 3 (2)+ "primEncodeFloat"+ Prelude.False+aprimFloatAbs+ = T.mkVariable tPreludeBuiltin 2440001 2450020 3 (1)+ "primFloatAbs"+ Prelude.False+aprimFloatAcos+ = T.mkVariable tPreludeBuiltin 2320001 2330018 3 (1)+ "primFloatAcos"+ Prelude.False+aprimFloatAdd+ = T.mkVariable tPreludeBuiltin 2380001 2390018 3 (2)+ "primFloatAdd"+ Prelude.False+aprimFloatAsin+ = T.mkVariable tPreludeBuiltin 2300001 2310018 3 (1)+ "primFloatAsin"+ Prelude.False+aprimFloatAtan+ = T.mkVariable tPreludeBuiltin 2340001 2350018 3 (1)+ "primFloatAtan"+ Prelude.False+aprimFloatCos+ = T.mkVariable tPreludeBuiltin 2260001 2270018 3 (1)+ "primFloatCos"+ Prelude.False+aprimFloatDigits+ = T.mkVariable tPreludeBuiltin 1850001 1860026 3 (1)+ "primFloatDigits"+ Prelude.False+aprimFloatDiv+ = T.mkVariable tPreludeBuiltin 2360001 2370018 3 (2)+ "primFloatDiv"+ Prelude.False+aprimFloatEq+ = T.mkVariable tPreludeBuiltin 2040001 2050016 3 (2)+ "primFloatEq"+ Prelude.False+aprimFloatExp+ = T.mkVariable tPreludeBuiltin 2180001 2190018 3 (1)+ "primFloatExp"+ Prelude.False+aprimFloatFromInteger+ = T.mkVariable tPreludeBuiltin 1810001 1820026 3 (1)+ "primFloatFromInteger"+ Prelude.False+aprimFloatGe+ = T.mkVariable tPreludeBuiltin 2140001 2150016 3 (2)+ "primFloatGe"+ Prelude.False+aprimFloatGt+ = T.mkVariable tPreludeBuiltin 2120001 2130016 3 (2)+ "primFloatGt"+ Prelude.False+aprimFloatIsDenormalized+ = T.mkVariable tPreludeBuiltin 1970001 1980030 3 (1)+ "primFloatIsDenormalized"+ Prelude.False+aprimFloatIsIEEE+ = T.mkVariable tPreludeBuiltin 2010001 2020022 3 (1)+ "primFloatIsIEEE"+ Prelude.False+aprimFloatIsInfinite+ = T.mkVariable tPreludeBuiltin 1950001 1960026 3 (1)+ "primFloatIsInfinite"+ Prelude.False+aprimFloatIsNaN+ = T.mkVariable tPreludeBuiltin 1930001 1940021 3 (1)+ "primFloatIsNaN"+ Prelude.False+aprimFloatIsNegativeZero+ = T.mkVariable tPreludeBuiltin 1990001 2000030 3 (1)+ "primFloatIsNegativeZero"+ Prelude.False+aprimFloatLe+ = T.mkVariable tPreludeBuiltin 2100001 2110016 3 (2)+ "primFloatLe"+ Prelude.False+aprimFloatLog+ = T.mkVariable tPreludeBuiltin 2200001 2210018 3 (1)+ "primFloatLog"+ Prelude.False+aprimFloatLt+ = T.mkVariable tPreludeBuiltin 2080001 2090016 3 (2)+ "primFloatLt"+ Prelude.False+aprimFloatMul+ = T.mkVariable tPreludeBuiltin 2420001 2430018 3 (2)+ "primFloatMul"+ Prelude.False+aprimFloatNe+ = T.mkVariable tPreludeBuiltin 2060001 2070016 3 (2)+ "primFloatNe"+ Prelude.False+aprimFloatPi+ = T.mkVariable tPreludeBuiltin 2160001 2170016 3 (0)+ "primFloatPi"+ Prelude.False+aprimFloatRadix+ = T.mkVariable tPreludeBuiltin 1830001 1840026 3 (1)+ "primFloatRadix"+ Prelude.False+aprimFloatRange+ = T.mkVariable tPreludeBuiltin 1870001 1880026 3 (1)+ "primFloatRange"+ Prelude.False+aprimFloatSignum+ = T.mkVariable tPreludeBuiltin 2460001 2470020 3 (1)+ "primFloatSignum"+ Prelude.False+aprimFloatSin+ = T.mkVariable tPreludeBuiltin 2240001 2250018 3 (1)+ "primFloatSin"+ Prelude.False+aprimFloatSqrt+ = T.mkVariable tPreludeBuiltin 2220001 2230018 3 (1)+ "primFloatSqrt"+ Prelude.False+aprimFloatSub+ = T.mkVariable tPreludeBuiltin 2400001 2410018 3 (2)+ "primFloatSub"+ Prelude.False+aprimFloatTan+ = T.mkVariable tPreludeBuiltin 2280001 2290018 3 (1)+ "primFloatTan"+ Prelude.False+aprimIOBind+ = T.mkVariable tPreludeBuiltin 3200001 3210015 3 (2)+ "primIOBind"+ Prelude.False+aprimIOErrorShow+ = T.mkVariable tPreludeBuiltin 3260001 3270020 3 (1)+ "primIOErrorShow"+ Prelude.False+aprimIOReturn+ = T.mkVariable tPreludeBuiltin 3220001 3230017 3 (1)+ "primIOReturn"+ Prelude.False+aprimIntAbs+ = T.mkVariable tPreludeBuiltin 1440001 1450018 3 (1)+ "primIntAbs"+ Prelude.False+aprimIntEq+ = T.mkVariable tPreludeBuiltin 1200001 1210014 3 (2)+ "primIntEq"+ Prelude.False+aprimIntFromInteger+ = T.mkVariable tPreludeBuiltin 1510001 1520023 3 (1)+ "primIntFromInteger"+ Prelude.False+aprimIntGe+ = T.mkVariable tPreludeBuiltin 1300001 1310014 3 (2)+ "primIntGe"+ Prelude.False+aprimIntGt+ = T.mkVariable tPreludeBuiltin 1280001 1290014 3 (2)+ "primIntGt"+ Prelude.False+aprimIntLe+ = T.mkVariable tPreludeBuiltin 1260001 1270014 3 (2)+ "primIntLe"+ Prelude.False+aprimIntLt+ = T.mkVariable tPreludeBuiltin 1240001 1250014 3 (2)+ "primIntLt"+ Prelude.False+aprimIntMaxBound+ = T.mkVariable tPreludeBuiltin 1170001 1180020 3 (0)+ "primIntMaxBound"+ Prelude.False+aprimIntMinBound+ = T.mkVariable tPreludeBuiltin 1150001 1160020 3 (0)+ "primIntMinBound"+ Prelude.False+aprimIntMinus+ = T.mkVariable tPreludeBuiltin 1380001 1390018 3 (2)+ "primIntMinus"+ Prelude.False+aprimIntNe+ = T.mkVariable tPreludeBuiltin 1220001 1230014 3 (2)+ "primIntNe"+ Prelude.False+aprimIntNegate+ = T.mkVariable tPreludeBuiltin 1420001 1430018 3 (1)+ "primIntNegate"+ Prelude.False+aprimIntPlus+ = T.mkVariable tPreludeBuiltin 1360001 1370018 3 (2)+ "primIntPlus"+ Prelude.False+aprimIntQuot+ = T.mkVariable tPreludeBuiltin 1320001 1330018 3 (2)+ "primIntQuot"+ Prelude.False+aprimIntRem+ = T.mkVariable tPreludeBuiltin 1340001 1350018 3 (2)+ "primIntRem"+ Prelude.False+aprimIntSignum+ = T.mkVariable tPreludeBuiltin 1460001 1470018 3 (1)+ "primIntSignum"+ Prelude.False+aprimIntTimes+ = T.mkVariable tPreludeBuiltin 1400001 1410018 3 (2)+ "primIntTimes"+ Prelude.False+aprimIntToChar+ = T.mkVariable tPreludeBuiltin 1050001 1060018 3 (1)+ "primIntToChar"+ Prelude.False+aprimIntegerAdd+ = T.mkVariable tPreludeBuiltin 1720001 1730023 3 (2)+ "primIntegerAdd"+ Prelude.False+aprimIntegerEq+ = T.mkVariable tPreludeBuiltin 1540001 1550018 3 (2)+ "primIntegerEq"+ Prelude.False+aprimIntegerFromInt+ = T.mkVariable tPreludeBuiltin 1490001 1500023 3 (1)+ "primIntegerFromInt"+ Prelude.False+aprimIntegerGe+ = T.mkVariable tPreludeBuiltin 1640001 1650018 3 (2)+ "primIntegerGe"+ Prelude.False+aprimIntegerGt+ = T.mkVariable tPreludeBuiltin 1620001 1630018 3 (2)+ "primIntegerGt"+ Prelude.False+aprimIntegerLe+ = T.mkVariable tPreludeBuiltin 1600001 1610018 3 (2)+ "primIntegerLe"+ Prelude.False+aprimIntegerLt+ = T.mkVariable tPreludeBuiltin 1580001 1590018 3 (2)+ "primIntegerLt"+ Prelude.False+aprimIntegerMul+ = T.mkVariable tPreludeBuiltin 1760001 1770023 3 (2)+ "primIntegerMul"+ Prelude.False+aprimIntegerNe+ = T.mkVariable tPreludeBuiltin 1560001 1570018 3 (2)+ "primIntegerNe"+ Prelude.False+aprimIntegerNeg+ = T.mkVariable tPreludeBuiltin 1780001 1790023 3 (1)+ "primIntegerNeg"+ Prelude.False+aprimIntegerQuot+ = T.mkVariable tPreludeBuiltin 1660001 1670023 3 (2)+ "primIntegerQuot"+ Prelude.False+aprimIntegerQuotRem+ = T.mkVariable tPreludeBuiltin 1700001 1710023 3 (2)+ "primIntegerQuotRem"+ Prelude.False+aprimIntegerRem+ = T.mkVariable tPreludeBuiltin 1680001 1690023 3 (2)+ "primIntegerRem"+ Prelude.False+aprimIntegerSub+ = T.mkVariable tPreludeBuiltin 1740001 1750023 3 (2)+ "primIntegerSub"+ Prelude.False+aprimUnicodeMaxBound+ = T.mkVariable tPreludeBuiltin 1080001 1090024 3 (0)+ "primUnicodeMaxBound"+ Prelude.False+aputChar+ = T.mkVariable tPreludeBuiltin 3470001 3490012 3 (1)+ "putChar"+ Prelude.False+areadFile+ = T.mkVariable tPreludeBuiltin 3570001 3580021 3 (1)+ "readFile"+ Prelude.False+aseq+ = T.mkVariable tPreludeBuiltin 690001 700008 1 (2)+ "seq"+ Prelude.False+atoLower+ = T.mkVariable tPreludeBuiltin 990001 1000012 3 (1)+ "toLower"+ Prelude.False+atoUpper+ = T.mkVariable tPreludeBuiltin 970001 980012 3 (1)+ "toUpper"+ Prelude.False+auserError+ = T.mkVariable tPreludeBuiltin 3380001 3390014 3 (1)+ "userError"+ Prelude.False+awriteFile+ = T.mkVariable tPreludeBuiltin 3600001 3610021 3 (2)+ "writeFile"+ Prelude.False+p = T.mkRoot+tPreludeBuiltin+ = T.mkModule "PreludeBuiltin" "PreludeBuiltin.hs"+ Prelude.False
Hat/PreludeBuiltinTypes.hs view
@@ -2,11 +2,12 @@ -- or are used by functions that are not definable in Haskell module Hat.PreludeBuiltinTypes (Fun(Fun) -- reexported from Hat+ ,Int,Char,Integer,Float,Double ,Bool(True,False),IOError - ,aTrue,aFalse- ,String -- here for convenience+ -- ,aTrue,aFalse+ -- ,String -- here for convenience ,module Hat.PreludeBuiltinTypes- ,gerror,gundefined+ -- ,gerror,gundefined ) where import Hat.Hat as T@@ -50,12 +51,12 @@ toList :: (RefExp -> R a -> b) -> RefExp -> R (List a) -> [b] toList f h (R (Cons x xs) _) = f h x : toList f h xs-toList f h (R List _) = []+toList f h (R Nil _) = [] fromList :: (RefExp -> a -> R b) -> RefExp -> [a] -> R (List b) fromList f h = fromList' where- fromList' [] = con0 mkNoSrcPos h List aList+ fromList' [] = con0 mkNoSrcPos h Nil aNil fromList' (x:xs) = con2 mkNoSrcPos h Cons aCons (T.wrapForward h (f h x)) (T.wrapForward h (fromList' xs))
Hat/Random.hs view
@@ -1,855 +1,932 @@ module Hat.Random- (RandomGen(gnext,gsplit,ggenRange,snext,ssplit,sgenRange),StdGen(),gmkStdGen- ,amkStdGen,hmkStdGen,Random(grandom,grandomR,grandoms,grandomRs,grandomIO- ,grandomRIO,srandom,srandomR,srandoms,srandomRs,srandomIO,srandomRIO)- ,ggetStdRandom,agetStdRandom,hgetStdRandom,ggetStdGen,gsetStdGen,asetStdGen- ,hsetStdGen,gnewStdGen) 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.PreludeBuiltinTypes -import Hat.RandomBuiltin -import qualified System.Random as Random -import Hat.Char --class RandomGen g- where- - ggenRange :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.Tuple2 Int Int))- - gnext :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.Tuple2 Int g))- - gsplit :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.Tuple2 g g))- - ggenRange pgenRange p =- T.ufun1 a24v3v24v34genRange pgenRange p hgenRange- where- - hgenRange fg p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gminBound T.mkNoSrcPos p)- (gmaxBound T.mkNoSrcPos p)- - - sgenRange :: T.R (T.Fun g (T.Tuple2 Int Int))- - snext :: T.R (T.Fun g (T.Tuple2 Int g))- - ssplit :: T.R (T.Fun g (T.Tuple2 g g))- --instance RandomGen (StdGen)- where- - ggenRange pgenRange p = T.uconstUse pgenRange p sgenRange- - sgenRange =- T.uconstDef T.mkRoot a31v3v31v31genRange- (\ p -> gprimStdGenGenRange T.mkNoSrcPos p)- - gnext pnext p = T.uconstUse pnext p snext- - snext =- T.uconstDef T.mkRoot a32v3v32v23next (\ p -> gprimStdGenNext T.mkNoSrcPos p)- - gsplit psplit p = T.uconstUse psplit p ssplit- - ssplit =- T.uconstDef T.mkRoot a33v3v33v25split- (\ p -> gprimStdGenSplit T.mkNoSrcPos p)- --instance Read (StdGen)- where- - greadsPrec preadsPrec p = T.uconstUse preadsPrec p sreadsPrec- - sreadsPrec =- T.uconstDef T.mkRoot a36v3v36v33readsPrec- (\ p -> gprimStdGenReadsPrec T.mkNoSrcPos p)- --instance Show (StdGen)- where- - gshowsPrec pshowsPrec p = T.uconstUse pshowsPrec p sshowsPrec- - sshowsPrec =- T.uconstDef T.mkRoot a39v3v39v33showsPrec- (\ p -> gprimStdGenShowsPrec T.mkNoSrcPos p)- --gprimStdGenGenRange ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun StdGen (T.Tuple2 Int Int))--gprimStdGenGenRange pprimStdGenGenRange p =- T.ufun1 aprimStdGenGenRange pprimStdGenGenRange p hprimStdGenGenRange--hprimStdGenGenRange z1primStdGenGenRange kprimStdGenGenRange =- (T.fromTuple2 T.fromInt T.fromInt) kprimStdGenGenRange- (Random.genRange (toStdGen kprimStdGenGenRange z1primStdGenGenRange))--gprimStdGenNext ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun StdGen (T.Tuple2 Int StdGen))--gprimStdGenNext pprimStdGenNext p =- T.ufun1 aprimStdGenNext pprimStdGenNext p hprimStdGenNext--hprimStdGenNext z1primStdGenNext kprimStdGenNext =- (T.fromTuple2 T.fromInt fromStdGen) kprimStdGenNext- (Random.next (toStdGen kprimStdGenNext z1primStdGenNext))--gprimStdGenSplit ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun StdGen (T.Tuple2 StdGen StdGen))--gprimStdGenSplit pprimStdGenSplit p =- T.ufun1 aprimStdGenSplit pprimStdGenSplit p hprimStdGenSplit--hprimStdGenSplit z1primStdGenSplit kprimStdGenSplit =- (T.fromTuple2 fromStdGen fromStdGen) kprimStdGenSplit- (Random.split (toStdGen kprimStdGenSplit z1primStdGenSplit))--gprimStdGenReadsPrec ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun Int (T.Fun String (T.List (T.Tuple2 StdGen String))))--gprimStdGenReadsPrec pprimStdGenReadsPrec p =- T.ufun2 aprimStdGenReadsPrec pprimStdGenReadsPrec p hprimStdGenReadsPrec--hprimStdGenReadsPrec z1primStdGenReadsPrec z2primStdGenReadsPrec- kprimStdGenReadsPrec =- (fromList (T.fromTuple2 fromStdGen fromString)) kprimStdGenReadsPrec- (Prelude.readsPrec (T.toInt kprimStdGenReadsPrec z1primStdGenReadsPrec)- (toString kprimStdGenReadsPrec z2primStdGenReadsPrec))--gprimStdGenShowsPrec ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun Int (T.Fun StdGen (T.Fun String String)))--gprimStdGenShowsPrec pprimStdGenShowsPrec p =- T.ufun3 aprimStdGenShowsPrec pprimStdGenShowsPrec p hprimStdGenShowsPrec--hprimStdGenShowsPrec z1primStdGenShowsPrec z2primStdGenShowsPrec- z3primStdGenShowsPrec kprimStdGenShowsPrec =- fromString kprimStdGenShowsPrec- (Prelude.showsPrec (T.toInt kprimStdGenShowsPrec z1primStdGenShowsPrec)- (toStdGen kprimStdGenShowsPrec z2primStdGenShowsPrec)- (toString kprimStdGenShowsPrec z3primStdGenShowsPrec))--gmkStdGen :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int StdGen)--gmkStdGen pmkStdGen p = T.ufun1 amkStdGen pmkStdGen p hmkStdGen--hmkStdGen z1mkStdGen kmkStdGen =- fromStdGen kmkStdGen (Random.mkStdGen (T.toInt kmkStdGen z1mkStdGen))--class Random a- where- - grandomR ::- RandomGen g =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.Tuple2 a g)))- - grandom ::- RandomGen g => T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.Tuple2 a g))- - grandomRs ::- RandomGen g =>- T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.List a)))- - grandoms :: RandomGen g => T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.List a))- - grandomRIO :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (IO a))- - grandomIO :: T.RefSrcPos -> T.RefExp -> T.R (IO a)- - grandoms prandoms p =- T.ufun1 a68v3v70v21randoms prandoms p hrandoms- where- - hrandoms fg p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons (gx T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (grandoms T.mkNoSrcPos p) (gg' T.mkNoSrcPos p))- where- - gx px p = T.uconstUse px p sx- - gg' px p = T.uconstUse px p sg'- - j70v5v70v10x =- case T.uap1 T.mkNoSrcPos p (grandom T.mkNoSrcPos p) fg of- T.R (T.Tuple2 fx fg') kx -> (kx,fx,fg')- _ -> T.fatal p- - sx =- T.uconstDef p a70v6v70v6x- (\ _ -> case j70v5v70v10x of (kx,fx,fg') -> fx)- - sg' =- T.uconstDef p a70v8v70v9g'- (\ _ -> case j70v5v70v10x of (kx,fx,fg') -> fg')- - - - grandomRs prandomRs p =- T.ufun2 a71v3v73v28randomRs prandomRs p hrandomRs- where- - hrandomRs frange fg p =- T.con2 T.mkNoSrcPos p T.Cons T.aCons (gx T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (grandomRs T.mkNoSrcPos p) frange- (gg' T.mkNoSrcPos p))- where- - gx px p = T.uconstUse px p sx- - gg' px p = T.uconstUse px p sg'- - j73v5v73v10x =- case T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p) frange fg of- T.R (T.Tuple2 fx fg') kx -> (kx,fx,fg')- _ -> T.fatal p- - sx =- T.uconstDef p a73v6v73v6x- (\ _ -> case j73v5v73v10x of (kx,fx,fg') -> fx)- - sg' =- T.uconstDef p a73v8v73v9g'- (\ _ -> case j73v5v73v10x of (kx,fx,fg') -> fg')- - - - grandomIO prandomIO p = T.uconstUse prandomIO p srandomIO- - srandomIO =- T.uconstDef T.mkRoot a74v3v74v39randomIO- (\ p -> T.uwrapForward p (hgetStdRandom (grandom T.mkNoSrcPos p) p))- - grandomRIO prandomRIO p =- T.ufun1 a75v3v75v47randomRIO prandomRIO p hrandomRIO- where- - hrandomRIO frange p =- T.uwrapForward p- (hgetStdRandom (T.uap1 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p) frange)- p)- - - srandomR :: RandomGen g => T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.Tuple2 a g)))- - srandom :: RandomGen g => T.R (T.Fun g (T.Tuple2 a g))- - srandomRs :: RandomGen g => T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.List a)))- - srandoms :: RandomGen g => T.R (T.Fun g (T.List a))- - srandomRIO :: T.R (T.Fun (T.Tuple2 a a) (IO a))- - srandomIO :: T.R (IO a)- --instance Random (Int)- where- - grandomR prandomR p =- T.ufun2 a78v3v78v66randomR prandomR p hrandomR- where- - hrandomR (T.R (T.Tuple2 fa fb) _) fg p =- T.uwrapForward p- (hrandomIvalInteger- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p) fa)- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p) fb)) fg p)- hrandomR _ _ p = T.fatal p- - - grandom prandom p =- T.ufun1 a79v3v79v49random prandom p hrandom- where- - hrandom fg p =- T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gminBound T.mkNoSrcPos p)- (gmaxBound T.mkNoSrcPos p)) fg- - --instance Random (Integer)- where- - grandomR prandomR p =- T.ufun2 a82v3v82v43randomR prandomR p hrandomR- where- - hrandomR fival fg p = T.uwrapForward p (hrandomIvalInteger fival fg p)- - - grandom prandom p =- T.ufun1 a83v3v83v83random prandom p hrandom- where- - hrandom fg p =- T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)- (gminBound T.mkNoSrcPos p :: T.R Int))- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)- (gmaxBound T.mkNoSrcPos p :: T.R Int))) fg- - --instance Random (Float)- where- - grandom prandom p =- T.ufun1 a86v3v86v63random prandom p hrandom- where- - hrandom fg p =- T.uwrapForward p- (hrandomIvalDouble- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- :: T.R Double)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (grealToFrac T.mkNoSrcPos p) fg- p)- - - grandomR prandomR p =- T.ufun2 a87v3v87v78randomR prandomR p hrandomR- where- - hrandomR (T.R (T.Tuple2 fa fb) _) fg p =- T.uwrapForward p- (hrandomIvalDouble- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p (grealToFrac T.mkNoSrcPos p) fa)- (T.uap1 T.mkNoSrcPos p (grealToFrac T.mkNoSrcPos p) fb))- (grealToFrac T.mkNoSrcPos p) fg p)- hrandomR _ _ p = T.fatal p- - --instance Random (Double)- where- - grandomR prandomR p =- T.ufun2 a90v3v90v45randomR prandomR p hrandomR- where- - hrandomR fival fg p =- T.uwrapForward p (hrandomIvalDouble fival (gid T.mkNoSrcPos p) fg p)- - - grandom prandom p =- T.ufun1 a91v3v91v42random prandom p hrandom- where- - hrandom fg p =- T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- :: T.R Double)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) fg- - --instance Random (Bool)- where- - grandomR prandomR p =- T.ufun2 a94v3v105v22randomR prandomR p hrandomR- where- - hrandomR (T.R (T.Tuple2 fa fb) _) fg p =- T.uccase T.mkNoSrcPos p- (let- v95v5v97v33v1 (T.R (T.Tuple2 fx fg) _) p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uwrapForward p (hint2Bool fx p)) fg- v95v5v97v33v1 _ p = T.fatal p in (v95v5v97v33v1))- (T.uwrapForward p- (hrandomIvalInteger- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uwrapForward p (hbool2Integer fa p))- (T.uwrapForward p (hbool2Integer fb p))) fg p))- where- - gbool2Integer :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Bool Integer)- - hbool2Integer :: (T.R Bool) -> T.RefExp -> T.R Integer- - gbool2Integer pbool2Integer p =- T.ufun1 a100v5v101v26bool2Integer pbool2Integer p hbool2Integer- - abool2Integer = a100v5v101v26bool2Integer- - hbool2Integer (T.R False _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hbool2Integer (T.R True _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hbool2Integer _ p = T.fatal p- - gint2Bool :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Bool)- - hint2Bool :: (T.R Int) -> T.RefExp -> T.R Bool- - gint2Bool pint2Bool p =- T.ufun1 a104v5v105v22int2Bool pint2Bool p hint2Bool- - aint2Bool = a104v5v105v22int2Bool- - hint2Bool fv104v14v104v14n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p)- fv104v14v104v14n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p)- (y1int2Bool fv104v14v104v14n p)- where- - h p = T.con0 T.mkNoSrcPos p False aFalse- h p = y1int2Bool fv104v14v104v14n p- - hint2Bool fv104v14v104v14n p = y1int2Bool fv104v14v104v14n p- - y1int2Bool _ p = T.con0 T.mkNoSrcPos p True aTrue- - hrandomR _ _ p = T.fatal p- - - grandom prandom p =- T.ufun1 a107v3v107v42random prandom p hrandom- where- - hrandom fg p =- T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gminBound T.mkNoSrcPos p)- (gmaxBound T.mkNoSrcPos p)) fg- - --instance Random (Char)- where- - grandomR prandomR p =- T.ufun2 a110v3v112v27randomR prandomR p hrandomR- where- - hrandomR (T.R (T.Tuple2 fa fb) _) fg p =- T.uccase T.mkNoSrcPos p- (let- v111v7v112v27v1 (T.R (T.Tuple2 fx fg) _) p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p (gchr T.mkNoSrcPos p) fx) fg- v111v7v112v27v1 _ p = T.fatal p in (v111v7v112v27v1))- (T.uwrapForward p- (hrandomIvalInteger- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p) fa))- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p) fb))) fg p))- hrandomR _ _ p = T.fatal p- - - grandom prandom p =- T.ufun1 a113v3v113v42random prandom p hrandom- where- - hrandom fg p =- T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gminBound T.mkNoSrcPos p)- (gmaxBound T.mkNoSrcPos p)) fg- - --grandomIvalInteger ::- (RandomGen g,Num a) =>- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Tuple2 Integer Integer) (T.Fun g (T.Tuple2 a g)))--hrandomIvalInteger ::- (RandomGen g,Num a) =>- (T.R (T.Tuple2 Integer Integer)) -> (T.R g) -> T.RefExp -> T.R (T.Tuple2 a g)--grandomIvalInteger prandomIvalInteger p =- T.ufun2 arandomIvalInteger prandomIvalInteger p hrandomIvalInteger--hrandomIvalInteger (T.R (T.Tuple2 fl fh) _) frng p =- T.ucguard (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fl fh)- (T.uwrapForward p- (hrandomIvalInteger (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fh fl) frng- p))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uccase T.mkNoSrcPos p- (let- v120v16v120v83v1 (T.R (T.Tuple2 fv frng') _) p =- T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p (gfromInteger T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fl- (T.uap2 T.mkNoSrcPos p (gmod T.mkNoSrcPos p) fv- (gk T.mkNoSrcPos p)))) frng'- v120v16v120v83v1 _ p = T.fatal p in (v120v16v120v83v1))- (T.uwrapForward p- (hf (gn T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)) frng p))) (T.fatal p))- where- - gk pk p = T.uconstUse pk p sk- - sk =- T.uconstDef p a122v8v122v20k- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fh fl)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)))- - gb pb p = T.uconstUse pb p sb- - sb =- T.uconstDef p a123v8v123v21b- (\ p ->- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2147483561))- - gn pn p = T.uconstUse pn p sn- - sn =- T.uconstDef p a124v8v124v23n- (\ p ->- T.uwrapForward p (hiLogBase (gb T.mkNoSrcPos p) (gk T.mkNoSrcPos p) p))- - gf pf p = T.ufun3 a126v8v131v42f pf p hf- - af = a126v8v131v42f- - hf fv126v10v126v10n facc fg p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv126v10v126v10n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h facc fg p)- (y1f fv126v10v126v10n facc fg p)- where- - h facc fg p = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 facc fg- h _ _ p = y1f fv126v10v126v10n facc fg p- - hf fv126v10v126v10n facc fg p = y1f fv126v10v126v10n facc fg p- - y1f fn facc fg p =- let- gx px p = T.uconstUse px p sx- gg' px p = T.uconstUse px p sg'- j129v12v129v17x =- case T.uap1 T.mkNoSrcPos p (gnext T.mkNoSrcPos p) fg of- T.R (T.Tuple2 fx fg') kx -> (kx,fx,fg')- _ -> T.fatal p- sx =- T.uconstDef p a129v13v129v13x- (\ _ -> case j129v12v129v17x of (kx,fx,fg') -> fx)- sg' =- T.uconstDef p a129v15v129v16g'- (\ _ -> case j129v12v129v17x of (kx,fx,fg') -> fg') in- (T.uwrapForward p- (hf- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fn- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap1 T.mkNoSrcPos p (gfromInt T.mkNoSrcPos p)- (gx T.mkNoSrcPos p))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) facc- (gb T.mkNoSrcPos p))) (gg' T.mkNoSrcPos p) p))- -hrandomIvalInteger _ _ p = T.fatal p--grandomIvalDouble ::- (RandomGen g,Fractional a) =>- T.RefSrcPos ->- T.RefExp ->- T.R- (T.Fun (T.Tuple2 Double Double)- (T.Fun (T.Fun Double a) (T.Fun g (T.Tuple2 a g))))--hrandomIvalDouble ::- (RandomGen g,Fractional a) =>- (T.R (T.Tuple2 Double Double)) ->- (T.R (T.Fun Double a)) -> (T.R g) -> T.RefExp -> T.R (T.Tuple2 a g)--grandomIvalDouble prandomIvalDouble p =- T.ufun3 arandomIvalDouble prandomIvalDouble p hrandomIvalDouble--hrandomIvalDouble (T.R (T.Tuple2 fl fh) _) ffromDouble frng p =- T.ucguard (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fl fh)- (T.uwrapForward p- (hrandomIvalDouble (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fh fl)- ffromDouble frng p))- (T.ucguard (gotherwise T.mkNoSrcPos p)- (T.uccase T.mkNoSrcPos p- (let- v137v8v145v28v1 (T.R (T.Tuple2 fx frng') _) p =- let- gscaled_x pscaled_x p = T.uconstUse pscaled_x p sscaled_x- sscaled_x =- T.uconstDef p a140v14v143v36scaled_x- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap1 T.mkNoSrcPos p ffromDouble- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fl fh)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)- (T.uap1 T.mkNoSrcPos p ffromDouble- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fh fl)- (T.uap1 T.mkNoSrcPos p (grealToFrac T.mkNoSrcPos p)- (gintRange T.mkNoSrcPos p))))- (T.uap1 T.mkNoSrcPos p (gfromIntegral T.mkNoSrcPos p)- (fx :: T.R Int)))) in- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (gscaled_x T.mkNoSrcPos p) frng')- v137v8v145v28v1 _ p = T.fatal p in (v137v8v145v28v1))- (T.uwrapForward p- (hrandomIvalInteger- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)- (gminBound T.mkNoSrcPos p :: T.R Int))- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)- (gmaxBound T.mkNoSrcPos p :: T.R Int))) frng p))) (T.fatal p))-hrandomIvalDouble _ _ _ p = T.fatal p--gfromInt :: Num a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int a)--sfromInt :: Num a => T.R (T.Fun Int a)--gfromInt pfromInt p = T.uconstUse pfromInt p sfromInt--sfromInt =- T.uconstDef T.mkRoot afromInt- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (gfromInteger T.mkNoSrcPos p)- (gtoInteger T.mkNoSrcPos p))--gintRange :: T.RefSrcPos -> T.RefExp -> T.R Integer--sintRange :: T.R Integer--gintRange pintRange p = T.uconstUse pintRange p sintRange--sintRange =- T.uconstDef T.mkRoot aintRange- (\ p ->- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)- (gmaxBound T.mkNoSrcPos p :: T.R Int))- (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)- (gminBound T.mkNoSrcPos p :: T.R Int)))--giLogBase ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Integer))--hiLogBase :: (T.R Integer) -> (T.R Integer) -> T.RefExp -> T.R Integer--giLogBase piLogBase p = T.ufun2 aiLogBase piLogBase p hiLogBase--hiLogBase fb fi p =- T.ucif p (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !< p) fi fb)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))- (T.uwrapForward p- (hiLogBase fb (T.uap2 T.mkNoSrcPos p (gdiv T.mkNoSrcPos p) fi fb) p)))--gnewStdGen :: T.RefSrcPos -> T.RefExp -> T.R (IO StdGen)--gnewStdGen pnewStdGen p = T.uconstUse pnewStdGen p snewStdGen--snewStdGen =- T.uconstDef T.mkRoot anewStdGen- (\ p -> (T.fromIO fromStdGen) p Random.newStdGen)--gsetStdGen :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun StdGen (IO T.Tuple0))--gsetStdGen psetStdGen p = T.ufun1 asetStdGen psetStdGen p hsetStdGen--hsetStdGen z1setStdGen ksetStdGen =- (T.fromIO T.fromTuple0) ksetStdGen- (Random.setStdGen (toStdGen ksetStdGen z1setStdGen))--ggetStdGen :: T.RefSrcPos -> T.RefExp -> T.R (IO StdGen)--ggetStdGen pgetStdGen p = T.uconstUse pgetStdGen p sgetStdGen--sgetStdGen =- T.uconstDef T.mkRoot agetStdGen- (\ p -> (T.fromIO fromStdGen) p Random.getStdGen)--ggetStdRandom ::- T.RefSrcPos ->- T.RefExp -> T.R (T.Fun (T.Fun StdGen (T.Tuple2 a StdGen)) (IO a))--ggetStdRandom pgetStdRandom p =- T.ufun1 agetStdRandom pgetStdRandom p hgetStdRandom--hgetStdRandom z1getStdRandom kgetStdRandom =- (T.fromIO T.fromId) kgetStdRandom- (Random.getStdRandom- ((toFun fromStdGen (T.toTuple2 T.toId toStdGen)) kgetStdRandom- z1getStdRandom))--tRandom = T.mkModule "Random" "Random.hs" Prelude.False--aprimStdGenGenRange =- T.mkVariable tRandom 410001 420041 3 1 "primStdGenGenRange" Prelude.False--aprimStdGenNext =- T.mkVariable tRandom 430001 440040 3 1 "primStdGenNext" Prelude.False--aprimStdGenSplit =- T.mkVariable tRandom 450001 460044 3 1 "primStdGenSplit" Prelude.False--aprimStdGenReadsPrec =- T.mkVariable tRandom 470001 480042 3 2 "primStdGenReadsPrec" Prelude.False--aprimStdGenShowsPrec =- T.mkVariable tRandom 490001 500057 3 3 "primStdGenShowsPrec" Prelude.False--amkStdGen = T.mkVariable tRandom 530001 540026 3 1 "mkStdGen" Prelude.False--arandomIvalInteger =- T.mkVariable tRandom 1180001 1310042 3 2 "randomIvalInteger" Prelude.False--arandomIvalDouble =- T.mkVariable tRandom 1340001 1450028 3 3 "randomIvalDouble" Prelude.False--afromInt = T.mkVariable tRandom 1480001 1480033 3 0 "fromInt" Prelude.False--aintRange = T.mkVariable tRandom 1510001 1510064 3 0 "intRange" Prelude.False--aiLogBase = T.mkVariable tRandom 1540001 1540061 3 2 "iLogBase" Prelude.False--anewStdGen = T.mkVariable tRandom 1580001 1590019 3 0 "newStdGen" Prelude.False--asetStdGen = T.mkVariable tRandom 1600001 1610029 3 1 "setStdGen" Prelude.False--agetStdGen = T.mkVariable tRandom 1620001 1630019 3 0 "getStdGen" Prelude.False--agetStdRandom =- T.mkVariable tRandom 1640001 1650046 3 1 "getStdRandom" Prelude.False--a24v3v24v34genRange =- T.mkVariable tRandom 240003 240034 3 1 "genRange" Prelude.False--a31v3v31v31genRange =- T.mkVariable tRandom 310003 310031 3 0 "genRange" Prelude.False--a32v3v32v23next = T.mkVariable tRandom 320003 320023 3 0 "next" Prelude.False--a33v3v33v25split = T.mkVariable tRandom 330003 330025 3 0 "split" Prelude.False--a36v3v36v33readsPrec =- T.mkVariable tRandom 360003 360033 3 0 "readsPrec" Prelude.False--a39v3v39v33showsPrec =- T.mkVariable tRandom 390003 390033 3 0 "showsPrec" Prelude.False--a68v3v70v21randoms =- T.mkVariable tRandom 680003 700021 3 1 "randoms" Prelude.False--a71v3v73v28randomRs =- T.mkVariable tRandom 710003 730028 3 2 "randomRs" Prelude.False--a74v3v74v39randomIO =- T.mkVariable tRandom 740003 740039 3 0 "randomIO" Prelude.False--a75v3v75v47randomRIO =- T.mkVariable tRandom 750003 750047 3 1 "randomRIO" Prelude.False--a78v3v78v66randomR =- T.mkVariable tRandom 780003 780066 3 2 "randomR" Prelude.False--a79v3v79v49random =- T.mkVariable tRandom 790003 790049 3 1 "random" Prelude.False--a82v3v82v43randomR =- T.mkVariable tRandom 820003 820043 3 2 "randomR" Prelude.False--a83v3v83v83random =- T.mkVariable tRandom 830003 830083 3 1 "random" Prelude.False--a86v3v86v63random =- T.mkVariable tRandom 860003 860063 3 1 "random" Prelude.False--a87v3v87v78randomR =- T.mkVariable tRandom 870003 870078 3 2 "randomR" Prelude.False--a90v3v90v45randomR =- T.mkVariable tRandom 900003 900045 3 2 "randomR" Prelude.False--a91v3v91v42random =- T.mkVariable tRandom 910003 910042 3 1 "random" Prelude.False--a94v3v105v22randomR =- T.mkVariable tRandom 940003 1050022 3 2 "randomR" Prelude.False--a107v3v107v42random =- T.mkVariable tRandom 1070003 1070042 3 1 "random" Prelude.False--a110v3v112v27randomR =- T.mkVariable tRandom 1100003 1120027 3 2 "randomR" Prelude.False--a113v3v113v42random =- T.mkVariable tRandom 1130003 1130042 3 1 "random" Prelude.False--a70v6v70v6x = T.mkVariable tRandom 700006 700006 3 0 "x" Prelude.True--a70v8v70v9g' = T.mkVariable tRandom 700008 700009 3 0 "g'" Prelude.True--a73v6v73v6x = T.mkVariable tRandom 730006 730006 3 0 "x" Prelude.True--a73v8v73v9g' = T.mkVariable tRandom 730008 730009 3 0 "g'" Prelude.True--a100v5v101v26bool2Integer =- T.mkVariable tRandom 1000005 1010026 3 1 "bool2Integer" Prelude.True--a104v5v105v22int2Bool =- T.mkVariable tRandom 1040005 1050022 3 1 "int2Bool" Prelude.True--a122v8v122v20k = T.mkVariable tRandom 1220008 1220020 3 0 "k" Prelude.True--a123v8v123v21b = T.mkVariable tRandom 1230008 1230021 3 0 "b" Prelude.True--a124v8v124v23n = T.mkVariable tRandom 1240008 1240023 3 0 "n" Prelude.True--a126v8v131v42f = T.mkVariable tRandom 1260008 1310042 3 3 "f" Prelude.True--a129v13v129v13x = T.mkVariable tRandom 1290013 1290013 3 0 "x" Prelude.True--a129v15v129v16g' = T.mkVariable tRandom 1290015 1290016 3 0 "g'" Prelude.True--a140v14v143v36scaled_x =- T.mkVariable tRandom 1400014 1430036 3 0 "scaled_x" Prelude.True+ (RandomGen(gnext, gsplit, ggenRange, snext, ssplit,+ sgenRange),+ StdGen, gmkStdGen, amkStdGen, hmkStdGen,+ Random(grandom, grandomR, grandoms, grandomRs,+ grandomIO, grandomRIO, srandom, srandomR, srandoms,+ srandomRs, srandomIO, srandomRIO),+ ggetStdRandom, agetStdRandom, hgetStdRandom,+ ggetStdGen, gsetStdGen, asetStdGen, hsetStdGen,+ gnewStdGen)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBuiltinTypes as T+import Hat.RandomBuiltin as T+import qualified System.Random as Random+import Hat.Char+ +class RandomGen g where+ + ggenRange ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun g (T.Tuple2 Int Int))+ + sgenRange :: T.R (T.Fun g (T.Tuple2 Int Int))+ + gnext ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun g (T.Tuple2 Int g))+ + snext :: T.R (T.Fun g (T.Tuple2 Int g))+ snext = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ + gsplit ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun g (T.Tuple2 g g))+ + ssplit :: T.R (T.Fun g (T.Tuple2 g g))+ ssplit = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ ggenRange pgenRange p+ = T.ufun1 c24v3v24v34genRange pgenRange p hgenRange+ where hgenRange fg p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gminBound T.mkNoSrcPos p)+ (gmaxBound T.mkNoSrcPos p)+ +instance RandomGen StdGen where+ ggenRange pgenRange p+ = T.uconstUse pgenRange p sgenRange+ sgenRange+ = T.uconstDef p c31v3v31v31genRange+ (\ p -> gprimStdGenGenRange T.mkNoSrcPos p)+ gnext pnext p = T.uconstUse pnext p snext+ snext+ = T.uconstDef p c32v3v32v23next+ (\ p -> gprimStdGenNext T.mkNoSrcPos p)+ gsplit psplit p = T.uconstUse psplit p ssplit+ ssplit+ = T.uconstDef p c33v3v33v25split+ (\ p -> gprimStdGenSplit T.mkNoSrcPos p)+ +instance Read StdGen where+ greadsPrec preadsPrec p+ = T.uconstUse preadsPrec p sreadsPrec+ sreadsPrec+ = T.uconstDef p c36v3v36v33readsPrec+ (\ p -> gprimStdGenReadsPrec T.mkNoSrcPos p)+ +instance Show StdGen where+ gshowsPrec pshowsPrec p+ = T.uconstUse pshowsPrec p sshowsPrec+ sshowsPrec+ = T.uconstDef p c39v3v39v33showsPrec+ (\ p -> gprimStdGenShowsPrec T.mkNoSrcPos p)+ +gprimStdGenGenRange ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun StdGen (T.Tuple2 Int Int))+gprimStdGenGenRange pprimStdGenGenRange p+ = T.ufun1 aprimStdGenGenRange pprimStdGenGenRange p+ hprimStdGenGenRange+hprimStdGenGenRange z1primStdGenGenRange+ kprimStdGenGenRange+ = T.fromTuple2 T.fromInt T.fromInt+ kprimStdGenGenRange+ (Random.genRange+ (T.toStdGen kprimStdGenGenRange+ z1primStdGenGenRange))+ +gprimStdGenNext ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun StdGen (T.Tuple2 Int StdGen))+gprimStdGenNext pprimStdGenNext p+ = T.ufun1 aprimStdGenNext pprimStdGenNext p+ hprimStdGenNext+hprimStdGenNext z1primStdGenNext kprimStdGenNext+ = T.fromTuple2 T.fromInt T.fromStdGen kprimStdGenNext+ (Random.next+ (T.toStdGen kprimStdGenNext z1primStdGenNext))+ +gprimStdGenSplit ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun StdGen (T.Tuple2 StdGen StdGen))+gprimStdGenSplit pprimStdGenSplit p+ = T.ufun1 aprimStdGenSplit pprimStdGenSplit p+ hprimStdGenSplit+hprimStdGenSplit z1primStdGenSplit kprimStdGenSplit+ = T.fromTuple2 T.fromStdGen T.fromStdGen+ kprimStdGenSplit+ (Random.split+ (T.toStdGen kprimStdGenSplit z1primStdGenSplit))+ +gprimStdGenReadsPrec ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun Int+ (T.Fun String (T.List (T.Tuple2 StdGen String))))+gprimStdGenReadsPrec pprimStdGenReadsPrec p+ = T.ufun2 aprimStdGenReadsPrec pprimStdGenReadsPrec p+ hprimStdGenReadsPrec+hprimStdGenReadsPrec z1primStdGenReadsPrec+ z2primStdGenReadsPrec kprimStdGenReadsPrec+ = T.fromList (T.fromTuple2 T.fromStdGen T.fromString)+ kprimStdGenReadsPrec+ (Prelude.readsPrec+ (T.toInt kprimStdGenReadsPrec z1primStdGenReadsPrec)+ (T.toString kprimStdGenReadsPrec+ z2primStdGenReadsPrec))+ +gprimStdGenShowsPrec ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Int (T.Fun StdGen (T.Fun String String)))+gprimStdGenShowsPrec pprimStdGenShowsPrec p+ = T.ufun3 aprimStdGenShowsPrec pprimStdGenShowsPrec p+ hprimStdGenShowsPrec+hprimStdGenShowsPrec z1primStdGenShowsPrec+ z2primStdGenShowsPrec z3primStdGenShowsPrec+ kprimStdGenShowsPrec+ = T.fromString kprimStdGenShowsPrec+ (Prelude.showsPrec+ (T.toInt kprimStdGenShowsPrec z1primStdGenShowsPrec)+ (T.toStdGen kprimStdGenShowsPrec+ z2primStdGenShowsPrec)+ (T.toString kprimStdGenShowsPrec+ z3primStdGenShowsPrec))+ +gmkStdGen ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int StdGen)+gmkStdGen pmkStdGen p+ = T.ufun1 amkStdGen pmkStdGen p hmkStdGen+hmkStdGen z1mkStdGen kmkStdGen+ = T.fromStdGen kmkStdGen+ (Random.mkStdGen (T.toInt kmkStdGen z1mkStdGen))+ +class Random a where+ + grandomR ::+ (RandomGen g) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.Tuple2 a g)))+ + srandomR ::+ (RandomGen g) =>+ T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.Tuple2 a g)))+ srandomR = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ + grandom ::+ (RandomGen g) =>+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun g (T.Tuple2 a g))+ + srandom ::+ (RandomGen g) => T.R (T.Fun g (T.Tuple2 a g))+ srandom = Hat.PreludeBasic.gundefined T.mkNoSrcPos p+ + grandomRs ::+ (RandomGen g) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.List a)))+ + srandomRs ::+ (RandomGen g) =>+ T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.List a)))+ + grandoms ::+ (RandomGen g) =>+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.List a))+ + srandoms :: (RandomGen g) => T.R (T.Fun g (T.List a))+ + grandomRIO ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (IO a))+ + srandomRIO :: T.R (T.Fun (T.Tuple2 a a) (IO a))+ + grandomIO :: T.RefSrcPos -> T.RefExp -> T.R (IO a)+ + srandomIO :: T.R (IO a)+ grandoms prandoms p+ = T.ufun1 c68v3v69v9randoms prandoms p hrandoms+ where hrandoms fg p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (gx T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (grandoms T.mkNoSrcPos p)+ (gg' T.mkNoSrcPos p))+ where gx px p = T.uconstUse px p sx+ gg' pg' p = T.uconstUse pg' p sg'+ sx+ = T.uconstDef p c70v5v70v21x+ (\ _ ->+ case j70v5v70v21x of+ (kx, fx, fg') -> fx)+ sg'+ = T.uconstDef p c70v5v70v21g'+ (\ _ ->+ case j70v5v70v21x of+ (kx, fx, fg') -> fg')+ j70v5v70v21x+ = case+ T.uap1 T.mkNoSrcPos p (grandom T.mkNoSrcPos p) fg+ of+ T.R (T.Tuple2 fx fg') kx -> (kx, fx, fg')+ _ -> T.fatal p+ grandomRs prandomRs p+ = T.ufun2 c71v3v72v9randomRs prandomRs p hrandomRs+ where hrandomRs frange fg p+ = T.con2 T.mkNoSrcPos p T.Cons T.aCons+ (gx T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (grandomRs T.mkNoSrcPos p)+ frange+ (gg' T.mkNoSrcPos p))+ where gx px p = T.uconstUse px p sx+ gg' pg' p = T.uconstUse pg' p sg'+ sx+ = T.uconstDef p c73v5v73v28x+ (\ _ ->+ case j73v5v73v28x of+ (kx, fx, fg') -> fx)+ sg'+ = T.uconstDef p c73v5v73v28g'+ (\ _ ->+ case j73v5v73v28x of+ (kx, fx, fg') -> fg')+ j73v5v73v28x+ = case+ T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)+ frange+ fg+ of+ T.R (T.Tuple2 fx fg') kx -> (kx, fx, fg')+ _ -> T.fatal p+ grandomIO prandomIO p+ = T.uconstUse prandomIO p srandomIO+ srandomIO+ = T.uconstDef p c74v3v74v39randomIO+ (\ p ->+ T.uwrapForward p+ (hgetStdRandom (grandom T.mkNoSrcPos p) p))+ grandomRIO prandomRIO p+ = T.ufun1 c75v3v75v48randomRIO prandomRIO p+ hrandomRIO+ where hrandomRIO frange p+ = T.uwrapForward p+ (hgetStdRandom+ (T.uap1 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)+ frange)+ p)+ +instance Random Int where+ grandomR prandomR p+ = T.ufun2 c78v3v78v66randomR prandomR p hrandomR+ where hrandomR (T.R (T.Tuple2 fa fb) _) fg p+ = T.uwrapForward p+ (hrandomIvalInteger+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)+ fa)+ (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)+ fb))+ fg+ p)+ grandom prandom p+ = T.ufun1 c79v3v79v49random prandom p hrandom+ where hrandom fg p+ = T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gminBound T.mkNoSrcPos p)+ (gmaxBound T.mkNoSrcPos p))+ fg+ +instance Random Integer where+ grandomR prandomR p+ = T.ufun2 c82v3v82v43randomR prandomR p hrandomR+ where hrandomR fival fg p+ = T.uwrapForward p (hrandomIvalInteger fival fg p)+ grandom prandom p+ = T.ufun1 c83v3v83v83random prandom p hrandom+ where hrandom fg p+ = T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)+ (gminBound T.mkNoSrcPos p :: T.R Int))+ (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)+ (gmaxBound T.mkNoSrcPos p :: T.R Int)))+ fg+ +instance Random Float where+ grandom prandom p+ = T.ufun1 c86v3v86v63random prandom p hrandom+ where hrandom fg p+ = T.uwrapForward p+ (hrandomIvalDouble+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Double)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (grealToFrac T.mkNoSrcPos p)+ fg+ p)+ grandomR prandomR p+ = T.ufun2 c87v3v87v78randomR prandomR p hrandomR+ where hrandomR (T.R (T.Tuple2 fa fb) _) fg p+ = T.uwrapForward p+ (hrandomIvalDouble+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p (grealToFrac T.mkNoSrcPos p)+ fa)+ (T.uap1 T.mkNoSrcPos p (grealToFrac T.mkNoSrcPos p)+ fb))+ (grealToFrac T.mkNoSrcPos p)+ fg+ p)+ +instance Random Double where+ grandomR prandomR p+ = T.ufun2 c90v3v90v45randomR prandomR p hrandomR+ where hrandomR fival fg p+ = T.uwrapForward p+ (hrandomIvalDouble fival (gid T.mkNoSrcPos p) fg p)+ grandom prandom p+ = T.ufun1 c91v3v91v42random prandom p hrandom+ where hrandom fg p+ = T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Double)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ fg+ +instance Random Bool where+ grandomR prandomR p+ = T.ufun2 c94v3v98v9randomR prandomR p hrandomR+ where hrandomR (T.R (T.Tuple2 fa fb) _) fg p+ = T.uccase T.mkNoSrcPos p+ (let v95v5v98v0v1 (T.R (T.Tuple2 fx fg) _) p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hint2Bool fx p))+ fg+ in v95v5v98v0v1)+ (T.uwrapForward p+ (hrandomIvalInteger+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hbool2Integer fa p))+ (T.uwrapForward p (hbool2Integer fb p)))+ fg+ p))+ where + gbool2Integer ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Bool Integer)+ + hbool2Integer :: T.R Bool -> T.RefExp -> T.R Integer+ gbool2Integer pbool2Integer p+ = T.ufun1 c100v5v101v26bool2Integer pbool2Integer p+ hbool2Integer+ abool2Integer = c100v5v101v26bool2Integer+ hbool2Integer (T.R False _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hbool2Integer (T.R True _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hbool2Integer _ p = T.fatal p+ + gint2Bool ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int Bool)+ + hint2Bool :: T.R Int -> T.RefExp -> T.R Bool+ gint2Bool pint2Bool p+ = T.ufun1 c104v5v105v22int2Bool pint2Bool p hint2Bool+ aint2Bool = c104v5v105v22int2Bool+ hint2Bool fv104v14v104v14n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv104v14v104v14n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h104v5v104v23n p)+ (y1int2Bool fv104v14v104v14n p)+ where h104v5v104v23n p+ = T.con0 T.mkNoSrcPos p False aFalse+ h104v5v104v23n p = y1int2Bool fv104v14v104v14n p+ hint2Bool fv104v14v104v14n p+ = y1int2Bool fv104v14v104v14n p+ y1int2Bool _ p = T.con0 T.mkNoSrcPos p True aTrue+ grandom prandom p+ = T.ufun1 c107v3v107v42random prandom p hrandom+ where hrandom fg p+ = T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gminBound T.mkNoSrcPos p)+ (gmaxBound T.mkNoSrcPos p))+ fg+ +instance Random Char where+ grandomR prandomR p+ = T.ufun2 c110v3v113v0randomR prandomR p hrandomR+ where hrandomR (T.R (T.Tuple2 fa fb) _) fg p+ = T.uccase T.mkNoSrcPos p+ (let v111v7v113v0v1 (T.R (T.Tuple2 fx fg) _) p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p (gchr T.mkNoSrcPos p)+ fx)+ fg+ in v111v7v113v0v1)+ (T.uwrapForward p+ (hrandomIvalInteger+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p+ (gtoInteger T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p)+ fa))+ (T.uap1 T.mkNoSrcPos p+ (gtoInteger T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p)+ fb)))+ fg+ p))+ grandom prandom p+ = T.ufun1 c113v3v113v42random prandom p hrandom+ where hrandom fg p+ = T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gminBound T.mkNoSrcPos p)+ (gmaxBound T.mkNoSrcPos p))+ fg+ +grandomIvalInteger ::+ (RandomGen g, Num a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Tuple2 Integer Integer)+ (T.Fun g (T.Tuple2 a g)))+ +hrandomIvalInteger ::+ (RandomGen g, Num a) =>+ T.R (T.Tuple2 Integer Integer) ->+ T.R g -> T.RefExp -> T.R (T.Tuple2 a g)+grandomIvalInteger prandomIvalInteger p+ = T.ufun2 arandomIvalInteger prandomIvalInteger p+ hrandomIvalInteger+hrandomIvalInteger (T.R (T.Tuple2 fl fh) _) frng p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fl fh)+ (T.uwrapForward p+ (hrandomIvalInteger+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fh fl)+ frng+ p))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uccase T.mkNoSrcPos p+ (let v120v16v121v0v1 (T.R (T.Tuple2 fv frng') _) p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p (gfromInteger T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p) fl+ (T.uap2 T.mkNoSrcPos p (gmod T.mkNoSrcPos p) fv+ (gk T.mkNoSrcPos p))))+ frng'+ in v120v16v121v0v1)+ (T.uwrapForward p+ (hf (gn T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1)))+ frng+ p)))+ (T.fatal p))+ where gk pk p = T.uconstUse pk p sk+ sk+ = T.uconstDef p c122v8v122v20k+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fh fl)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ gb pb p = T.uconstUse pb p sb+ sb+ = T.uconstDef p c123v8v123v21b+ (\ p ->+ T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2147483561)))+ gn pn p = T.uconstUse pn p sn+ sn+ = T.uconstDef p c124v8v124v23n+ (\ p ->+ T.uwrapForward p+ (hiLogBase (gb T.mkNoSrcPos p) (gk T.mkNoSrcPos p)+ p))+ gf pf p = T.ufun3 c126v8v131v42f pf p hf+ af = c126v8v131v42f+ hf fv126v10v126v10n facc fg p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv126v10v126v10n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h126v8v126v27n facc fg p)+ (y1f fv126v10v126v10n facc fg p)+ where h126v8v126v27n facc fg p+ = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 facc fg+ h126v8v126v27n _ _ p = y1f fv126v10v126v10n facc fg p+ hf fv126v10v126v10n facc fg p+ = y1f fv126v10v126v10n facc fg p+ y1f fn facc fg p+ = let gx px p = T.uconstUse px p sx+ gg' pg' p = T.uconstUse pg' p sg'+ sx+ = T.uconstDef p c129v12v129v28x+ (\ _ ->+ case j129v12v129v28x of+ (kx, fx, fg') -> fx)+ sg'+ = T.uconstDef p c129v12v129v28g'+ (\ _ ->+ case j129v12v129v28x of+ (kx, fx, fg') -> fg')+ j129v12v129v28x+ = case+ T.uap1 T.mkNoSrcPos p (gnext T.mkNoSrcPos p) fg of+ T.R (T.Tuple2 fx fg') kx -> (kx, fx, fg')+ _ -> T.fatal p+ in+ T.uwrapForward p+ (hf+ (T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p) fn+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromInt T.mkNoSrcPos p)+ (gx T.mkNoSrcPos p))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p) facc+ (gb T.mkNoSrcPos p)))+ (gg' T.mkNoSrcPos p)+ p)+ +grandomIvalDouble ::+ (RandomGen g, Fractional a) =>+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun (T.Tuple2 Double Double)+ (T.Fun (T.Fun Double a) (T.Fun g (T.Tuple2 a g))))+ +hrandomIvalDouble ::+ (RandomGen g, Fractional a) =>+ T.R (T.Tuple2 Double Double) ->+ T.R (T.Fun Double a) ->+ T.R g -> T.RefExp -> T.R (T.Tuple2 a g)+grandomIvalDouble prandomIvalDouble p+ = T.ufun3 arandomIvalDouble prandomIvalDouble p+ hrandomIvalDouble+hrandomIvalDouble (T.R (T.Tuple2 fl fh) _)+ ffromDouble frng p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fl fh)+ (T.uwrapForward p+ (hrandomIvalDouble+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fh fl)+ ffromDouble+ frng+ p))+ (T.ucguard (gotherwise T.mkNoSrcPos p)+ (T.uccase T.mkNoSrcPos p+ (let v137v8v147v0v1 (T.R (T.Tuple2 fx frng') _) p+ = let gscaled_x pscaled_x p+ = T.uconstUse pscaled_x p sscaled_x+ sscaled_x+ = T.uconstDef p c140v14v143v37scaled_x+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p ffromDouble+ (T.uap2 T.mkNoSrcPos p+ ((!/) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!+) T.mkNoSrcPos p)+ fl+ fh)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (2)))))+ (T.uap2 T.mkNoSrcPos p ((!*) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p ffromDouble+ (T.uap2 T.mkNoSrcPos p+ ((!/) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!-) T.mkNoSrcPos p)+ fh+ fl)+ (T.uap1 T.mkNoSrcPos p+ (grealToFrac T.mkNoSrcPos p)+ (gintRange T.mkNoSrcPos p))))+ (T.uap1 T.mkNoSrcPos p+ (gfromIntegral T.mkNoSrcPos p)+ (fx :: T.R Int))))+ in+ T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (gscaled_x T.mkNoSrcPos p)+ frng'+ in v137v8v147v0v1)+ (T.uwrapForward p+ (hrandomIvalInteger+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)+ (gminBound T.mkNoSrcPos p :: T.R Int))+ (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)+ (gmaxBound T.mkNoSrcPos p :: T.R Int)))+ frng+ p)))+ (T.fatal p))+ +gfromInt ::+ (Num a) =>+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int a)+ +sfromInt :: (Num a) => T.R (T.Fun Int a)+gfromInt pfromInt p = T.uconstUse pfromInt p sfromInt+sfromInt+ = T.uconstDef p afromInt+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (gfromInteger T.mkNoSrcPos p)+ (gtoInteger T.mkNoSrcPos p))+ +gintRange :: T.RefSrcPos -> T.RefExp -> T.R Integer+ +sintRange :: T.R Integer+gintRange pintRange p+ = T.uconstUse pintRange p sintRange+sintRange+ = T.uconstDef p aintRange+ (\ p ->+ T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)+ (gmaxBound T.mkNoSrcPos p :: T.R Int))+ (T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)+ (gminBound T.mkNoSrcPos p :: T.R Int)))+ +giLogBase ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Integer (T.Fun Integer Integer))+ +hiLogBase ::+ T.R Integer -> T.R Integer -> T.RefExp -> T.R Integer+giLogBase piLogBase p+ = T.ufun2 aiLogBase piLogBase p hiLogBase+hiLogBase fb fi p+ = T.ucif p+ (T.uap2 T.mkNoSrcPos p ((!<) T.mkNoSrcPos p) fi fb)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1)))+ (T.uap2 T.mkNoSrcPos p ((!+) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1)))+ (T.uwrapForward p+ (hiLogBase fb+ (T.uap2 T.mkNoSrcPos p (gdiv T.mkNoSrcPos p) fi fb)+ p)))+ +gnewStdGen ::+ T.RefSrcPos -> T.RefExp -> T.R (IO StdGen)+gnewStdGen pnewStdGen p+ = T.uconstUse pnewStdGen p snewStdGen+snewStdGen+ = T.uconstDef p anewStdGen+ (\ p -> T.fromIO T.fromStdGen p Random.newStdGen)+ +gsetStdGen ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun StdGen (IO T.Tuple0))+gsetStdGen psetStdGen p+ = T.ufun1 asetStdGen psetStdGen p hsetStdGen+hsetStdGen z1setStdGen ksetStdGen+ = T.fromIO T.fromTuple0 ksetStdGen+ (Random.setStdGen+ (T.toStdGen ksetStdGen z1setStdGen))+ +ggetStdGen ::+ T.RefSrcPos -> T.RefExp -> T.R (IO StdGen)+ggetStdGen pgetStdGen p+ = T.uconstUse pgetStdGen p sgetStdGen+sgetStdGen+ = T.uconstDef p agetStdGen+ (\ p -> T.fromIO T.fromStdGen p Random.getStdGen)+ +ggetStdRandom ::+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun (T.Fun StdGen (T.Tuple2 a StdGen)) (IO a))+ggetStdRandom pgetStdRandom p+ = T.ufun1 agetStdRandom pgetStdRandom p hgetStdRandom+hgetStdRandom z1getStdRandom kgetStdRandom+ = T.fromIO T.fromId kgetStdRandom+ (Random.getStdRandom+ ((T.toFun T.fromStdGen+ (T.toTuple2 T.toId T.toStdGen))+ kgetStdRandom+ z1getStdRandom))+afromInt+ = T.mkVariable tRandom 1480001 1480033 3 (0)+ "fromInt"+ Prelude.False+c24v3v24v34genRange+ = T.mkVariable tRandom 240003 240034 3 (-1)+ "genRange"+ Prelude.False+agetStdGen+ = T.mkVariable tRandom 1620001 1630016 3 (0)+ "getStdGen"+ Prelude.False+agetStdRandom+ = T.mkVariable tRandom 1640001 1650016 3 (1)+ "getStdRandom"+ Prelude.False+aiLogBase+ = T.mkVariable tRandom 1540001 1540062 3 (2)+ "iLogBase"+ Prelude.False+aintRange+ = T.mkVariable tRandom 1510001 1510065 3 (0)+ "intRange"+ Prelude.False+amkStdGen+ = T.mkVariable tRandom 530001 540012 3 (1) "mkStdGen"+ Prelude.False+anewStdGen+ = T.mkVariable tRandom 1580001 1590016 3 (0)+ "newStdGen"+ Prelude.False+aprimStdGenGenRange+ = T.mkVariable tRandom 410001 420022 3 (1)+ "primStdGenGenRange"+ Prelude.False+aprimStdGenNext+ = T.mkVariable tRandom 430001 440018 3 (1)+ "primStdGenNext"+ Prelude.False+aprimStdGenReadsPrec+ = T.mkVariable tRandom 470001 480023 3 (2)+ "primStdGenReadsPrec"+ Prelude.False+aprimStdGenShowsPrec+ = T.mkVariable tRandom 490001 500023 3 (3)+ "primStdGenShowsPrec"+ Prelude.False+aprimStdGenSplit+ = T.mkVariable tRandom 450001 460019 3 (1)+ "primStdGenSplit"+ Prelude.False+c74v3v74v39randomIO+ = T.mkVariable tRandom 740003 740039 3 (-1)+ "randomIO"+ Prelude.False+arandomIvalDouble+ = T.mkVariable tRandom 1340001 1470000 3 (3)+ "randomIvalDouble"+ Prelude.False+arandomIvalInteger+ = T.mkVariable tRandom 1180001 1210010 3 (2)+ "randomIvalInteger"+ Prelude.False+c75v3v75v48randomRIO+ = T.mkVariable tRandom 750003 750048 3 (-1)+ "randomRIO"+ Prelude.False+c71v3v72v9randomRs+ = T.mkVariable tRandom 710003 720009 3 (-1)+ "randomRs"+ Prelude.False+c68v3v69v9randoms+ = T.mkVariable tRandom 680003 690009 3 (-1) "randoms"+ Prelude.False+asetStdGen+ = T.mkVariable tRandom 1600001 1610016 3 (1)+ "setStdGen"+ Prelude.False+c31v3v31v31genRange+ = T.mkVariable tRandom 310003 310031 3 (-1)+ "genRange"+ Prelude.False+c32v3v32v23next+ = T.mkVariable tRandom 320003 320023 3 (-1) "next"+ Prelude.False+c33v3v33v25split+ = T.mkVariable tRandom 330003 330025 3 (-1) "split"+ Prelude.False+c36v3v36v33readsPrec+ = T.mkVariable tRandom 360003 360033 3 (-1)+ "readsPrec"+ Prelude.False+c39v3v39v33showsPrec+ = T.mkVariable tRandom 390003 390033 3 (-1)+ "showsPrec"+ Prelude.False+c70v5v70v21g'+ = T.mkVariable tRandom 700005 700021 3 (0) "g'"+ Prelude.True+c70v5v70v21x+ = T.mkVariable tRandom 700005 700021 3 (0) "x"+ Prelude.True+c73v5v73v28g'+ = T.mkVariable tRandom 730005 730028 3 (0) "g'"+ Prelude.True+c73v5v73v28x+ = T.mkVariable tRandom 730005 730028 3 (0) "x"+ Prelude.True+c79v3v79v49random+ = T.mkVariable tRandom 790003 790049 3 (-1) "random"+ Prelude.False+c78v3v78v66randomR+ = T.mkVariable tRandom 780003 780066 3 (-1) "randomR"+ Prelude.False+c83v3v83v83random+ = T.mkVariable tRandom 830003 830083 3 (-1) "random"+ Prelude.False+c82v3v82v43randomR+ = T.mkVariable tRandom 820003 820043 3 (-1) "randomR"+ Prelude.False+c86v3v86v63random+ = T.mkVariable tRandom 860003 860063 3 (-1) "random"+ Prelude.False+c87v3v87v78randomR+ = T.mkVariable tRandom 870003 870078 3 (-1) "randomR"+ Prelude.False+c91v3v91v42random+ = T.mkVariable tRandom 910003 910042 3 (-1) "random"+ Prelude.False+c90v3v90v45randomR+ = T.mkVariable tRandom 900003 900045 3 (-1) "randomR"+ Prelude.False+c100v5v101v26bool2Integer+ = T.mkVariable tRandom 1000005 1010026 3 (1)+ "bool2Integer"+ Prelude.True+c104v5v105v22int2Bool+ = T.mkVariable tRandom 1040005 1050022 3 (1)+ "int2Bool"+ Prelude.True+c107v3v107v42random+ = T.mkVariable tRandom 1070003 1070042 3 (-1)+ "random"+ Prelude.False+c94v3v98v9randomR+ = T.mkVariable tRandom 940003 980009 3 (-1) "randomR"+ Prelude.False+c113v3v113v42random+ = T.mkVariable tRandom 1130003 1130042 3 (-1)+ "random"+ Prelude.False+c110v3v113v0randomR+ = T.mkVariable tRandom 1100003 1130000 3 (-1)+ "randomR"+ Prelude.False+c123v8v123v21b+ = T.mkVariable tRandom 1230008 1230021 3 (0) "b"+ Prelude.True+c126v8v131v42f+ = T.mkVariable tRandom 1260008 1310042 3 (3) "f"+ Prelude.True+c122v8v122v20k+ = T.mkVariable tRandom 1220008 1220020 3 (0) "k"+ Prelude.True+c124v8v124v23n+ = T.mkVariable tRandom 1240008 1240023 3 (0) "n"+ Prelude.True+c129v12v129v28g'+ = T.mkVariable tRandom 1290012 1290028 3 (0) "g'"+ Prelude.True+c129v12v129v28x+ = T.mkVariable tRandom 1290012 1290028 3 (0) "x"+ Prelude.True+c140v14v143v37scaled_x+ = T.mkVariable tRandom 1400014 1430037 3 (0)+ "scaled_x"+ Prelude.True+p = T.mkRoot+tRandom+ = T.mkModule "Random" "Random.hs" Prelude.False
Hat/Ratio.hs view
@@ -1,14 +1,14 @@ module Hat.Ratio- (Ratio(),Rational(),(!%),(+%),(*%),gnumerator,anumerator,hnumerator- ,gdenominator,adenominator,hdenominator,gapproxRational,aapproxRational- ,happroxRational) 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.PreludeBasic -+ (Ratio, Rational, (!%), (+%), (*%), gnumerator,+ anumerator, hnumerator, gdenominator, adenominator,+ hdenominator, gapproxRational, aapproxRational,+ happroxRational)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBasic+p = T.mkRoot tRatio = T.mkModule "Ratio" "Ratio.hs" Prelude.False
Hat/System.hs view
@@ -1,79 +1,90 @@ module Hat.System- (ExitCode(ExitSuccess,ExitFailure),aExitSuccess,aExitFailure,ggetArgs- ,ggetProgName,ggetEnv,agetEnv,hgetEnv,gsystem,asystem,hsystem,gexitWith- ,aexitWith,hexitWith,gexitFailure) 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.PreludeBuiltinTypes -import Hat.SystemBuiltinTypes -import Hat.SystemBuiltin -import qualified System.Cmd as Cmd -import qualified System.Environment as Environment -import qualified System.Exit as Exit --ggetArgs :: T.RefSrcPos -> T.RefExp -> T.R (IO (T.List String))-+ (ExitCode(ExitSuccess, ExitFailure), aExitSuccess,+ aExitFailure, ggetArgs, ggetProgName, ggetEnv,+ agetEnv, hgetEnv, gsystem, asystem, hsystem,+ gexitWith, aexitWith, hexitWith, gexitFailure)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBuiltinTypes as T+import Hat.SystemBuiltinTypes as T+import Hat.SystemBuiltin as T+import qualified System.Cmd as Cmd+import qualified System.Environment as Environment+import qualified System.Exit as Exit+ +ggetArgs ::+ T.RefSrcPos -> T.RefExp -> T.R (IO (T.List String)) ggetArgs pgetArgs p = T.uconstUse pgetArgs p sgetArgs--sgetArgs =- T.uconstDef T.mkRoot agetArgs- (\ p -> (T.fromIO (fromList fromString)) p Environment.getArgs)--ggetProgName :: T.RefSrcPos -> T.RefExp -> T.R (IO String)--ggetProgName pgetProgName p = T.uconstUse pgetProgName p sgetProgName--sgetProgName =- T.uconstDef T.mkRoot agetProgName- (\ p -> (T.fromIO fromString) p Environment.getProgName)--ggetEnv :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO String))-+sgetArgs+ = T.uconstDef p agetArgs+ (\ p ->+ T.fromIO (T.fromList T.fromString) p+ Environment.getArgs)+ +ggetProgName ::+ T.RefSrcPos -> T.RefExp -> T.R (IO String)+ggetProgName pgetProgName p+ = T.uconstUse pgetProgName p sgetProgName+sgetProgName+ = T.uconstDef p agetProgName+ (\ p ->+ T.fromIO T.fromString p Environment.getProgName)+ +ggetEnv ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO String)) ggetEnv pgetEnv p = T.ufun1 agetEnv pgetEnv p hgetEnv--hgetEnv z1getEnv kgetEnv =- (T.fromIO fromString) kgetEnv (Environment.getEnv (toString kgetEnv z1getEnv))--gsystem :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO ExitCode))-+hgetEnv z1getEnv kgetEnv+ = T.fromIO T.fromString kgetEnv+ (Environment.getEnv (T.toString kgetEnv z1getEnv))+ +gsystem ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO ExitCode)) gsystem psystem p = T.ufun1 asystem psystem p hsystem--hsystem z1system ksystem =- (T.fromIO fromExitCode) ksystem (Cmd.system (toString ksystem z1system))--gexitWith :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun ExitCode (IO a))--gexitWith pexitWith p = T.ufun1 aexitWith pexitWith p hexitWith--hexitWith z1exitWith kexitWith =- (T.fromIO T.fromId) kexitWith- (Exit.exitWith (toExitCode kexitWith z1exitWith))-+hsystem z1system ksystem+ = T.fromIO T.fromExitCode ksystem+ (Cmd.system (T.toString ksystem z1system))+ +gexitWith ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun ExitCode (IO a))+gexitWith pexitWith p+ = T.ufun1 aexitWith pexitWith p hexitWith+hexitWith z1exitWith kexitWith+ = T.fromIO T.fromId kexitWith+ (Exit.exitWith (T.toExitCode kexitWith z1exitWith))+ gexitFailure :: T.RefSrcPos -> T.RefExp -> T.R (IO a)--gexitFailure pexitFailure p = T.uconstUse pexitFailure p sexitFailure--sexitFailure =- T.uconstDef T.mkRoot aexitFailure- (\ p -> (T.fromIO T.fromId) p Exit.exitFailure)--tSystem = T.mkModule "System" "System.hs" Prelude.False--agetArgs = T.mkVariable tSystem 130001 140014 3 0 "getArgs" Prelude.False--agetProgName =- T.mkVariable tSystem 150001 160018 3 0 "getProgName" Prelude.False--agetEnv = T.mkVariable tSystem 170001 180023 3 1 "getEnv" Prelude.False--asystem = T.mkVariable tSystem 190001 200023 3 1 "system" Prelude.False--aexitWith = T.mkVariable tSystem 210001 220027 3 1 "exitWith" Prelude.False--aexitFailure =- T.mkVariable tSystem 230001 240018 3 0 "exitFailure" Prelude.False+gexitFailure pexitFailure p+ = T.uconstUse pexitFailure p sexitFailure+sexitFailure+ = T.uconstDef p aexitFailure+ (\ p -> T.fromIO T.fromId p Exit.exitFailure)+aexitFailure+ = T.mkVariable tSystem 230001 240015 3 (0)+ "exitFailure"+ Prelude.False+aexitWith+ = T.mkVariable tSystem 210001 220012 3 (1) "exitWith"+ Prelude.False+agetArgs+ = T.mkVariable tSystem 130001 140011 3 (0) "getArgs"+ Prelude.False+agetEnv+ = T.mkVariable tSystem 170001 180010 3 (1) "getEnv"+ Prelude.False+agetProgName+ = T.mkVariable tSystem 150001 160015 3 (0)+ "getProgName"+ Prelude.False+asystem+ = T.mkVariable tSystem 190001 200010 3 (1) "system"+ Prelude.False+p = T.mkRoot+tSystem+ = T.mkModule "System" "System.hs" Prelude.False
Hat/System/Environment.hs view
@@ -1,48 +1,56 @@ module Hat.System.Environment- (ggetArgs,ggetProgName,ggetEnv,agetEnv,hgetEnv) 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.PreludeBuiltinTypes -import Hat.IOBuiltin -import qualified System.Environment --ggetArgs :: T.RefSrcPos -> T.RefExp -> T.R (IO (T.List String))-+ (ggetArgs, ggetProgName, ggetEnv, agetEnv, hgetEnv)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBuiltinTypes as T+import Hat.IOBuiltin as T+import qualified System.Environment+ +ggetArgs ::+ T.RefSrcPos -> T.RefExp -> T.R (IO (T.List String)) ggetArgs pgetArgs p = T.uconstUse pgetArgs p sgetArgs--sgetArgs =- T.uconstDef T.mkRoot agetArgs- (\ p -> (T.fromIO (fromList fromString)) p System.Environment.getArgs)--ggetProgName :: T.RefSrcPos -> T.RefExp -> T.R (IO String)--ggetProgName pgetProgName p = T.uconstUse pgetProgName p sgetProgName--sgetProgName =- T.uconstDef T.mkRoot agetProgName- (\ p -> (T.fromIO fromString) p System.Environment.getProgName)--ggetEnv :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun String (IO String))-+sgetArgs+ = T.uconstDef p agetArgs+ (\ p ->+ T.fromIO (T.fromList T.fromString) p+ System.Environment.getArgs)+ +ggetProgName ::+ T.RefSrcPos -> T.RefExp -> T.R (IO String)+ggetProgName pgetProgName p+ = T.uconstUse pgetProgName p sgetProgName+sgetProgName+ = T.uconstDef p agetProgName+ (\ p ->+ T.fromIO T.fromString p+ System.Environment.getProgName)+ +ggetEnv ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun String (IO String)) ggetEnv pgetEnv p = T.ufun1 agetEnv pgetEnv p hgetEnv--hgetEnv z1getEnv kgetEnv =- (T.fromIO fromString) kgetEnv- (System.Environment.getEnv (toString kgetEnv z1getEnv))--tSystem_Environment =- T.mkModule "System.Environment" "System/Environment.hs" Prelude.False--agetArgs =- T.mkVariable tSystem_Environment 90001 100015 3 0 "getArgs" Prelude.False--agetProgName =- T.mkVariable tSystem_Environment 120001 130019 3 0 "getProgName" Prelude.False--agetEnv =- T.mkVariable tSystem_Environment 150001 160024 3 1 "getEnv" Prelude.False+hgetEnv z1getEnv kgetEnv+ = T.fromIO T.fromString kgetEnv+ (System.Environment.getEnv+ (T.toString kgetEnv z1getEnv))+agetArgs+ = T.mkVariable tEnvironment 90001 100012 3 (0)+ "getArgs"+ Prelude.False+agetEnv+ = T.mkVariable tEnvironment 150001 160011 3 (1)+ "getEnv"+ Prelude.False+agetProgName+ = T.mkVariable tEnvironment 120001 130016 3 (0)+ "getProgName"+ Prelude.False+p = T.mkRoot+tEnvironment+ = T.mkModule "System.Environment"+ "System/Environment.hs"+ Prelude.False
Hat/System/Exit.hs view
@@ -1,48 +1,53 @@ module Hat.System.Exit- (ExitCode(ExitSuccess,ExitFailure),aExitSuccess,aExitFailure,gexitWith- ,aexitWith,hexitWith,gexitFailure,gexitSuccess) 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.PreludeBuiltinTypes -import Hat.SystemBuiltinTypes -import Hat.SystemBuiltin -import qualified System.Exit --gexitWith :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun ExitCode (IO a))--gexitWith pexitWith p = T.ufun1 aexitWith pexitWith p hexitWith--hexitWith z1exitWith kexitWith =- (T.fromIO T.fromId) kexitWith- (System.Exit.exitWith (toExitCode kexitWith z1exitWith))-+ (ExitCode(ExitSuccess, ExitFailure), aExitSuccess,+ aExitFailure, gexitWith, aexitWith, hexitWith,+ gexitFailure, gexitSuccess)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.PreludeBuiltinTypes+import Hat.SystemBuiltinTypes+import Hat.SystemBuiltin as T+import qualified System.Exit+ +gexitWith ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun ExitCode (IO a))+gexitWith pexitWith p+ = T.ufun1 aexitWith pexitWith p hexitWith+hexitWith z1exitWith kexitWith+ = T.fromIO T.fromId kexitWith+ (System.Exit.exitWith+ (T.toExitCode kexitWith z1exitWith))+ gexitFailure :: T.RefSrcPos -> T.RefExp -> T.R (IO a)--gexitFailure pexitFailure p = T.uconstUse pexitFailure p sexitFailure--sexitFailure =- T.uconstDef T.mkRoot aexitFailure- (\ p -> (T.fromIO T.fromId) p System.Exit.exitFailure)-+gexitFailure pexitFailure p+ = T.uconstUse pexitFailure p sexitFailure+sexitFailure+ = T.uconstDef p aexitFailure+ (\ p -> T.fromIO T.fromId p System.Exit.exitFailure)+ gexitSuccess :: T.RefSrcPos -> T.RefExp -> T.R (IO a)--gexitSuccess pexitSuccess p = T.uconstUse pexitSuccess p sexitSuccess--sexitSuccess =- T.uconstDef T.mkRoot aexitSuccess- (\ p -> (T.fromIO T.fromId) p System.Exit.exitSuccess)--tSystem_Exit = T.mkModule "System.Exit" "System/Exit.hs" Prelude.False--aexitWith = T.mkVariable tSystem_Exit 100001 110027 3 1 "exitWith" Prelude.False--aexitFailure =- T.mkVariable tSystem_Exit 120001 130018 3 0 "exitFailure" Prelude.False--aexitSuccess =- T.mkVariable tSystem_Exit 140001 150018 3 0 "exitSuccess" Prelude.False+gexitSuccess pexitSuccess p+ = T.uconstUse pexitSuccess p sexitSuccess+sexitSuccess+ = T.uconstDef p aexitSuccess+ (\ p -> T.fromIO T.fromId p System.Exit.exitSuccess)+aexitFailure+ = T.mkVariable tExit 120001 130015 3 (0)+ "exitFailure"+ Prelude.False+aexitSuccess+ = T.mkVariable tExit 140001 150015 3 (0)+ "exitSuccess"+ Prelude.False+aexitWith+ = T.mkVariable tExit 100001 110012 3 (1) "exitWith"+ Prelude.False+p = T.mkRoot+tExit+ = T.mkModule "System.Exit" "System/Exit.hs"+ Prelude.False
Hat/System/IO.hs view
@@ -1,131 +1,166 @@ module Hat.System.IO- (IO(),gfixIO,afixIO,hfixIO,FilePath(),Handle(),gstdin,gstdout,gstderr- ,gwithFile,awithFile,hwithFile,gopenFile,aopenFile,hopenFile,IOMode(ReadMode- ,WriteMode,AppendMode,ReadWriteMode),aReadMode,aWriteMode,aAppendMode- ,aReadWriteMode,ghClose,ahClose,hhClose,greadFile,areadFile,hreadFile- ,gwriteFile,awriteFile,hwriteFile,gappendFile,aappendFile,happendFile- ,ghFileSize,ahFileSize,hhFileSize,ghSetFileSize,ahSetFileSize,hhSetFileSize- ,ghIsEOF,ahIsEOF,hhIsEOF,gisEOF,BufferMode(NoBuffering,LineBuffering- ,BlockBuffering),aNoBuffering,aLineBuffering,aBlockBuffering- ,ghSetBuffering,ahSetBuffering,hhSetBuffering,ghGetBuffering,ahGetBuffering- ,hhGetBuffering,ghFlush,ahFlush,hhFlush,ghGetPosn,ahGetPosn,hhGetPosn- ,ghSetPosn,ahSetPosn,hhSetPosn,HandlePosn(),ghSeek,ahSeek,hhSeek- ,SeekMode(AbsoluteSeek,RelativeSeek,SeekFromEnd),aAbsoluteSeek,aRelativeSeek- ,aSeekFromEnd,ghTell,ahTell,hhTell,ghIsOpen,ahIsOpen,hhIsOpen,ghIsClosed- ,ahIsClosed,hhIsClosed,ghIsReadable,ahIsReadable,hhIsReadable,ghIsWritable- ,ahIsWritable,hhIsWritable,ghIsSeekable,ahIsSeekable,hhIsSeekable- ,ghIsTerminalDevice,ahIsTerminalDevice,hhIsTerminalDevice,ghSetEcho- ,ahSetEcho,hhSetEcho,ghGetEcho,ahGetEcho,hhGetEcho,ghShow,ahShow,hhShow- ,ghWaitForInput,ahWaitForInput,hhWaitForInput,ghReady,ahReady,hhReady- ,ghGetChar,ahGetChar,hhGetChar,ghGetLine,ahGetLine,hhGetLine,ghLookAhead- ,ahLookAhead,hhLookAhead,ghGetContents,ahGetContents,hhGetContents,ghPutChar- ,ahPutChar,hhPutChar,ghPutStr,ahPutStr,hhPutStr,ghPutStrLn,ahPutStrLn- ,hhPutStrLn,ghPrint,ahPrint,hhPrint,ginteract,ainteract,hinteract,gputChar- ,aputChar,hputChar,gputStr,aputStr,hputStr,gputStrLn,aputStrLn,hputStrLn- ,gprint,aprint,hprint,ggetChar,ggetLine,ggetContents,greadIO,areadIO,hreadIO- ,greadLn) 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.IO -import Hat.PreludeBuiltinTypes -import Hat.IOBuiltin -import qualified System.IO --gfixIO :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Fun a (IO a)) (IO a))-+ (IO, gfixIO, afixIO, hfixIO, FilePath, Handle,+ gstdin, gstdout, gstderr, gwithFile, awithFile,+ hwithFile, gopenFile, aopenFile, hopenFile,+ IOMode(ReadMode, WriteMode, AppendMode,+ ReadWriteMode),+ aReadMode, aWriteMode, aAppendMode, aReadWriteMode,+ ghClose, ahClose, hhClose, greadFile, areadFile,+ hreadFile, gwriteFile, awriteFile, hwriteFile,+ gappendFile, aappendFile, happendFile, ghFileSize,+ ahFileSize, hhFileSize, ghSetFileSize, ahSetFileSize,+ hhSetFileSize, ghIsEOF, ahIsEOF, hhIsEOF, gisEOF,+ BufferMode(NoBuffering, LineBuffering,+ BlockBuffering),+ aNoBuffering, aLineBuffering, aBlockBuffering,+ ghSetBuffering, ahSetBuffering, hhSetBuffering,+ ghGetBuffering, ahGetBuffering, hhGetBuffering,+ ghFlush, ahFlush, hhFlush, ghGetPosn, ahGetPosn,+ hhGetPosn, ghSetPosn, ahSetPosn, hhSetPosn,+ HandlePosn, ghSeek, ahSeek, hhSeek,+ SeekMode(AbsoluteSeek, RelativeSeek, SeekFromEnd),+ aAbsoluteSeek, aRelativeSeek, aSeekFromEnd, ghTell,+ ahTell, hhTell, ghIsOpen, ahIsOpen, hhIsOpen,+ ghIsClosed, ahIsClosed, hhIsClosed, ghIsReadable,+ ahIsReadable, hhIsReadable, ghIsWritable,+ ahIsWritable, hhIsWritable, ghIsSeekable,+ ahIsSeekable, hhIsSeekable, ghIsTerminalDevice,+ ahIsTerminalDevice, hhIsTerminalDevice, ghSetEcho,+ ahSetEcho, hhSetEcho, ghGetEcho, ahGetEcho,+ hhGetEcho, ghShow, ahShow, hhShow, ghWaitForInput,+ ahWaitForInput, hhWaitForInput, ghReady, ahReady,+ hhReady, ghGetChar, ahGetChar, hhGetChar, ghGetLine,+ ahGetLine, hhGetLine, ghLookAhead, ahLookAhead,+ hhLookAhead, ghGetContents, ahGetContents,+ hhGetContents, ghPutChar, ahPutChar, hhPutChar,+ ghPutStr, ahPutStr, hhPutStr, ghPutStrLn, ahPutStrLn,+ hhPutStrLn, ghPrint, ahPrint, hhPrint, ginteract,+ ainteract, hinteract, gputChar, aputChar, hputChar,+ gputStr, aputStr, hputStr, gputStrLn, aputStrLn,+ hputStrLn, gprint, aprint, hprint, ggetChar,+ ggetLine, ggetContents, greadIO, areadIO, hreadIO,+ greadLn)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.IO+import Hat.PreludeBuiltinTypes as T+import Hat.IOBuiltin as T+import qualified System.IO+ +gfixIO ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun (T.Fun a (IO a)) (IO a)) gfixIO pfixIO p = T.ufun1 afixIO pfixIO p hfixIO--hfixIO z1fixIO kfixIO =- (T.fromIO T.fromId) kfixIO- (System.IO.fixIO ((toFun T.fromId (T.toIO T.toId)) kfixIO z1fixIO))-+hfixIO z1fixIO kfixIO+ = T.fromIO T.fromId kfixIO+ (System.IO.fixIO+ ((T.toFun T.fromId (T.toIO T.toId)) kfixIO z1fixIO))+ gwithFile ::- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun String (T.Fun IOMode (T.Fun (T.Fun Handle (IO r)) (IO r))))--gwithFile pwithFile p = T.ufun3 awithFile pwithFile p hwithFile--hwithFile z1withFile z2withFile z3withFile kwithFile =- (T.fromIO T.fromId) kwithFile- (System.IO.withFile (toString kwithFile z1withFile)- (toIOMode kwithFile z2withFile)- ((toFun fromHandle (T.toIO T.toId)) kwithFile z3withFile))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun String+ (T.Fun IOMode (T.Fun (T.Fun Handle (IO r)) (IO r))))+gwithFile pwithFile p+ = T.ufun3 awithFile pwithFile p hwithFile+hwithFile z1withFile z2withFile z3withFile kwithFile+ = T.fromIO T.fromId kwithFile+ (System.IO.withFile (T.toString kwithFile z1withFile)+ (T.toIOMode kwithFile z2withFile)+ ((T.toFun T.fromHandle (T.toIO T.toId)) kwithFile+ z3withFile))+ ghSetFileSize ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun Integer (IO T.Tuple0)))--ghSetFileSize phSetFileSize p =- T.ufun2 ahSetFileSize phSetFileSize p hhSetFileSize--hhSetFileSize z1hSetFileSize z2hSetFileSize khSetFileSize =- (T.fromIO T.fromTuple0) khSetFileSize- (System.IO.hSetFileSize (toHandle khSetFileSize z1hSetFileSize)- (T.toInteger khSetFileSize z2hSetFileSize))--ghTell :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Integer))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Handle (T.Fun Integer (IO T.Tuple0)))+ghSetFileSize phSetFileSize p+ = T.ufun2 ahSetFileSize phSetFileSize p hhSetFileSize+hhSetFileSize z1hSetFileSize z2hSetFileSize+ khSetFileSize+ = T.fromIO T.fromTuple0 khSetFileSize+ (System.IO.hSetFileSize+ (T.toHandle khSetFileSize z1hSetFileSize)+ (T.toInteger khSetFileSize z2hSetFileSize))+ +ghTell ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Integer)) ghTell phTell p = T.ufun1 ahTell phTell p hhTell--hhTell z1hTell khTell =- (T.fromIO T.fromInteger) khTell (System.IO.hTell (toHandle khTell z1hTell))--ghIsTerminalDevice :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--ghIsTerminalDevice phIsTerminalDevice p =- T.ufun1 ahIsTerminalDevice phIsTerminalDevice p hhIsTerminalDevice--hhIsTerminalDevice z1hIsTerminalDevice khIsTerminalDevice =- (T.fromIO fromBool) khIsTerminalDevice- (System.IO.hIsTerminalDevice- (toHandle khIsTerminalDevice z1hIsTerminalDevice))-+hhTell z1hTell khTell+ = T.fromIO T.fromInteger khTell+ (System.IO.hTell (T.toHandle khTell z1hTell))+ +ghIsTerminalDevice ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ghIsTerminalDevice phIsTerminalDevice p+ = T.ufun1 ahIsTerminalDevice phIsTerminalDevice p+ hhIsTerminalDevice+hhIsTerminalDevice z1hIsTerminalDevice+ khIsTerminalDevice+ = T.fromIO T.fromBool khIsTerminalDevice+ (System.IO.hIsTerminalDevice+ (T.toHandle khIsTerminalDevice z1hIsTerminalDevice))+ ghSetEcho ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (T.Fun Bool (IO T.Tuple0)))--ghSetEcho phSetEcho p = T.ufun2 ahSetEcho phSetEcho p hhSetEcho--hhSetEcho z1hSetEcho z2hSetEcho khSetEcho =- (T.fromIO T.fromTuple0) khSetEcho- (System.IO.hSetEcho (toHandle khSetEcho z1hSetEcho)- (toBool khSetEcho z2hSetEcho))--ghGetEcho :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO Bool))--ghGetEcho phGetEcho p = T.ufun1 ahGetEcho phGetEcho p hhGetEcho--hhGetEcho z1hGetEcho khGetEcho =- (T.fromIO fromBool) khGetEcho- (System.IO.hGetEcho (toHandle khGetEcho z1hGetEcho))--ghShow :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Handle (IO String))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun Handle (T.Fun Bool (IO T.Tuple0)))+ghSetEcho phSetEcho p+ = T.ufun2 ahSetEcho phSetEcho p hhSetEcho+hhSetEcho z1hSetEcho z2hSetEcho khSetEcho+ = T.fromIO T.fromTuple0 khSetEcho+ (System.IO.hSetEcho (T.toHandle khSetEcho z1hSetEcho)+ (T.toBool khSetEcho z2hSetEcho))+ +ghGetEcho ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO Bool))+ghGetEcho phGetEcho p+ = T.ufun1 ahGetEcho phGetEcho p hhGetEcho+hhGetEcho z1hGetEcho khGetEcho+ = T.fromIO T.fromBool khGetEcho+ (System.IO.hGetEcho+ (T.toHandle khGetEcho z1hGetEcho))+ +ghShow ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Handle (IO String)) ghShow phShow p = T.ufun1 ahShow phShow p hhShow--hhShow z1hShow khShow =- (T.fromIO fromString) khShow (System.IO.hShow (toHandle khShow z1hShow))--tSystem_IO = T.mkModule "System.IO" "System/IO.hs" Prelude.False--afixIO = T.mkVariable tSystem_IO 200001 210028 3 1 "fixIO" Prelude.False--awithFile = T.mkVariable tSystem_IO 230001 240056 3 3 "withFile" Prelude.False--ahSetFileSize =- T.mkVariable tSystem_IO 260001 270041 3 2 "hSetFileSize" Prelude.False--ahTell = T.mkVariable tSystem_IO 290001 300023 3 1 "hTell" Prelude.False--ahIsTerminalDevice =- T.mkVariable tSystem_IO 320001 330035 3 1 "hIsTerminalDevice" Prelude.False--ahSetEcho = T.mkVariable tSystem_IO 350001 360034 3 2 "hSetEcho" Prelude.False--ahGetEcho = T.mkVariable tSystem_IO 380001 390026 3 1 "hGetEcho" Prelude.False--ahShow = T.mkVariable tSystem_IO 410001 420023 3 1 "hShow" Prelude.False+hhShow z1hShow khShow+ = T.fromIO T.fromString khShow+ (System.IO.hShow (T.toHandle khShow z1hShow))+afixIO+ = T.mkVariable tIO 200001 210010 3 (1) "fixIO"+ Prelude.False+ahGetEcho+ = T.mkVariable tIO 380001 390013 3 (1) "hGetEcho"+ Prelude.False+ahIsTerminalDevice+ = T.mkVariable tIO 320001 330022 3 (1)+ "hIsTerminalDevice"+ Prelude.False+ahSetEcho+ = T.mkVariable tIO 350001 360013 3 (2) "hSetEcho"+ Prelude.False+ahSetFileSize+ = T.mkVariable tIO 260001 270017 3 (2) "hSetFileSize"+ Prelude.False+ahShow+ = T.mkVariable tIO 410001 420010 3 (1) "hShow"+ Prelude.False+ahTell+ = T.mkVariable tIO 290001 300010 3 (1) "hTell"+ Prelude.False+awithFile+ = T.mkVariable tIO 230001 240013 3 (3) "withFile"+ Prelude.False+p = T.mkRoot+tIO+ = T.mkModule "System.IO" "System/IO.hs" Prelude.False
Hat/SystemBuiltinTypes.hs view
@@ -1,164 +1,168 @@-module Hat.SystemBuiltinTypes (ExitCode(..),aExitSuccess,aExitFailure) 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 --data ExitCode = ExitSuccess | ExitFailure (T.R Int)--instance T.WrapVal (ExitCode)- where- - wrapVal pwrapVal (kwrapVal@ExitSuccess) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aExitSuccess)- wrapVal pwrapVal (kwrapVal@(ExitFailure (T.R _ z1wrapVal))) p =- T.R kwrapVal (T.mkValueApp1 p pwrapVal aExitFailure z1wrapVal)- --instance Eq (ExitCode)- where- - (!==) (%==) p =- T.ufun2 (+&=$^=&=$@==) (%==) p (*==)- where- - (*==) (T.R ExitSuccess _) (T.R ExitSuccess _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R (ExitFailure fy1) _) (T.R (ExitFailure fy2) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy1 fy2- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (ExitCode)- where- - gcompare pcompare p =- T.ufun2 a4v31v4v33compare pcompare p hcompare- where- - hcompare (T.R (ExitFailure fy3) _) (T.R (ExitFailure fy4) _) p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p) fy3 fy4- hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a4v31v4v33localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a4v31v4v33localFromEnum- - hlocalFromEnum (T.R (ExitSuccess) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R (ExitFailure _) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum _ p = T.fatal p- - - --instance Read (ExitCode)- where- - greadsPrec preadsPrec p =- T.ufun1 a4v36v4v39readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p ExitSuccess aExitSuccess))- (T.fromLitString T.mkNoSrcPos p "ExitSuccess") p)) p))- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!> p) fy1- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.pa0 ExitFailure T.cn1 T.mkNoSrcPos p aExitFailure))- (T.fromLitString T.mkNoSrcPos p "ExitFailure") p))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.greadsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)))) p))- - --instance Show (ExitCode)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a4v42v4v45showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (ExitSuccess) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ExitSuccess")- hshowsPrec fy1 (T.R (ExitFailure fy2) _) p =- T.uwrapForward p- (Hat.Prelude.hshowParen- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!> p) fy1- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ExitFailure "))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)) fy2)) p)- hshowsPrec _ _ p = T.fatal p- - --tSystemBuiltinTypes =- T.mkModule "SystemBuiltinTypes" "SystemBuiltinTypes.hs" Prelude.True--aExitSuccess = T.mkConstructor tSystemBuiltinTypes 30017 30027 3 0 "ExitSuccess"--aExitFailure = T.mkConstructor tSystemBuiltinTypes 30031 30041 3 1 "ExitFailure"--(+&=$^=&=$@==) =- T.mkVariable tSystemBuiltinTypes 40027 40028 3 2 "==" Prelude.False--a4v31v4v33compare =- T.mkVariable tSystemBuiltinTypes 40031 40033 3 2 "compare" Prelude.False--a4v36v4v39readsPrec =- T.mkVariable tSystemBuiltinTypes 40036 40039 3 1 "readsPrec" Prelude.False--a4v42v4v45showsPrec =- T.mkVariable tSystemBuiltinTypes 40042 40045 3 2 "showsPrec" Prelude.False--a4v31v4v33localFromEnum =- T.mkVariable tSystemBuiltinTypes 40031 40033 3 1 "localFromEnum" Prelude.True--p3v17v3v27 = T.mkSrcPos tSystemBuiltinTypes 30017 30027--p3v31v3v41 = T.mkSrcPos tSystemBuiltinTypes 30031 30041--p4v27v4v28 = T.mkSrcPos tSystemBuiltinTypes 40027 40028--p4v31v4v33 = T.mkSrcPos tSystemBuiltinTypes 40031 40033--p4v36v4v39 = T.mkSrcPos tSystemBuiltinTypes 40036 40039--p4v42v4v45 = T.mkSrcPos tSystemBuiltinTypes 40042 40045+module Hat.SystemBuiltinTypes+ (ExitCode(..), aExitFailure, aExitSuccess,+ (+&=$^=&=$@==))+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+ +data ExitCode = ExitSuccess+ | ExitFailure (T.R Int)+ +instance T.WrapVal ExitCode where+ wrapVal pwrapVal kwrapVal@ExitSuccess p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aExitSuccess)+ wrapVal pwrapVal+ kwrapVal@(ExitFailure (T.R _ z1wrapVal)) p+ = T.R kwrapVal+ (T.mkValueApp1 p pwrapVal aExitFailure z1wrapVal)+ +instance Eq ExitCode where+ (%==) !== p = T.ufun2 (+&=$^=&=$@==) (%==) p (*==)+ where (T.R ExitSuccess _ *== T.R ExitSuccess _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R (ExitFailure fy1) _ *== T.R (ExitFailure fy2) _)+ p+ = T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy1+ fy2)+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue)+ p)+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord ExitCode where+ gcompare pcompare p+ = T.ufun2 c4v31v4v33compare pcompare p hcompare+ where hcompare (T.R (ExitFailure fy3) _)+ (T.R (ExitFailure fy4) _) p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p) fy3+ fy4+ hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c4v31v4v33localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c4v31v4v33localFromEnum+ hlocalFromEnum (T.R ExitSuccess _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R (ExitFailure _) _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Read ExitCode where+ greadsPrec preadsPrec p+ = T.ufun1 c4v36v4v39readsPrec preadsPrec p hreadsPrec+ where hreadsPrec fy1 p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p ExitSuccess+ aExitSuccess))+ (T.fromLitString T.mkNoSrcPos p "ExitSuccess")+ p))+ p))+ (T.uwrapForward p+ (hreadParen+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fy1+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.pa0 ExitFailure T.cn1 T.mkNoSrcPos p+ aExitFailure))+ (T.fromLitString T.mkNoSrcPos p+ "ExitFailure")+ p))+ (T.uap1 T.mkNoSrcPos p+ (greadsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (10)))))+ p))+ +instance Show ExitCode where+ gshowsPrec pshowsPrec p+ = T.ufun2 c4v42v4v45showsPrec pshowsPrec p hshowsPrec+ where hshowsPrec fy1 (T.R ExitSuccess _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "ExitSuccess")+ hshowsPrec fy1 (T.R (ExitFailure fy2) _) p+ = T.uwrapForward p+ (hshowParen+ (T.uap2 T.mkNoSrcPos p ((!>) T.mkNoSrcPos p) fy1+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "ExitFailure "))+ (T.uap2 T.mkNoSrcPos p (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10)))+ fy2))+ p)+ hshowsPrec _ _ p = T.fatal p+aExitFailure+ = T.mkConstructor tSystemBuiltinTypes 30031 30041 3+ (1)+ "ExitFailure"+aExitSuccess+ = T.mkConstructor tSystemBuiltinTypes 30017 30027 3+ (0)+ "ExitSuccess"+(+&=$^=&=$@==)+ = T.mkVariable tSystemBuiltinTypes 40027 40028 3 (-1)+ "=="+ Prelude.False+c4v31v4v33localFromEnum+ = T.mkVariable tSystemBuiltinTypes 40031 40033 3 (1)+ "localFromEnum"+ Prelude.True+c4v31v4v33compare+ = T.mkVariable tSystemBuiltinTypes 40031 40033 3 (-1)+ "compare"+ Prelude.False+c4v36v4v39readsPrec+ = T.mkVariable tSystemBuiltinTypes 40036 40039 3 (-1)+ "readsPrec"+ Prelude.False+c4v42v4v45showsPrec+ = T.mkVariable tSystemBuiltinTypes 40042 40045 3 (-1)+ "showsPrec"+ Prelude.False+p = T.mkRoot+tSystemBuiltinTypes+ = T.mkModule "SystemBuiltinTypes"+ "SystemBuiltinTypes.hs"+ Prelude.False
Hat/Time.hs view
@@ -1,224 +1,278 @@ module Hat.Time- (ClockTime(),Month(January,February,March,April,May,June,July,August,September- ,October,November,December),aJanuary,aFebruary,aMarch,aApril,aMay,aJune- ,aJuly,aAugust,aSeptember,aOctober,aNovember,aDecember,Day(Sunday,Monday- ,Tuesday,Wednesday,Thursday,Friday,Saturday),aSunday,aMonday,aTuesday- ,aWednesday,aThursday,aFriday,aSaturday,CalendarTime(CalendarTime,bctYear- ,bctMonth,bctDay,bctHour,bctMin,bctSec,bctPicosec,bctWDay,bctYDay- ,bctTZName,bctTZ,bctIsDST),gctYear,gctMonth,gctDay,gctHour,gctMin,gctSec- ,gctPicosec,gctWDay,gctYDay,gctTZName,gctTZ,gctIsDST,hctYear,hctMonth,hctDay- ,hctHour,hctMin,hctSec,hctPicosec,hctWDay,hctYDay,hctTZName,hctTZ,hctIsDST- ,actYear,actMonth,actDay,actHour,actMin,actSec,actPicosec,actWDay,actYDay- ,actTZName,actTZ,actIsDST,aCalendarTime,TimeDiff(TimeDiff,btdYear,btdMonth- ,btdDay,btdHour,btdMin,btdSec,btdPicosec),gtdYear,gtdMonth,gtdDay,gtdHour- ,gtdMin,gtdSec,gtdPicosec,htdYear,htdMonth,htdDay,htdHour,htdMin,htdSec- ,htdPicosec,atdYear,atdMonth,atdDay,atdHour,atdMin,atdSec,atdPicosec- ,aTimeDiff,ggetClockTime,gaddToClockTime,aaddToClockTime,haddToClockTime- ,gdiffClockTimes,adiffClockTimes,hdiffClockTimes,gtoCalendarTime- ,atoCalendarTime,htoCalendarTime,gtoUTCTime,atoUTCTime,htoUTCTime- ,gtoClockTime,atoClockTime,htoClockTime,gcalendarTimeToString- ,acalendarTimeToString,hcalendarTimeToString,gformatCalendarTime- ,aformatCalendarTime,hformatCalendarTime) 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.Ix (Ix())-import Hat.Locale (TimeLocale(TimeLocale,bwDays,bmonths,bamPm,bdateTimeFmt- ,bdateFmt,btimeFmt,btime12Fmt),gwDays,gmonths,gamPm,gdateTimeFmt,gdateFmt- ,gtimeFmt,gtime12Fmt,hwDays,hmonths,hamPm,hdateTimeFmt,hdateFmt,htimeFmt- ,htime12Fmt,awDays,amonths,aamPm,adateTimeFmt,adateFmt,atimeFmt,atime12Fmt- ,aTimeLocale,gdefaultTimeLocale)-import Hat.Char (gintToDigit,aintToDigit,hintToDigit)-import Hat.PreludeBuiltinTypes -import Hat.TimeBuiltinTypes -import Hat.TimeBuiltin -import qualified System.Time as Time --instance Ord (ClockTime)- where- - gcompare pcompare p = T.uconstUse pcompare p scompare- - scompare =- T.uconstDef T.mkRoot a28v3v28v32compare- (\ p -> gprimClockTimeCompare T.mkNoSrcPos p)- - (!<=) (%<=) p = T.uconstUse (%<=) p (|<=)- - (|<=) =- T.uconstDef T.mkRoot (+$>=&=$>=$+<=)- (\ p -> gprimClockTimeLeEq T.mkNoSrcPos p)- --instance Eq (ClockTime)- where- - (!==) (%==) p = T.uconstUse (%==) p (|==)- - (|==) =- T.uconstDef T.mkRoot (+%$=&=%$=$+==)- (\ p -> gprimClockTimeEqEq T.mkNoSrcPos p)- -+ (ClockTime,+ Month(January, February, March, April, May, June,+ July, August, September, October, November,+ December),+ aJanuary, aFebruary, aMarch, aApril, aMay, aJune,+ aJuly, aAugust, aSeptember, aOctober, aNovember,+ aDecember,+ Day(Sunday, Monday, Tuesday, Wednesday, Thursday,+ Friday, Saturday),+ aSunday, aMonday, aTuesday, aWednesday, aThursday,+ aFriday, aSaturday,+ CalendarTime(CalendarTime, bctYear, bctMonth, bctDay,+ bctHour, bctMin, bctSec, bctPicosec, bctWDay,+ bctYDay, bctTZName, bctTZ, bctIsDST),+ gctYear, gctMonth, gctDay, gctHour, gctMin, gctSec,+ gctPicosec, gctWDay, gctYDay, gctTZName, gctTZ,+ gctIsDST, hctYear, hctMonth, hctDay, hctHour, hctMin,+ hctSec, hctPicosec, hctWDay, hctYDay, hctTZName,+ hctTZ, hctIsDST, actYear, actMonth, actDay, actHour,+ actMin, actSec, actPicosec, actWDay, actYDay,+ actTZName, actTZ, actIsDST, aCalendarTime,+ TimeDiff(TimeDiff, btdYear, btdMonth, btdDay,+ btdHour, btdMin, btdSec, btdPicosec),+ gtdYear, gtdMonth, gtdDay, gtdHour, gtdMin, gtdSec,+ gtdPicosec, htdYear, htdMonth, htdDay, htdHour,+ htdMin, htdSec, htdPicosec, atdYear, atdMonth,+ atdDay, atdHour, atdMin, atdSec, atdPicosec,+ aTimeDiff, ggetClockTime, gaddToClockTime,+ aaddToClockTime, haddToClockTime, gdiffClockTimes,+ adiffClockTimes, hdiffClockTimes, gtoCalendarTime,+ atoCalendarTime, htoCalendarTime, gtoUTCTime,+ atoUTCTime, htoUTCTime, gtoClockTime, atoClockTime,+ htoClockTime, gcalendarTimeToString,+ acalendarTimeToString, hcalendarTimeToString,+ gformatCalendarTime, aformatCalendarTime,+ hformatCalendarTime)+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.Ix (Ix)+import Hat.Locale+ (TimeLocale(TimeLocale, bwDays, bmonths, bamPm,+ bdateTimeFmt, bdateFmt, btimeFmt, btime12Fmt),+ gwDays, gmonths, gamPm, gdateTimeFmt, gdateFmt,+ gtimeFmt, gtime12Fmt, hwDays, hmonths, hamPm,+ hdateTimeFmt, hdateFmt, htimeFmt, htime12Fmt, awDays,+ amonths, aamPm, adateTimeFmt, adateFmt, atimeFmt,+ atime12Fmt, aTimeLocale, gdefaultTimeLocale)+import Hat.Char+ (gintToDigit, aintToDigit, hintToDigit)+import Hat.PreludeBuiltinTypes as T+import Hat.TimeBuiltinTypes+import Hat.TimeBuiltin as T+import qualified System.Time as Time+ +instance Ord ClockTime where+ gcompare pcompare p = T.uconstUse pcompare p scompare+ scompare+ = T.uconstDef p c28v3v28v32compare+ (\ p -> gprimClockTimeCompare T.mkNoSrcPos p)+ (%<=) !<= p = T.uconstUse (%<=) p (|<=)+ (|<=)+ = T.uconstDef p (+$>=%=$>=$+<=)+ (\ p -> gprimClockTimeLeEq T.mkNoSrcPos p)+ +instance Eq ClockTime where+ (%==) !== p = T.uconstUse (%==) p (|==)+ (|==)+ = T.uconstDef p (+%$=%=%$=$+==)+ (\ p -> gprimClockTimeEqEq T.mkNoSrcPos p)+ gprimClockTimeCompare ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun ClockTime (T.Fun ClockTime Ordering))--gprimClockTimeCompare pprimClockTimeCompare p =- T.ufun2 aprimClockTimeCompare pprimClockTimeCompare p hprimClockTimeCompare--hprimClockTimeCompare z1primClockTimeCompare z2primClockTimeCompare- kprimClockTimeCompare =- fromOrdering kprimClockTimeCompare- (Prelude.compare (toClockTime kprimClockTimeCompare z1primClockTimeCompare)- (toClockTime kprimClockTimeCompare z2primClockTimeCompare))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun ClockTime (T.Fun ClockTime Ordering))+gprimClockTimeCompare pprimClockTimeCompare p+ = T.ufun2 aprimClockTimeCompare pprimClockTimeCompare+ p+ hprimClockTimeCompare+hprimClockTimeCompare z1primClockTimeCompare+ z2primClockTimeCompare kprimClockTimeCompare+ = T.fromOrdering kprimClockTimeCompare+ (Prelude.compare+ (T.toClockTime kprimClockTimeCompare+ z1primClockTimeCompare)+ (T.toClockTime kprimClockTimeCompare+ z2primClockTimeCompare))+ gprimClockTimeLeEq ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun ClockTime (T.Fun ClockTime Bool))--gprimClockTimeLeEq pprimClockTimeLeEq p =- T.ufun2 aprimClockTimeLeEq pprimClockTimeLeEq p hprimClockTimeLeEq--hprimClockTimeLeEq z1primClockTimeLeEq z2primClockTimeLeEq kprimClockTimeLeEq =- fromBool kprimClockTimeLeEq- ((toClockTime kprimClockTimeLeEq z1primClockTimeLeEq)- Prelude.<=- (toClockTime kprimClockTimeLeEq z2primClockTimeLeEq))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun ClockTime (T.Fun ClockTime Bool))+gprimClockTimeLeEq pprimClockTimeLeEq p+ = T.ufun2 aprimClockTimeLeEq pprimClockTimeLeEq p+ hprimClockTimeLeEq+hprimClockTimeLeEq z1primClockTimeLeEq+ z2primClockTimeLeEq kprimClockTimeLeEq+ = T.fromBool kprimClockTimeLeEq+ ((Prelude.<=)+ (T.toClockTime kprimClockTimeLeEq+ z1primClockTimeLeEq)+ (T.toClockTime kprimClockTimeLeEq+ z2primClockTimeLeEq))+ gprimClockTimeEqEq ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun ClockTime (T.Fun ClockTime Bool))--gprimClockTimeEqEq pprimClockTimeEqEq p =- T.ufun2 aprimClockTimeEqEq pprimClockTimeEqEq p hprimClockTimeEqEq--hprimClockTimeEqEq z1primClockTimeEqEq z2primClockTimeEqEq kprimClockTimeEqEq =- fromBool kprimClockTimeEqEq- ((toClockTime kprimClockTimeEqEq z1primClockTimeEqEq)- Prelude.==- (toClockTime kprimClockTimeEqEq z2primClockTimeEqEq))--ggetClockTime :: T.RefSrcPos -> T.RefExp -> T.R (IO ClockTime)--ggetClockTime pgetClockTime p = T.uconstUse pgetClockTime p sgetClockTime--sgetClockTime =- T.uconstDef T.mkRoot agetClockTime- (\ p -> (T.fromIO fromClockTime) p Time.getClockTime)-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun ClockTime (T.Fun ClockTime Bool))+gprimClockTimeEqEq pprimClockTimeEqEq p+ = T.ufun2 aprimClockTimeEqEq pprimClockTimeEqEq p+ hprimClockTimeEqEq+hprimClockTimeEqEq z1primClockTimeEqEq+ z2primClockTimeEqEq kprimClockTimeEqEq+ = T.fromBool kprimClockTimeEqEq+ ((Prelude.==)+ (T.toClockTime kprimClockTimeEqEq+ z1primClockTimeEqEq)+ (T.toClockTime kprimClockTimeEqEq+ z2primClockTimeEqEq))+ +ggetClockTime ::+ T.RefSrcPos -> T.RefExp -> T.R (IO ClockTime)+ggetClockTime pgetClockTime p+ = T.uconstUse pgetClockTime p sgetClockTime+sgetClockTime+ = T.uconstDef p agetClockTime+ (\ p -> T.fromIO T.fromClockTime p Time.getClockTime)+ gaddToClockTime ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun TimeDiff (T.Fun ClockTime ClockTime))--gaddToClockTime paddToClockTime p =- T.ufun2 aaddToClockTime paddToClockTime p haddToClockTime--haddToClockTime z1addToClockTime z2addToClockTime kaddToClockTime =- fromClockTime kaddToClockTime- (Time.addToClockTime (toTimeDiff kaddToClockTime z1addToClockTime)- (toClockTime kaddToClockTime z2addToClockTime))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun TimeDiff (T.Fun ClockTime ClockTime))+gaddToClockTime paddToClockTime p+ = T.ufun2 aaddToClockTime paddToClockTime p+ haddToClockTime+haddToClockTime z1addToClockTime z2addToClockTime+ kaddToClockTime+ = T.fromClockTime kaddToClockTime+ (Time.addToClockTime+ (T.toTimeDiff kaddToClockTime z1addToClockTime)+ (T.toClockTime kaddToClockTime z2addToClockTime))+ gdiffClockTimes ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun ClockTime (T.Fun ClockTime TimeDiff))--gdiffClockTimes pdiffClockTimes p =- T.ufun2 adiffClockTimes pdiffClockTimes p hdiffClockTimes--hdiffClockTimes z1diffClockTimes z2diffClockTimes kdiffClockTimes =- fromTimeDiff kdiffClockTimes- (Time.diffClockTimes (toClockTime kdiffClockTimes z1diffClockTimes)- (toClockTime kdiffClockTimes z2diffClockTimes))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R (T.Fun ClockTime (T.Fun ClockTime TimeDiff))+gdiffClockTimes pdiffClockTimes p+ = T.ufun2 adiffClockTimes pdiffClockTimes p+ hdiffClockTimes+hdiffClockTimes z1diffClockTimes z2diffClockTimes+ kdiffClockTimes+ = T.fromTimeDiff kdiffClockTimes+ (Time.diffClockTimes+ (T.toClockTime kdiffClockTimes z1diffClockTimes)+ (T.toClockTime kdiffClockTimes z2diffClockTimes))+ gtoCalendarTime ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun ClockTime (IO CalendarTime))--gtoCalendarTime ptoCalendarTime p =- T.ufun1 atoCalendarTime ptoCalendarTime p htoCalendarTime--htoCalendarTime z1toCalendarTime ktoCalendarTime =- (T.fromIO fromCalendarTime) ktoCalendarTime- (Time.toCalendarTime (toClockTime ktoCalendarTime z1toCalendarTime))--gtoUTCTime :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun ClockTime CalendarTime)--gtoUTCTime ptoUTCTime p = T.ufun1 atoUTCTime ptoUTCTime p htoUTCTime--htoUTCTime z1toUTCTime ktoUTCTime =- fromCalendarTime ktoUTCTime- (Time.toUTCTime (toClockTime ktoUTCTime z1toUTCTime))--gtoClockTime :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun CalendarTime ClockTime)--gtoClockTime ptoClockTime p = T.ufun1 atoClockTime ptoClockTime p htoClockTime--htoClockTime z1toClockTime ktoClockTime =- fromClockTime ktoClockTime- (Time.toClockTime (toCalendarTime ktoClockTime z1toClockTime))-+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun ClockTime (IO CalendarTime))+gtoCalendarTime ptoCalendarTime p+ = T.ufun1 atoCalendarTime ptoCalendarTime p+ htoCalendarTime+htoCalendarTime z1toCalendarTime ktoCalendarTime+ = T.fromIO T.fromCalendarTime ktoCalendarTime+ (Time.toCalendarTime+ (T.toClockTime ktoCalendarTime z1toCalendarTime))+ +gtoUTCTime ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun ClockTime CalendarTime)+gtoUTCTime ptoUTCTime p+ = T.ufun1 atoUTCTime ptoUTCTime p htoUTCTime+htoUTCTime z1toUTCTime ktoUTCTime+ = T.fromCalendarTime ktoUTCTime+ (Time.toUTCTime+ (T.toClockTime ktoUTCTime z1toUTCTime))+ +gtoClockTime ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun CalendarTime ClockTime)+gtoClockTime ptoClockTime p+ = T.ufun1 atoClockTime ptoClockTime p htoClockTime+htoClockTime z1toClockTime ktoClockTime+ = T.fromClockTime ktoClockTime+ (Time.toClockTime+ (T.toCalendarTime ktoClockTime z1toClockTime))+ gcalendarTimeToString ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun CalendarTime String)--gcalendarTimeToString pcalendarTimeToString p =- T.ufun1 acalendarTimeToString pcalendarTimeToString p hcalendarTimeToString--hcalendarTimeToString z1calendarTimeToString kcalendarTimeToString =- fromString kcalendarTimeToString- (Time.calendarTimeToString- (toCalendarTime kcalendarTimeToString z1calendarTimeToString))-+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun CalendarTime String)+gcalendarTimeToString pcalendarTimeToString p+ = T.ufun1 acalendarTimeToString pcalendarTimeToString+ p+ hcalendarTimeToString+hcalendarTimeToString z1calendarTimeToString+ kcalendarTimeToString+ = T.fromString kcalendarTimeToString+ (Time.calendarTimeToString+ (T.toCalendarTime kcalendarTimeToString+ z1calendarTimeToString))+ gformatCalendarTime ::- T.RefSrcPos ->- T.RefExp ->- T.R (T.Fun TimeLocale (T.Fun String (T.Fun CalendarTime String)))--gformatCalendarTime pformatCalendarTime p =- T.ufun3 aformatCalendarTime pformatCalendarTime p hformatCalendarTime--hformatCalendarTime z1formatCalendarTime z2formatCalendarTime- z3formatCalendarTime kformatCalendarTime =- fromString kformatCalendarTime- (Time.formatCalendarTime- (toTimeLocale kformatCalendarTime z1formatCalendarTime)- (toString kformatCalendarTime z2formatCalendarTime)- (toCalendarTime kformatCalendarTime z3formatCalendarTime))-+ T.RefSrcPos ->+ T.RefExp ->+ T.R+ (T.Fun TimeLocale+ (T.Fun String (T.Fun CalendarTime String)))+gformatCalendarTime pformatCalendarTime p+ = T.ufun3 aformatCalendarTime pformatCalendarTime p+ hformatCalendarTime+hformatCalendarTime z1formatCalendarTime+ z2formatCalendarTime z3formatCalendarTime+ kformatCalendarTime+ = T.fromString kformatCalendarTime+ (Time.formatCalendarTime+ (T.toTimeLocale kformatCalendarTime+ z1formatCalendarTime)+ (T.toString kformatCalendarTime z2formatCalendarTime)+ (T.toCalendarTime kformatCalendarTime+ z3formatCalendarTime))+aaddToClockTime+ = T.mkVariable tTime 460001 470027 3 (2)+ "addToClockTime"+ Prelude.False+acalendarTimeToString+ = T.mkVariable tTime 610001 620027 3 (1)+ "calendarTimeToString"+ Prelude.False+adiffClockTimes+ = T.mkVariable tTime 490001 500027 3 (2)+ "diffClockTimes"+ Prelude.False+aformatCalendarTime+ = T.mkVariable tTime 640001 650022 3 (3)+ "formatCalendarTime"+ Prelude.False+agetClockTime+ = T.mkVariable tTime 430001 440027 3 (0)+ "getClockTime"+ Prelude.False+aprimClockTimeCompare+ = T.mkVariable tTime 340001 350024 3 (2)+ "primClockTimeCompare"+ Prelude.False+aprimClockTimeEqEq+ = T.mkVariable tTime 400001 410021 3 (2)+ "primClockTimeEqEq"+ Prelude.False+aprimClockTimeLeEq+ = T.mkVariable tTime 370001 380021 3 (2)+ "primClockTimeLeEq"+ Prelude.False+atoCalendarTime+ = T.mkVariable tTime 520001 530027 3 (1)+ "toCalendarTime"+ Prelude.False+atoClockTime+ = T.mkVariable tTime 580001 590027 3 (1)+ "toClockTime"+ Prelude.False+atoUTCTime+ = T.mkVariable tTime 550001 560027 3 (1) "toUTCTime"+ Prelude.False+c28v3v28v32compare+ = T.mkVariable tTime 280003 280032 3 (-1) "compare"+ Prelude.False+(+$>=%=$>=$+<=)+ = T.mkVariable tTime 290003 290026 3 (-1) "<="+ Prelude.False+(+%$=%=%$=$+==)+ = T.mkVariable tTime 320003 320026 3 (-1) "=="+ Prelude.False+p = T.mkRoot tTime = T.mkModule "Time" "Time.hs" Prelude.False--aprimClockTimeCompare =- T.mkVariable tTime 340001 350059 3 2 "primClockTimeCompare" Prelude.False--aprimClockTimeLeEq =- T.mkVariable tTime 370001 380052 3 2 "primClockTimeLeEq" Prelude.False--aprimClockTimeEqEq =- T.mkVariable tTime 400001 410052 3 2 "primClockTimeEqEq" Prelude.False--agetClockTime =- T.mkVariable tTime 430001 440030 3 0 "getClockTime" Prelude.False--aaddToClockTime =- T.mkVariable tTime 460001 470066 3 2 "addToClockTime" Prelude.False--adiffClockTimes =- T.mkVariable tTime 490001 500065 3 2 "diffClockTimes" Prelude.False--atoCalendarTime =- T.mkVariable tTime 520001 530046 3 1 "toCalendarTime" Prelude.False--atoUTCTime = T.mkVariable tTime 550001 560056 3 1 "toUTCTime" Prelude.False--atoClockTime = T.mkVariable tTime 580001 590053 3 1 "toClockTime" Prelude.False--acalendarTimeToString =- T.mkVariable tTime 610001 620050 3 1 "calendarTimeToString" Prelude.False--aformatCalendarTime =- T.mkVariable tTime 640001 650069 3 3 "formatCalendarTime" Prelude.False--a28v3v28v32compare =- T.mkVariable tTime 280003 280032 3 0 "compare" Prelude.False--(+$>=&=$>=$+<=) = T.mkVariable tTime 290004 290026 16 0 "<=" Prelude.False--(+%$=&=%$=$+==) = T.mkVariable tTime 320004 320026 16 0 "==" Prelude.False
Hat/TimeBuiltinTypes.hs view
@@ -1,3406 +1,4406 @@ module Hat.TimeBuiltinTypes- (Month(..),Day(..),CalendarTime(..),gctYear,hctYear,gctMonth,hctMonth,gctDay- ,hctDay,gctHour,hctHour,gctMin,hctMin,gctSec,hctSec,gctPicosec,hctPicosec- ,gctWDay,hctWDay,gctYDay,hctYDay,gctTZName,hctTZName,gctTZ,hctTZ,gctIsDST- ,hctIsDST,TimeDiff(..),gtdYear,htdYear,gtdMonth,htdMonth,gtdDay,htdDay- ,gtdHour,htdHour,gtdMin,htdMin,gtdSec,htdSec,gtdPicosec,htdPicosec,aJanuary- ,aFebruary,aMarch,aApril,aMay,aJune,aJuly,aAugust,aSeptember,aOctober- ,aNovember,aDecember,aSunday,aMonday,aTuesday,aWednesday,aThursday,aFriday- ,aSaturday,aCalendarTime,aTimeDiff,actYear,actMonth,actDay,actHour,actMin- ,actSec,actPicosec,actWDay,actYDay,actTZName,actTZ,actIsDST,atdYear,atdMonth- ,atdDay,atdHour,atdMin,atdSec,atdPicosec) 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.Ix (Ix(..))--data Month =- January | February | March | April | May | June | July | August - | September | October | November | December --instance T.WrapVal (Month)- where- - wrapVal pwrapVal (kwrapVal@January) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aJanuary)- wrapVal pwrapVal (kwrapVal@February) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aFebruary)- wrapVal pwrapVal (kwrapVal@March) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aMarch)- wrapVal pwrapVal (kwrapVal@April) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aApril)- wrapVal pwrapVal (kwrapVal@May) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aMay)- wrapVal pwrapVal (kwrapVal@June) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aJune)- wrapVal pwrapVal (kwrapVal@July) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aJuly)- wrapVal pwrapVal (kwrapVal@August) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aAugust)- wrapVal pwrapVal (kwrapVal@September) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aSeptember)- wrapVal pwrapVal (kwrapVal@October) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aOctober)- wrapVal pwrapVal (kwrapVal@November) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aNovember)- wrapVal pwrapVal (kwrapVal@December) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aDecember)- --instance Eq (Month)- where- - (!==) (%==) p =- T.ufun2 (+@=$$=@=$%==) (%==) p (*==)- where- - (*==) (T.R January _) (T.R January _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R February _) (T.R February _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R March _) (T.R March _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R April _) (T.R April _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R May _) (T.R May _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R June _) (T.R June _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R July _) (T.R July _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R August _) (T.R August _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R September _) (T.R September _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R October _) (T.R October _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R November _) (T.R November _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R December _) (T.R December _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (Month)- where- - gcompare pcompare p =- T.ufun2 a8v26v8v28compare pcompare p hcompare- where- - hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a8v26v8v28localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a8v26v8v28localFromEnum- - hlocalFromEnum (T.R (January) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R (February) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R (March) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R (April) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R (May) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R (June) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R (July) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum (T.R (August) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hlocalFromEnum (T.R (September) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hlocalFromEnum (T.R (October) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hlocalFromEnum (T.R (November) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hlocalFromEnum (T.R (December) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hlocalFromEnum _ p = T.fatal p- - - --instance Enum (Month)- where- - gfromEnum pfromEnum p =- T.ufun1 a8v31v8v34fromEnum pfromEnum p hfromEnum- where- - hfromEnum (T.R January _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hfromEnum (T.R February _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hfromEnum (T.R March _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hfromEnum (T.R April _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hfromEnum (T.R May _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hfromEnum (T.R June _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hfromEnum (T.R July _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hfromEnum (T.R August _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hfromEnum (T.R September _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hfromEnum (T.R October _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hfromEnum (T.R November _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hfromEnum (T.R December _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hfromEnum _ p = T.fatal p- - - gtoEnum ptoEnum p =- T.ufun1 a8v31v8v34toEnum ptoEnum p htoEnum- where- - htoEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p January aJanuary- h p = y1toEnum fv8v31v8v34n p- - htoEnum fv8v31v8v34n p = y1toEnum fv8v31v8v34n p- - y1toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p) (y2toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p February aFebruary- h p = y2toEnum fv8v31v8v34n p- - y1toEnum fv8v31v8v34n p = y2toEnum fv8v31v8v34n p- - y2toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p) (y3toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p March aMarch- h p = y3toEnum fv8v31v8v34n p- - y2toEnum fv8v31v8v34n p = y3toEnum fv8v31v8v34n p- - y3toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3))) (h p) (y4toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p April aApril- h p = y4toEnum fv8v31v8v34n p- - y3toEnum fv8v31v8v34n p = y4toEnum fv8v31v8v34n p- - y4toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4))) (h p) (y5toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p May aMay- h p = y5toEnum fv8v31v8v34n p- - y4toEnum fv8v31v8v34n p = y5toEnum fv8v31v8v34n p- - y5toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5))) (h p) (y6toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p June aJune- h p = y6toEnum fv8v31v8v34n p- - y5toEnum fv8v31v8v34n p = y6toEnum fv8v31v8v34n p- - y6toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6))) (h p) (y7toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p July aJuly- h p = y7toEnum fv8v31v8v34n p- - y6toEnum fv8v31v8v34n p = y7toEnum fv8v31v8v34n p- - y7toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7))) (h p) (y8toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p August aAugust- h p = y8toEnum fv8v31v8v34n p- - y7toEnum fv8v31v8v34n p = y8toEnum fv8v31v8v34n p- - y8toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8))) (h p) (y9toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p September aSeptember- h p = y9toEnum fv8v31v8v34n p- - y8toEnum fv8v31v8v34n p = y9toEnum fv8v31v8v34n p- - y9toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9))) (h p) (y10toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p October aOctober- h p = y10toEnum fv8v31v8v34n p- - y9toEnum fv8v31v8v34n p = y10toEnum fv8v31v8v34n p- - y10toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10))) (h p) (y11toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p November aNovember- h p = y11toEnum fv8v31v8v34n p- - y10toEnum fv8v31v8v34n p = y11toEnum fv8v31v8v34n p- - y11toEnum fv8v31v8v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v31v8v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11))) (h p) (y12toEnum fv8v31v8v34n p)- where- - h p = T.con0 T.mkNoSrcPos p December aDecember- h p = y12toEnum fv8v31v8v34n p- - y11toEnum fv8v31v8v34n p = y12toEnum fv8v31v8v34n p- - y12toEnum _ p =- T.uwrapForward p- (Hat.Prelude.herror- (T.fromLitString T.mkNoSrcPos p "toEnum: argument out of bounds") p)- - - genumFrom penumFrom p =- T.ufun1 a8v31v8v34enumFrom penumFrom p henumFrom- where- - henumFrom fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fy1- (T.con0 T.mkNoSrcPos p December aDecember)- - - genumFromThen penumFromThen p =- T.ufun2 a8v31v8v34enumFromThen penumFromThen p henumFromThen- where- - henumFromThen fy1 fy2 p =- T.uap3 T.mkNoSrcPos p (Hat.Prelude.genumFromThenTo T.mkNoSrcPos p) fy1 fy2- (T.ucif p- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>= p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy1)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy2))- (T.con0 T.mkNoSrcPos p December aDecember)- (T.con0 T.mkNoSrcPos p January aJanuary))- - --instance Bounded (Month)- where- - gminBound pminBound p = T.uconstUse pminBound p sminBound- - sminBound =- T.uconstDef T.mkRoot a8v37v8v43minBound- (\ p -> T.con0 T.mkNoSrcPos p January aJanuary)- - gmaxBound pmaxBound p = T.uconstUse pmaxBound p smaxBound- - smaxBound =- T.uconstDef T.mkRoot a8v37v8v43maxBound- (\ p -> T.con0 T.mkNoSrcPos p December aDecember)- --instance Ix (Month)- where- - grange prange p =- T.ufun1 a8v46v8v47range prange p hrange- where- - hrange (T.R (T.Tuple2 fy1 fy2) _) p =- T.uwrapForward p- (Hat.PreludeBasic.hmap (glocalToEnum T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p))) p)- where- - glocalToEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Hat.Prelude.Int Month)- - hlocalToEnum :: (T.R Hat.Prelude.Int) -> T.RefExp -> T.R Month- - glocalToEnum plocalToEnum p =- T.ufun1 a8v46v8v47localToEnum plocalToEnum p hlocalToEnum- - alocalToEnum = a8v46v8v47localToEnum- - hlocalToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p)- (y1localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p January aJanuary- h p = y1localToEnum fv8v46v8v47n p- - hlocalToEnum fv8v46v8v47n p = y1localToEnum fv8v46v8v47n p- - y1localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p)- (y2localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p February aFebruary- h p = y2localToEnum fv8v46v8v47n p- - y1localToEnum fv8v46v8v47n p = y2localToEnum fv8v46v8v47n p- - y2localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p)- (y3localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p March aMarch- h p = y3localToEnum fv8v46v8v47n p- - y2localToEnum fv8v46v8v47n p = y3localToEnum fv8v46v8v47n p- - y3localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3))) (h p)- (y4localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p April aApril- h p = y4localToEnum fv8v46v8v47n p- - y3localToEnum fv8v46v8v47n p = y4localToEnum fv8v46v8v47n p- - y4localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4))) (h p)- (y5localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p May aMay- h p = y5localToEnum fv8v46v8v47n p- - y4localToEnum fv8v46v8v47n p = y5localToEnum fv8v46v8v47n p- - y5localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5))) (h p)- (y6localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p June aJune- h p = y6localToEnum fv8v46v8v47n p- - y5localToEnum fv8v46v8v47n p = y6localToEnum fv8v46v8v47n p- - y6localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6))) (h p)- (y7localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p July aJuly- h p = y7localToEnum fv8v46v8v47n p- - y6localToEnum fv8v46v8v47n p = y7localToEnum fv8v46v8v47n p- - y7localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7))) (h p)- (y8localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p August aAugust- h p = y8localToEnum fv8v46v8v47n p- - y7localToEnum fv8v46v8v47n p = y8localToEnum fv8v46v8v47n p- - y8localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8))) (h p)- (y9localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p September aSeptember- h p = y9localToEnum fv8v46v8v47n p- - y8localToEnum fv8v46v8v47n p = y9localToEnum fv8v46v8v47n p- - y9localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9))) (h p)- (y10localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p October aOctober- h p = y10localToEnum fv8v46v8v47n p- - y9localToEnum fv8v46v8v47n p = y10localToEnum fv8v46v8v47n p- - y10localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10))) (h p)- (y11localToEnum fv8v46v8v47n p)- where- - h p = T.con0 T.mkNoSrcPos p November aNovember- h p = y11localToEnum fv8v46v8v47n p- - y10localToEnum fv8v46v8v47n p = y11localToEnum fv8v46v8v47n p- - y11localToEnum fv8v46v8v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv8v46v8v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11))) (h p) (T.fatal p)- where- - h p = T.con0 T.mkNoSrcPos p December aDecember- h p = T.fatal p- - y11localToEnum _ p = T.fatal p- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Month Hat.Prelude.Int)- - hlocalFromEnum :: (T.R Month) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a8v46v8v47localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a8v46v8v47localFromEnum- - hlocalFromEnum (T.R January _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R February _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R March _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R April _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R May _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R June _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R July _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum (T.R August _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hlocalFromEnum (T.R September _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hlocalFromEnum (T.R October _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hlocalFromEnum (T.R November _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hlocalFromEnum (T.R December _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hlocalFromEnum _ p = T.fatal p- - hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a8v46v8v47index pindex p hindex- where- - hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!- p)- (T.uwrapForward p (hlocalFromEnum fy3 p))- (T.uwrapForward p (hlocalFromEnum fy1 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Month Hat.Prelude.Int)- - hlocalFromEnum :: (T.R Month) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a8v46v8v47localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a8v46v8v47localFromEnum- - hlocalFromEnum (T.R January _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R February _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R March _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R April _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R May _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R June _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R July _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum (T.R August _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hlocalFromEnum (T.R September _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hlocalFromEnum (T.R October _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hlocalFromEnum (T.R November _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hlocalFromEnum (T.R December _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hlocalFromEnum _ p = T.fatal p- - hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a8v46v8v47inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (Hat.Ix.ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p)))- (T.uwrapForward p (hlocalFromEnum fy3 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Month Hat.Prelude.Int)- - hlocalFromEnum :: (T.R Month) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a8v46v8v47localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a8v46v8v47localFromEnum- - hlocalFromEnum (T.R January _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R February _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R March _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R April _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R May _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R June _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R July _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum (T.R August _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 7)- hlocalFromEnum (T.R September _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 8)- hlocalFromEnum (T.R October _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 9)- hlocalFromEnum (T.R November _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 10)- hlocalFromEnum (T.R December _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 11)- hlocalFromEnum _ p = T.fatal p- - hinRange _ _ p = T.fatal p- - --instance Read (Month)- where- - greadsPrec preadsPrec p =- T.ufun1 a8v50v8v53readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p January aJanuary))- (T.fromLitString T.mkNoSrcPos p "January") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p February aFebruary))- (T.fromLitString T.mkNoSrcPos p "February") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p March aMarch))- (T.fromLitString T.mkNoSrcPos p "March") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p April aApril))- (T.fromLitString T.mkNoSrcPos p "April") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p May aMay))- (T.fromLitString T.mkNoSrcPos p "May") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p June aJune))- (T.fromLitString T.mkNoSrcPos p "June") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p July aJuly))- (T.fromLitString T.mkNoSrcPos p "July") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p August aAugust))- (T.fromLitString T.mkNoSrcPos p "August") p)) p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p September aSeptember))- (T.fromLitString T.mkNoSrcPos p "September") p))- p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p October aOctober))- (T.fromLitString T.mkNoSrcPos p "October") p))- p))- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p November- aNovember))- (T.fromLitString T.mkNoSrcPos p "November")- p)) p))- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p December- aDecember))- (T.fromLitString T.mkNoSrcPos p "December")- p)) p))))))))))))- - --instance Show (Month)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a8v56v8v59showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (January) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "January")- hshowsPrec fy1 (T.R (February) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "February")- hshowsPrec fy1 (T.R (March) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "March")- hshowsPrec fy1 (T.R (April) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "April")- hshowsPrec fy1 (T.R (May) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "May")- hshowsPrec fy1 (T.R (June) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "June")- hshowsPrec fy1 (T.R (July) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "July")- hshowsPrec fy1 (T.R (August) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "August")- hshowsPrec fy1 (T.R (September) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "September")- hshowsPrec fy1 (T.R (October) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "October")- hshowsPrec fy1 (T.R (November) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "November")- hshowsPrec fy1 (T.R (December) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "December")- hshowsPrec _ _ p = T.fatal p- - --data Day =- Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday --instance T.WrapVal (Day)- where- - wrapVal pwrapVal (kwrapVal@Sunday) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aSunday)- wrapVal pwrapVal (kwrapVal@Monday) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aMonday)- wrapVal pwrapVal (kwrapVal@Tuesday) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aTuesday)- wrapVal pwrapVal (kwrapVal@Wednesday) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aWednesday)- wrapVal pwrapVal (kwrapVal@Thursday) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aThursday)- wrapVal pwrapVal (kwrapVal@Friday) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aFriday)- wrapVal pwrapVal (kwrapVal@Saturday) p =- T.R kwrapVal (T.mkValueUse p pwrapVal aSaturday)- --instance Eq (Day)- where- - (!==) (%==) p =- T.ufun2 (+#$=$$=#$=$%==) (%==) p (*==)- where- - (*==) (T.R Sunday _) (T.R Sunday _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Monday _) (T.R Monday _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Tuesday _) (T.R Tuesday _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Wednesday _) (T.R Wednesday _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Thursday _) (T.R Thursday _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Friday _) (T.R Friday _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) (T.R Saturday _) (T.R Saturday _) p =- T.con0 T.mkNoSrcPos p Hat.Prelude.True Hat.Prelude.aTrue- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (Day)- where- - gcompare pcompare p =- T.ufun2 a12v26v12v28compare pcompare p hcompare- where- - hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a12v26v12v28localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a12v26v12v28localFromEnum- - hlocalFromEnum (T.R (Sunday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R (Monday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R (Tuesday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R (Wednesday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R (Thursday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R (Friday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R (Saturday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum _ p = T.fatal p- - - --instance Enum (Day)- where- - gfromEnum pfromEnum p =- T.ufun1 a12v31v12v34fromEnum pfromEnum p hfromEnum- where- - hfromEnum (T.R Sunday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hfromEnum (T.R Monday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hfromEnum (T.R Tuesday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hfromEnum (T.R Wednesday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hfromEnum (T.R Thursday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hfromEnum (T.R Friday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hfromEnum (T.R Saturday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hfromEnum _ p = T.fatal p- - - gtoEnum ptoEnum p =- T.ufun1 a12v31v12v34toEnum ptoEnum p htoEnum- where- - htoEnum fv12v31v12v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v31v12v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p) (y1toEnum fv12v31v12v34n p)- where- - h p = T.con0 T.mkNoSrcPos p Sunday aSunday- h p = y1toEnum fv12v31v12v34n p- - htoEnum fv12v31v12v34n p = y1toEnum fv12v31v12v34n p- - y1toEnum fv12v31v12v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v31v12v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p) (y2toEnum fv12v31v12v34n p)- where- - h p = T.con0 T.mkNoSrcPos p Monday aMonday- h p = y2toEnum fv12v31v12v34n p- - y1toEnum fv12v31v12v34n p = y2toEnum fv12v31v12v34n p- - y2toEnum fv12v31v12v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v31v12v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p) (y3toEnum fv12v31v12v34n p)- where- - h p = T.con0 T.mkNoSrcPos p Tuesday aTuesday- h p = y3toEnum fv12v31v12v34n p- - y2toEnum fv12v31v12v34n p = y3toEnum fv12v31v12v34n p- - y3toEnum fv12v31v12v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v31v12v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3))) (h p) (y4toEnum fv12v31v12v34n p)- where- - h p = T.con0 T.mkNoSrcPos p Wednesday aWednesday- h p = y4toEnum fv12v31v12v34n p- - y3toEnum fv12v31v12v34n p = y4toEnum fv12v31v12v34n p- - y4toEnum fv12v31v12v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v31v12v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4))) (h p) (y5toEnum fv12v31v12v34n p)- where- - h p = T.con0 T.mkNoSrcPos p Thursday aThursday- h p = y5toEnum fv12v31v12v34n p- - y4toEnum fv12v31v12v34n p = y5toEnum fv12v31v12v34n p- - y5toEnum fv12v31v12v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v31v12v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5))) (h p) (y6toEnum fv12v31v12v34n p)- where- - h p = T.con0 T.mkNoSrcPos p Friday aFriday- h p = y6toEnum fv12v31v12v34n p- - y5toEnum fv12v31v12v34n p = y6toEnum fv12v31v12v34n p- - y6toEnum fv12v31v12v34n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v31v12v34n- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6))) (h p) (y7toEnum fv12v31v12v34n p)- where- - h p = T.con0 T.mkNoSrcPos p Saturday aSaturday- h p = y7toEnum fv12v31v12v34n p- - y6toEnum fv12v31v12v34n p = y7toEnum fv12v31v12v34n p- - y7toEnum _ p =- T.uwrapForward p- (Hat.Prelude.herror- (T.fromLitString T.mkNoSrcPos p "toEnum: argument out of bounds") p)- - - genumFrom penumFrom p =- T.ufun1 a12v31v12v34enumFrom penumFrom p henumFrom- where- - henumFrom fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p) fy1- (T.con0 T.mkNoSrcPos p Saturday aSaturday)- - - genumFromThen penumFromThen p =- T.ufun2 a12v31v12v34enumFromThen penumFromThen p henumFromThen- where- - henumFromThen fy1 fy2 p =- T.uap3 T.mkNoSrcPos p (Hat.Prelude.genumFromThenTo T.mkNoSrcPos p) fy1 fy2- (T.ucif p- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!>= p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy1)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gfromEnum T.mkNoSrcPos p) fy2))- (T.con0 T.mkNoSrcPos p Saturday aSaturday)- (T.con0 T.mkNoSrcPos p Sunday aSunday))- - --instance Bounded (Day)- where- - gminBound pminBound p = T.uconstUse pminBound p sminBound- - sminBound =- T.uconstDef T.mkRoot a12v37v12v43minBound- (\ p -> T.con0 T.mkNoSrcPos p Sunday aSunday)- - gmaxBound pmaxBound p = T.uconstUse pmaxBound p smaxBound- - smaxBound =- T.uconstDef T.mkRoot a12v37v12v43maxBound- (\ p -> T.con0 T.mkNoSrcPos p Saturday aSaturday)- --instance Ix (Day)- where- - grange prange p =- T.ufun1 a12v46v12v47range prange p hrange- where- - hrange (T.R (T.Tuple2 fy1 fy2) _) p =- T.uwrapForward p- (Hat.PreludeBasic.hmap (glocalToEnum T.mkNoSrcPos p)- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.genumFromTo T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p))) p)- where- - glocalToEnum :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Hat.Prelude.Int Day)- - hlocalToEnum :: (T.R Hat.Prelude.Int) -> T.RefExp -> T.R Day- - glocalToEnum plocalToEnum p =- T.ufun1 a12v46v12v47localToEnum plocalToEnum p hlocalToEnum- - alocalToEnum = a12v46v12v47localToEnum- - hlocalToEnum fv12v46v12v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v46v12v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))) (h p)- (y1localToEnum fv12v46v12v47n p)- where- - h p = T.con0 T.mkNoSrcPos p Sunday aSunday- h p = y1localToEnum fv12v46v12v47n p- - hlocalToEnum fv12v46v12v47n p = y1localToEnum fv12v46v12v47n p- - y1localToEnum fv12v46v12v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v46v12v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1))) (h p)- (y2localToEnum fv12v46v12v47n p)- where- - h p = T.con0 T.mkNoSrcPos p Monday aMonday- h p = y2localToEnum fv12v46v12v47n p- - y1localToEnum fv12v46v12v47n p = y2localToEnum fv12v46v12v47n p- - y2localToEnum fv12v46v12v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v46v12v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2))) (h p)- (y3localToEnum fv12v46v12v47n p)- where- - h p = T.con0 T.mkNoSrcPos p Tuesday aTuesday- h p = y3localToEnum fv12v46v12v47n p- - y2localToEnum fv12v46v12v47n p = y3localToEnum fv12v46v12v47n p- - y3localToEnum fv12v46v12v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v46v12v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3))) (h p)- (y4localToEnum fv12v46v12v47n p)- where- - h p = T.con0 T.mkNoSrcPos p Wednesday aWednesday- h p = y4localToEnum fv12v46v12v47n p- - y3localToEnum fv12v46v12v47n p = y4localToEnum fv12v46v12v47n p- - y4localToEnum fv12v46v12v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v46v12v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4))) (h p)- (y5localToEnum fv12v46v12v47n p)- where- - h p = T.con0 T.mkNoSrcPos p Thursday aThursday- h p = y5localToEnum fv12v46v12v47n p- - y4localToEnum fv12v46v12v47n p = y5localToEnum fv12v46v12v47n p- - y5localToEnum fv12v46v12v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v46v12v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5))) (h p)- (y6localToEnum fv12v46v12v47n p)- where- - h p = T.con0 T.mkNoSrcPos p Friday aFriday- h p = y6localToEnum fv12v46v12v47n p- - y5localToEnum fv12v46v12v47n p = y6localToEnum fv12v46v12v47n p- - y6localToEnum fv12v46v12v47n p =- T.ucguard- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv12v46v12v47n- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6))) (h p) (T.fatal p)- where- - h p = T.con0 T.mkNoSrcPos p Saturday aSaturday- h p = T.fatal p- - y6localToEnum _ p = T.fatal p- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Day Hat.Prelude.Int)- - hlocalFromEnum :: (T.R Day) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a12v46v12v47localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a12v46v12v47localFromEnum- - hlocalFromEnum (T.R Sunday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R Monday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R Tuesday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R Wednesday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R Thursday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R Friday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R Saturday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum _ p = T.fatal p- - hrange _ p = T.fatal p- - - gindex pindex p =- T.ufun2 a12v46v12v47index pindex p hindex- where- - hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!- p)- (T.uwrapForward p (hlocalFromEnum fy3 p))- (T.uwrapForward p (hlocalFromEnum fy1 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Day Hat.Prelude.Int)- - hlocalFromEnum :: (T.R Day) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a12v46v12v47localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a12v46v12v47localFromEnum- - hlocalFromEnum (T.R Sunday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R Monday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R Tuesday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R Wednesday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R Thursday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R Friday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R Saturday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum _ p = T.fatal p- - hindex _ _ p = T.fatal p- - - ginRange pinRange p =- T.ufun2 a12v46v12v47inRange pinRange p hinRange- where- - hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p =- T.uap2 T.mkNoSrcPos p (Hat.Ix.ginRange T.mkNoSrcPos p)- (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2- (T.uwrapForward p (hlocalFromEnum fy1 p))- (T.uwrapForward p (hlocalFromEnum fy2 p)))- (T.uwrapForward p (hlocalFromEnum fy3 p))- where- - glocalFromEnum ::- T.RefSrcPos -> T.RefExp -> T.R (T.Fun Day Hat.Prelude.Int)- - hlocalFromEnum :: (T.R Day) -> T.RefExp -> T.R Hat.Prelude.Int- - glocalFromEnum plocalFromEnum p =- T.ufun1 a12v46v12v47localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a12v46v12v47localFromEnum- - hlocalFromEnum (T.R Sunday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum (T.R Monday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 1)- hlocalFromEnum (T.R Tuesday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 2)- hlocalFromEnum (T.R Wednesday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 3)- hlocalFromEnum (T.R Thursday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 4)- hlocalFromEnum (T.R Friday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 5)- hlocalFromEnum (T.R Saturday _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 6)- hlocalFromEnum _ p = T.fatal p- - hinRange _ _ p = T.fatal p- - --instance Read (Day)- where- - greadsPrec preadsPrec p =- T.ufun1 a12v50v12v53readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p Sunday aSunday))- (T.fromLitString T.mkNoSrcPos p "Sunday") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p Monday aMonday))- (T.fromLitString T.mkNoSrcPos p "Monday") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p Tuesday aTuesday))- (T.fromLitString T.mkNoSrcPos p "Tuesday") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p Wednesday aWednesday))- (T.fromLitString T.mkNoSrcPos p "Wednesday") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p Thursday aThursday))- (T.fromLitString T.mkNoSrcPos p "Thursday") p)) p))- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.galt T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p Friday aFriday))- (T.fromLitString T.mkNoSrcPos p "Friday") p)) p))- (T.uwrapForward p- (Hat.Prelude.hreadParen- (T.con0 T.mkNoSrcPos p Hat.Prelude.False- Hat.Prelude.aFalse)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gyield T.mkNoSrcPos p)- (T.con0 T.mkNoSrcPos p Saturday aSaturday))- (T.fromLitString T.mkNoSrcPos p "Saturday") p))- p)))))))- - --instance Show (Day)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a12v56v12v59showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (Sunday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Sunday")- hshowsPrec fy1 (T.R (Monday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Monday")- hshowsPrec fy1 (T.R (Tuesday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Tuesday")- hshowsPrec fy1 (T.R (Wednesday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Wednesday")- hshowsPrec fy1 (T.R (Thursday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Thursday")- hshowsPrec fy1 (T.R (Friday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Friday")- hshowsPrec fy1 (T.R (Saturday) _) p =- T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "Saturday")- hshowsPrec _ _ p = T.fatal p- - --data CalendarTime =- CalendarTime- {bctYear :: T.R Int,bctMonth :: T.R Month- ,bctDay,bctHour,bctMin,bctSec :: T.R Int,bctPicosec :: T.R Integer- ,bctWDay :: T.R Day,bctYDay :: T.R Int,bctTZName :: T.R String- ,bctTZ :: T.R Int,bctIsDST :: T.R Bool}--instance T.WrapVal (CalendarTime)- where- - wrapVal pwrapVal- (kwrapVal@(CalendarTime (T.R _ z1wrapVal) (T.R _ z2wrapVal)- (T.R _ z3wrapVal) (T.R _ z4wrapVal) (T.R _ z5wrapVal) (T.R _ z6wrapVal)- (T.R _ z7wrapVal) (T.R _ z8wrapVal) (T.R _ z9wrapVal) (T.R _ z10wrapVal)- (T.R _ z11wrapVal) (T.R _ z12wrapVal))) p =- T.R kwrapVal- (T.mkValueApp12 p pwrapVal aCalendarTime z1wrapVal z2wrapVal z3wrapVal- z4wrapVal z5wrapVal z6wrapVal z7wrapVal z8wrapVal z9wrapVal z10wrapVal- z11wrapVal z12wrapVal)- --gctYear pctYear p = T.ufun1 actYear pctYear p hctYear--hctYear (T.R z1ctYear _) p = T.projection T.mkNoSrcPos p (bctYear z1ctYear)--gctMonth pctMonth p = T.ufun1 actMonth pctMonth p hctMonth--hctMonth (T.R z1ctMonth _) p = T.projection T.mkNoSrcPos p (bctMonth z1ctMonth)--gctDay pctDay p = T.ufun1 actDay pctDay p hctDay--hctDay (T.R z1ctDay _) p = T.projection T.mkNoSrcPos p (bctDay z1ctDay)--gctHour pctHour p = T.ufun1 actHour pctHour p hctHour--hctHour (T.R z1ctHour _) p = T.projection T.mkNoSrcPos p (bctHour z1ctHour)--gctMin pctMin p = T.ufun1 actMin pctMin p hctMin--hctMin (T.R z1ctMin _) p = T.projection T.mkNoSrcPos p (bctMin z1ctMin)--gctSec pctSec p = T.ufun1 actSec pctSec p hctSec--hctSec (T.R z1ctSec _) p = T.projection T.mkNoSrcPos p (bctSec z1ctSec)--gctPicosec pctPicosec p = T.ufun1 actPicosec pctPicosec p hctPicosec--hctPicosec (T.R z1ctPicosec _) p =- T.projection T.mkNoSrcPos p (bctPicosec z1ctPicosec)--gctWDay pctWDay p = T.ufun1 actWDay pctWDay p hctWDay--hctWDay (T.R z1ctWDay _) p = T.projection T.mkNoSrcPos p (bctWDay z1ctWDay)--gctYDay pctYDay p = T.ufun1 actYDay pctYDay p hctYDay--hctYDay (T.R z1ctYDay _) p = T.projection T.mkNoSrcPos p (bctYDay z1ctYDay)--gctTZName pctTZName p = T.ufun1 actTZName pctTZName p hctTZName--hctTZName (T.R z1ctTZName _) p =- T.projection T.mkNoSrcPos p (bctTZName z1ctTZName)--gctTZ pctTZ p = T.ufun1 actTZ pctTZ p hctTZ--hctTZ (T.R z1ctTZ _) p = T.projection T.mkNoSrcPos p (bctTZ z1ctTZ)--gctIsDST pctIsDST p = T.ufun1 actIsDST pctIsDST p hctIsDST--hctIsDST (T.R z1ctIsDST _) p = T.projection T.mkNoSrcPos p (bctIsDST z1ctIsDST)--instance Eq (CalendarTime)- where- - (!==) (%==) p =- T.ufun2 (+$&=$#=$&=$$==) (%==) p (*==)- where- - (*==)- (T.R (CalendarTime fy1 fy2 fy3 fy4 fy5 fy6 fy7 fy8 fy9 fy10 fy11 fy12) _)- (T.R- (CalendarTime fy13 fy14 fy15 fy16 fy17 fy18 fy19 fy20 fy21 fy22 fy23- fy24) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy1 fy13)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy2- fy14)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p)- fy3 fy15)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy4 fy16)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy5 fy17)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy6- fy18)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos- Hat.Prelude.!==- p) fy7 fy19)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos- Hat.Prelude.!==- p) fy8 fy20)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos- Hat.Prelude.!==- p) fy9 fy21)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2- T.mkNoSrcPos- p- (T.mkNoSrcPos- Hat.Prelude.!==- p) fy10- fy22)- Hat.Prelude.*&&- (T.uwrapForward- p- (((T.uap2- T.mkNoSrcPos- p- (T.mkNoSrcPos- Hat.Prelude.!==- p)- fy11- fy23)- Hat.Prelude.*&&- (T.uap2- T.mkNoSrcPos- p- (T.mkNoSrcPos- Hat.Prelude.!==- p)- fy12- fy24))- p))) p)))- p))) p))) p))) p)))- p))) p))) p))) p))) p)- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (CalendarTime)- where- - gcompare pcompare p =- T.ufun2 a24v25v24v27compare pcompare p hcompare- where- - hcompare- (T.R (CalendarTime fy3 fy4 fy5 fy6 fy7 fy8 fy9 fy10 fy11 fy12 fy13 fy14)- _)- (T.R- (CalendarTime fy15 fy16 fy17 fy18 fy19 fy20 fy21 fy22 fy23 fy24 fy25- fy26) _) p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1 (T.R Hat.Prelude.EQ _)- p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1- (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1- (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v24v25v24v27v1- (T.R Hat.Prelude.EQ- _) p =- T.uccase- T.mkNoSrcPos p- (let- v24v25v24v27v1- (T.R- Hat.Prelude.EQ- _) p =- T.uccase- T.mkNoSrcPos- p- (let- v24v25v24v27v1- (T.R- Hat.Prelude.EQ- _) p =- T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.gcompare- T.mkNoSrcPos- p)- fy14- fy26- v24v25v24v27v1- fy1 p =- T.projection- T.mkNoSrcPos- p fy1- in- (v24v25v24v27v1))- (T.uap2- T.mkNoSrcPos- p- (Hat.Prelude.gcompare- T.mkNoSrcPos- p) fy13- fy25)- v24v25v24v27v1- fy1 p =- T.projection- T.mkNoSrcPos- p fy1 in- (v24v25v24v27v1))- (T.uap2- T.mkNoSrcPos p- (Hat.Prelude.gcompare- T.mkNoSrcPos- p) fy12 fy24)- v24v25v24v27v1 fy1 p =- T.projection- T.mkNoSrcPos p fy1- in (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare- T.mkNoSrcPos p) fy11- fy23)- v24v25v24v27v1 fy1 p =- T.projection T.mkNoSrcPos- p fy1 in- (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare- T.mkNoSrcPos p) fy10 fy22)- v24v25v24v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1- in (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos- p) fy9 fy21)- v24v25v24v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p)- fy8 fy20)- v24v25v24v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p) fy7- fy19)- v24v25v24v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p) fy6 fy18)- v24v25v24v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- fy5 fy17)- v24v25v24v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p) fy4- fy16)- v24v25v24v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v24v25v24v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p) fy3 fy15)- hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a24v25v24v27localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a24v25v24v27localFromEnum- - hlocalFromEnum (T.R (CalendarTime _ _ _ _ _ _ _ _ _ _ _ _) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum _ p = T.fatal p- - - --instance Read (CalendarTime)- where- - greadsPrec preadsPrec p =- T.ufun1 a24v30v24v33readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.gthenAp T.mkNoSrcPos- p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.pa0- CalendarTime- T.cn12- T.mkNoSrcPos- p- aCalendarTime))- (T.fromLitString- T.mkNoSrcPos- p- "CalendarTime")- p))- (T.fromLitString- T.mkNoSrcPos- p- "{")- p))- (T.fromLitString- T.mkNoSrcPos- p- "ctYear")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "ctMonth")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "ctDay")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "ctHour")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "ctMin")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "ctSec")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "ctPicosec")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "ctWDay")- p))- (T.fromLitString- T.mkNoSrcPos- p "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p ",") p))- (T.fromLitString- T.mkNoSrcPos p- "ctYDay") p))- (T.fromLitString- T.mkNoSrcPos p "=")- p))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos p)- (T.conInteger- T.mkNoSrcPos p 0))))- (T.fromLitString- T.mkNoSrcPos p ",") p))- (T.fromLitString T.mkNoSrcPos p- "ctTZName") p))- (T.fromLitString T.mkNoSrcPos p "=")- p))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.greadsPrec T.mkNoSrcPos- p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))))- (T.fromLitString T.mkNoSrcPos p ",") p))- (T.fromLitString T.mkNoSrcPos p "ctTZ") p))- (T.fromLitString T.mkNoSrcPos p "=") p))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.greadsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))))- (T.fromLitString T.mkNoSrcPos p ",") p))- (T.fromLitString T.mkNoSrcPos p "ctIsDST") p))- (T.fromLitString T.mkNoSrcPos p "=") p))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.greadsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))))- (T.fromLitString T.mkNoSrcPos p "}") p)- - --instance Show (CalendarTime)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a24v36v24v39showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1- (T.R (CalendarTime fy2 fy3 fy4 fy5 fy6 fy7 fy8 fy9 fy10 fy11 fy12 fy13) _)- p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "CalendarTime{"))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctYear"))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy2))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctMonth"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy3))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctDay"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy4))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctHour"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy5))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctMin"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy6))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctSec"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy7))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctPicosec"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy8))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctWDay"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy9))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctYDay"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos- p) (T.conInteger T.mkNoSrcPos p 0)) fy10))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p- "ctTZName"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy11))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "ctTZ"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy12))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p- "ctIsDST"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))- fy13))))))))))))))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '}'))- hshowsPrec _ _ p = T.fatal p- - --data TimeDiff =- TimeDiff- {btdYear,btdMonth,btdDay,btdHour,btdMin,btdSec :: T.R Int- ,btdPicosec :: T.R Integer}--instance T.WrapVal (TimeDiff)- where- - wrapVal pwrapVal- (kwrapVal@(TimeDiff (T.R _ z1wrapVal) (T.R _ z2wrapVal) (T.R _ z3wrapVal)- (T.R _ z4wrapVal) (T.R _ z5wrapVal) (T.R _ z6wrapVal)- (T.R _ z7wrapVal))) p =- T.R kwrapVal- (T.mkValueApp7 p pwrapVal aTimeDiff z1wrapVal z2wrapVal z3wrapVal- z4wrapVal z5wrapVal z6wrapVal z7wrapVal)- --gtdYear ptdYear p = T.ufun1 atdYear ptdYear p htdYear--htdYear (T.R z1tdYear _) p = T.projection T.mkNoSrcPos p (btdYear z1tdYear)--gtdMonth ptdMonth p = T.ufun1 atdMonth ptdMonth p htdMonth--htdMonth (T.R z1tdMonth _) p = T.projection T.mkNoSrcPos p (btdMonth z1tdMonth)--gtdDay ptdDay p = T.ufun1 atdDay ptdDay p htdDay--htdDay (T.R z1tdDay _) p = T.projection T.mkNoSrcPos p (btdDay z1tdDay)--gtdHour ptdHour p = T.ufun1 atdHour ptdHour p htdHour--htdHour (T.R z1tdHour _) p = T.projection T.mkNoSrcPos p (btdHour z1tdHour)--gtdMin ptdMin p = T.ufun1 atdMin ptdMin p htdMin--htdMin (T.R z1tdMin _) p = T.projection T.mkNoSrcPos p (btdMin z1tdMin)--gtdSec ptdSec p = T.ufun1 atdSec ptdSec p htdSec--htdSec (T.R z1tdSec _) p = T.projection T.mkNoSrcPos p (btdSec z1tdSec)--gtdPicosec ptdPicosec p = T.ufun1 atdPicosec ptdPicosec p htdPicosec--htdPicosec (T.R z1tdPicosec _) p =- T.projection T.mkNoSrcPos p (btdPicosec z1tdPicosec)--instance Eq (TimeDiff)- where- - (!==) (%==) p =- T.ufun2 (+$>=$#=$>=$$==) (%==) p (*==)- where- - (*==) (T.R (TimeDiff fy1 fy2 fy3 fy4 fy5 fy6 fy7) _)- (T.R (TimeDiff fy8 fy9 fy10 fy11 fy12 fy13 fy14) _) p =- T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy1 fy8)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fy2 fy9)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p)- fy3 fy10)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy4 fy11)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy5 fy12)- Hat.Prelude.*&&- (T.uwrapForward p- (((T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy6- fy13)- Hat.Prelude.*&&- (T.uap2 T.mkNoSrcPos p- (T.mkNoSrcPos Hat.Prelude.!== p) fy7- fy14)) p))) p))) p))) p))) p))) p)- (*==) _ _ p = T.con0 T.mkNoSrcPos p Hat.Prelude.False Hat.Prelude.aFalse- - --instance Ord (TimeDiff)- where- - gcompare pcompare p =- T.ufun2 a29v25v29v27compare pcompare p hcompare- where- - hcompare (T.R (TimeDiff fy3 fy4 fy5 fy6 fy7 fy8 fy9) _)- (T.R (TimeDiff fy10 fy11 fy12 fy13 fy14 fy15 fy16) _) p =- T.uccase T.mkNoSrcPos p- (let- v29v25v29v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v29v25v29v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v29v25v29v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v29v25v29v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v29v25v29v27v1 (T.R Hat.Prelude.EQ _) p =- T.uccase T.mkNoSrcPos p- (let- v29v25v29v27v1 (T.R Hat.Prelude.EQ _)- p =- T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos- p) fy9 fy16- v29v25v29v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v29v25v29v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p)- fy8 fy15)- v29v25v29v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v29v25v29v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p) fy7- fy14)- v29v25v29v27v1 fy1 p =- T.projection T.mkNoSrcPos p fy1 in- (v29v25v29v27v1))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gcompare T.mkNoSrcPos p) fy6 fy13)- v29v25v29v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v29v25v29v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- fy5 fy12)- v29v25v29v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v29v25v29v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p) fy4- fy11)- v29v25v29v27v1 fy1 p = T.projection T.mkNoSrcPos p fy1 in- (v29v25v29v27v1))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p) fy3 fy10)- hcompare fy1 fy2 p =- T.uap2 T.mkNoSrcPos p (Hat.Prelude.gcompare T.mkNoSrcPos p)- (T.uwrapForward p (hlocalFromEnum fy1 p) :: T.R Hat.Prelude.Int)- (T.uwrapForward p (hlocalFromEnum fy2 p))- where- - glocalFromEnum plocalFromEnum p =- T.ufun1 a29v25v29v27localFromEnum plocalFromEnum p hlocalFromEnum- - alocalFromEnum = a29v25v29v27localFromEnum- - hlocalFromEnum (T.R (TimeDiff _ _ _ _ _ _ _) _) p =- T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)- hlocalFromEnum _ p = T.fatal p- - - --instance Read (TimeDiff)- where- - greadsPrec preadsPrec p =- T.ufun1 a29v30v29v33readsPrec preadsPrec p hreadsPrec- where- - hreadsPrec fy1 p =- T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.gthenAp T.mkNoSrcPos- p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2 T.mkNoSrcPos p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos p)- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap2- T.mkNoSrcPos- p- (Hat.PreludeBasic.gthenAp- T.mkNoSrcPos- p)- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uwrapForward- p- (Hat.PreludeBasic.hthenLex- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gyield- T.mkNoSrcPos- p)- (T.pa0- TimeDiff- T.cn7- T.mkNoSrcPos- p- aTimeDiff))- (T.fromLitString- T.mkNoSrcPos- p- "TimeDiff")- p))- (T.fromLitString- T.mkNoSrcPos- p- "{")- p))- (T.fromLitString- T.mkNoSrcPos- p- "tdYear")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "tdMonth")- p))- (T.fromLitString- T.mkNoSrcPos- p- "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p- ",")- p))- (T.fromLitString- T.mkNoSrcPos- p- "tdDay")- p))- (T.fromLitString- T.mkNoSrcPos- p "=")- p))- (T.uap1- T.mkNoSrcPos- p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos- p)- (T.uap1- T.mkNoSrcPos- p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos- p)- (T.conInteger- T.mkNoSrcPos- p- 0))))- (T.fromLitString- T.mkNoSrcPos- p ",") p))- (T.fromLitString- T.mkNoSrcPos p- "tdHour") p))- (T.fromLitString- T.mkNoSrcPos p "=")- p))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.greadsPrec- T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos p)- (T.conInteger- T.mkNoSrcPos p 0))))- (T.fromLitString- T.mkNoSrcPos p ",") p))- (T.fromLitString T.mkNoSrcPos p- "tdMin") p))- (T.fromLitString T.mkNoSrcPos p "=")- p))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.greadsPrec T.mkNoSrcPos- p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger- T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))))- (T.fromLitString T.mkNoSrcPos p ",") p))- (T.fromLitString T.mkNoSrcPos p "tdSec") p))- (T.fromLitString T.mkNoSrcPos p "=") p))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.greadsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))))- (T.fromLitString T.mkNoSrcPos p ",") p))- (T.fromLitString T.mkNoSrcPos p "tdPicosec") p))- (T.fromLitString T.mkNoSrcPos p "=") p))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.greadsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0))))- (T.fromLitString T.mkNoSrcPos p "}") p)- - --instance Show (TimeDiff)- where- - gshowsPrec pshowsPrec p =- T.ufun2 a29v36v29v39showsPrec pshowsPrec p hshowsPrec- where- - hshowsPrec fy1 (T.R (TimeDiff fy2 fy3 fy4 fy5 fy6 fy7 fy8) _) p =- T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "TimeDiff{"))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "tdYear"))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy2))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "tdMonth"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy3))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "tdDay"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy4))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "tdHour"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy5))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "tdMin"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy6))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "tdSec"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy7))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p ',')))- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!. p)- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowString T.mkNoSrcPos p)- (T.fromLitString T.mkNoSrcPos p "tdPicosec"))- (T.uap1 T.mkNoSrcPos p- (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '=')))- (T.uap2 T.mkNoSrcPos p- (Hat.Prelude.gshowsPrec T.mkNoSrcPos p)- (T.uap1 T.mkNoSrcPos p- (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)- (T.conInteger T.mkNoSrcPos p 0)) fy8)))))))))- (T.uap1 T.mkNoSrcPos p (Hat.Prelude.gshowChar T.mkNoSrcPos p)- (T.conChar T.mkNoSrcPos p '}'))- hshowsPrec _ _ p = T.fatal p- - --tTimeBuiltinTypes =- T.mkModule "TimeBuiltinTypes" "TimeBuiltinTypes.hs" Prelude.False--aJanuary = T.mkConstructor tTimeBuiltinTypes 50015 50021 3 0 "January"--aFebruary = T.mkConstructor tTimeBuiltinTypes 50027 50034 3 0 "February"--aMarch = T.mkConstructor tTimeBuiltinTypes 50038 50042 3 0 "March"--aApril = T.mkConstructor tTimeBuiltinTypes 50049 50053 3 0 "April"--aMay = T.mkConstructor tTimeBuiltinTypes 60015 60017 3 0 "May"--aJune = T.mkConstructor tTimeBuiltinTypes 60027 60030 3 0 "June"--aJuly = T.mkConstructor tTimeBuiltinTypes 60038 60041 3 0 "July"--aAugust = T.mkConstructor tTimeBuiltinTypes 60049 60054 3 0 "August"--aSeptember = T.mkConstructor tTimeBuiltinTypes 70015 70023 3 0 "September"--aOctober = T.mkConstructor tTimeBuiltinTypes 70027 70033 3 0 "October"--aNovember = T.mkConstructor tTimeBuiltinTypes 70038 70045 3 0 "November"--aDecember = T.mkConstructor tTimeBuiltinTypes 70049 70056 3 0 "December"--aSunday = T.mkConstructor tTimeBuiltinTypes 100015 100020 3 0 "Sunday"--aMonday = T.mkConstructor tTimeBuiltinTypes 100024 100029 3 0 "Monday"--aTuesday = T.mkConstructor tTimeBuiltinTypes 100034 100040 3 0 "Tuesday"--aWednesday = T.mkConstructor tTimeBuiltinTypes 100045 100053 3 0 "Wednesday"--aThursday = T.mkConstructor tTimeBuiltinTypes 100057 100064 3 0 "Thursday"--aFriday = T.mkConstructor tTimeBuiltinTypes 110015 110020 3 0 "Friday"--aSaturday = T.mkConstructor tTimeBuiltinTypes 110024 110031 3 0 "Saturday"--aCalendarTime =- T.mkConstructorWFields tTimeBuiltinTypes 140021 140032 3 12 "CalendarTime"- (actYear- :- (actMonth- :- (actDay- :- (actHour- :- (actMin- :- (actSec- :- (actPicosec- :- (actWDay- :- (actYDay : (actTZName : (actTZ : (actIsDST : []))))))))))))--aTimeDiff =- T.mkConstructorWFields tTimeBuiltinTypes 260017 260024 3 7 "TimeDiff"- (atdYear- :- (atdMonth- :- (atdDay : (atdHour : (atdMin : (atdSec : (atdPicosec : [])))))))--actYear =- T.mkVariable tTimeBuiltinTypes 150017 150022 3 1 "ctYear" Prelude.False--actMonth =- T.mkVariable tTimeBuiltinTypes 160017 160023 3 1 "ctMonth" Prelude.False--actDay = T.mkVariable tTimeBuiltinTypes 170017 170021 3 1 "ctDay" Prelude.False--actHour =- T.mkVariable tTimeBuiltinTypes 170024 170029 3 1 "ctHour" Prelude.False--actMin = T.mkVariable tTimeBuiltinTypes 170032 170036 3 1 "ctMin" Prelude.False--actSec = T.mkVariable tTimeBuiltinTypes 170039 170043 3 1 "ctSec" Prelude.False--actPicosec =- T.mkVariable tTimeBuiltinTypes 180017 180025 3 1 "ctPicosec" Prelude.False--actWDay =- T.mkVariable tTimeBuiltinTypes 190017 190022 3 1 "ctWDay" Prelude.False--actYDay =- T.mkVariable tTimeBuiltinTypes 200017 200022 3 1 "ctYDay" Prelude.False--actTZName =- T.mkVariable tTimeBuiltinTypes 210017 210024 3 1 "ctTZName" Prelude.False--actTZ = T.mkVariable tTimeBuiltinTypes 220017 220020 3 1 "ctTZ" Prelude.False--actIsDST =- T.mkVariable tTimeBuiltinTypes 230017 230023 3 1 "ctIsDST" Prelude.False--atdYear =- T.mkVariable tTimeBuiltinTypes 270017 270022 3 1 "tdYear" Prelude.False--atdMonth =- T.mkVariable tTimeBuiltinTypes 270025 270031 3 1 "tdMonth" Prelude.False--atdDay = T.mkVariable tTimeBuiltinTypes 270034 270038 3 1 "tdDay" Prelude.False--atdHour =- T.mkVariable tTimeBuiltinTypes 270041 270046 3 1 "tdHour" Prelude.False--atdMin = T.mkVariable tTimeBuiltinTypes 270049 270053 3 1 "tdMin" Prelude.False--atdSec = T.mkVariable tTimeBuiltinTypes 270056 270060 3 1 "tdSec" Prelude.False--atdPicosec =- T.mkVariable tTimeBuiltinTypes 280017 280025 3 1 "tdPicosec" Prelude.False--(+@=$$=@=$%==) =- T.mkVariable tTimeBuiltinTypes 80022 80023 3 2 "==" Prelude.False--a8v26v8v28compare =- T.mkVariable tTimeBuiltinTypes 80026 80028 3 2 "compare" Prelude.False--a8v31v8v34fromEnum =- T.mkVariable tTimeBuiltinTypes 80031 80034 3 1 "fromEnum" Prelude.False--a8v31v8v34toEnum =- T.mkVariable tTimeBuiltinTypes 80031 80034 3 1 "toEnum" Prelude.False--a8v31v8v34enumFrom =- T.mkVariable tTimeBuiltinTypes 80031 80034 3 1 "enumFrom" Prelude.False--a8v31v8v34enumFromThen =- T.mkVariable tTimeBuiltinTypes 80031 80034 3 2 "enumFromThen" Prelude.False--a8v37v8v43minBound =- T.mkVariable tTimeBuiltinTypes 80037 80043 3 0 "minBound" Prelude.False--a8v37v8v43maxBound =- T.mkVariable tTimeBuiltinTypes 80037 80043 3 0 "maxBound" Prelude.False--a8v46v8v47range =- T.mkVariable tTimeBuiltinTypes 80046 80047 3 1 "range" Prelude.False--a8v46v8v47index =- T.mkVariable tTimeBuiltinTypes 80046 80047 3 2 "index" Prelude.False--a8v46v8v47inRange =- T.mkVariable tTimeBuiltinTypes 80046 80047 3 2 "inRange" Prelude.False--a8v50v8v53readsPrec =- T.mkVariable tTimeBuiltinTypes 80050 80053 3 1 "readsPrec" Prelude.False--a8v56v8v59showsPrec =- T.mkVariable tTimeBuiltinTypes 80056 80059 3 2 "showsPrec" Prelude.False--(+#$=$$=#$=$%==) =- T.mkVariable tTimeBuiltinTypes 120022 120023 3 2 "==" Prelude.False--a12v26v12v28compare =- T.mkVariable tTimeBuiltinTypes 120026 120028 3 2 "compare" Prelude.False--a12v31v12v34fromEnum =- T.mkVariable tTimeBuiltinTypes 120031 120034 3 1 "fromEnum" Prelude.False--a12v31v12v34toEnum =- T.mkVariable tTimeBuiltinTypes 120031 120034 3 1 "toEnum" Prelude.False--a12v31v12v34enumFrom =- T.mkVariable tTimeBuiltinTypes 120031 120034 3 1 "enumFrom" Prelude.False--a12v31v12v34enumFromThen =- T.mkVariable tTimeBuiltinTypes 120031 120034 3 2 "enumFromThen" Prelude.False--a12v37v12v43minBound =- T.mkVariable tTimeBuiltinTypes 120037 120043 3 0 "minBound" Prelude.False--a12v37v12v43maxBound =- T.mkVariable tTimeBuiltinTypes 120037 120043 3 0 "maxBound" Prelude.False--a12v46v12v47range =- T.mkVariable tTimeBuiltinTypes 120046 120047 3 1 "range" Prelude.False--a12v46v12v47index =- T.mkVariable tTimeBuiltinTypes 120046 120047 3 2 "index" Prelude.False--a12v46v12v47inRange =- T.mkVariable tTimeBuiltinTypes 120046 120047 3 2 "inRange" Prelude.False--a12v50v12v53readsPrec =- T.mkVariable tTimeBuiltinTypes 120050 120053 3 1 "readsPrec" Prelude.False--a12v56v12v59showsPrec =- T.mkVariable tTimeBuiltinTypes 120056 120059 3 2 "showsPrec" Prelude.False--(+$&=$#=$&=$$==) =- T.mkVariable tTimeBuiltinTypes 240021 240022 3 2 "==" Prelude.False--a24v25v24v27compare =- T.mkVariable tTimeBuiltinTypes 240025 240027 3 2 "compare" Prelude.False--a24v30v24v33readsPrec =- T.mkVariable tTimeBuiltinTypes 240030 240033 3 1 "readsPrec" Prelude.False--a24v36v24v39showsPrec =- T.mkVariable tTimeBuiltinTypes 240036 240039 3 2 "showsPrec" Prelude.False--(+$>=$#=$>=$$==) =- T.mkVariable tTimeBuiltinTypes 290021 290022 3 2 "==" Prelude.False--a29v25v29v27compare =- T.mkVariable tTimeBuiltinTypes 290025 290027 3 2 "compare" Prelude.False--a29v30v29v33readsPrec =- T.mkVariable tTimeBuiltinTypes 290030 290033 3 1 "readsPrec" Prelude.False--a29v36v29v39showsPrec =- T.mkVariable tTimeBuiltinTypes 290036 290039 3 2 "showsPrec" Prelude.False--a8v26v8v28localFromEnum =- T.mkVariable tTimeBuiltinTypes 80026 80028 3 1 "localFromEnum" Prelude.True--a8v46v8v47localToEnum =- T.mkVariable tTimeBuiltinTypes 80046 80047 3 1 "localToEnum" Prelude.True--a8v46v8v47localFromEnum =- T.mkVariable tTimeBuiltinTypes 80046 80047 3 1 "localFromEnum" Prelude.True--a12v26v12v28localFromEnum =- T.mkVariable tTimeBuiltinTypes 120026 120028 3 1 "localFromEnum" Prelude.True--a12v46v12v47localToEnum =- T.mkVariable tTimeBuiltinTypes 120046 120047 3 1 "localToEnum" Prelude.True--a12v46v12v47localFromEnum =- T.mkVariable tTimeBuiltinTypes 120046 120047 3 1 "localFromEnum" Prelude.True--a24v25v24v27localFromEnum =- T.mkVariable tTimeBuiltinTypes 240025 240027 3 1 "localFromEnum" Prelude.True--a29v25v29v27localFromEnum =- T.mkVariable tTimeBuiltinTypes 290025 290027 3 1 "localFromEnum" Prelude.True+ (Month(..), Day(..), CalendarTime(..), gctYear,+ hctYear, gctMonth, hctMonth, gctDay, hctDay, gctHour,+ hctHour, gctMin, hctMin, gctSec, hctSec, gctPicosec,+ hctPicosec, gctWDay, hctWDay, gctYDay, hctYDay,+ gctTZName, hctTZName, gctTZ, hctTZ, gctIsDST,+ hctIsDST, TimeDiff(..), gtdYear, htdYear, gtdMonth,+ htdMonth, gtdDay, htdDay, gtdHour, htdHour, gtdMin,+ htdMin, gtdSec, htdSec, gtdPicosec, htdPicosec,+ aApril, aAugust, aCalendarTime, aDecember, aFebruary,+ aFriday, aJanuary, aJuly, aJune, aMarch, aMay,+ aMonday, aNovember, aOctober, aSaturday, aSeptember,+ aSunday, aThursday, aTimeDiff, aTuesday, aWednesday,+ actDay, actHour, actIsDST, actMin, actMonth,+ actPicosec, actSec, actTZ, actTZName, actWDay,+ actYDay, actYear, atdDay, atdHour, atdMin, atdMonth,+ atdPicosec, atdSec, atdYear, (+@=$$=@=$%==),+ (+#$=$$=#$=$%==), (+$&=$#=$&=$$==), (+$>=$#=$>=$$==))+ where+import qualified Prelude+import qualified Hat.Hat as T+import qualified Hat.PreludeBasic+import qualified Hat.PreludeBuiltinTypes+import Hat.Prelude+import Hat.Ix (Ix(..))+ +data Month = January+ | February+ | March+ | April+ | May+ | June+ | July+ | August+ | September+ | October+ | November+ | December+ +instance T.WrapVal Month where+ wrapVal pwrapVal kwrapVal@January p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aJanuary)+ wrapVal pwrapVal kwrapVal@February p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aFebruary)+ wrapVal pwrapVal kwrapVal@March p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aMarch)+ wrapVal pwrapVal kwrapVal@April p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aApril)+ wrapVal pwrapVal kwrapVal@May p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aMay)+ wrapVal pwrapVal kwrapVal@June p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aJune)+ wrapVal pwrapVal kwrapVal@July p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aJuly)+ wrapVal pwrapVal kwrapVal@August p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aAugust)+ wrapVal pwrapVal kwrapVal@September p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aSeptember)+ wrapVal pwrapVal kwrapVal@October p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aOctober)+ wrapVal pwrapVal kwrapVal@November p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aNovember)+ wrapVal pwrapVal kwrapVal@December p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aDecember)+ +instance Eq Month where+ (%==) !== p = T.ufun2 (+@=$$=@=$%==) (%==) p (*==)+ where (T.R January _ *== T.R January _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R February _ *== T.R February _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R March _ *== T.R March _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R April _ *== T.R April _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R May _ *== T.R May _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R June _ *== T.R June _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R July _ *== T.R July _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R August _ *== T.R August _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R September _ *== T.R September _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R October _ *== T.R October _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R November _ *== T.R November _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R December _ *== T.R December _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord Month where+ gcompare pcompare p+ = T.ufun2 c8v26v8v28compare pcompare p hcompare+ where hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c8v26v8v28localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c8v26v8v28localFromEnum+ hlocalFromEnum (T.R January _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R February _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R March _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R April _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R May _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R June _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R July _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R August _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R September _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R October _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R November _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R December _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Enum Month where+ gfromEnum pfromEnum p+ = T.ufun1 c8v31v8v34fromEnum pfromEnum p hfromEnum+ where hfromEnum (T.R January _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hfromEnum (T.R February _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hfromEnum (T.R March _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hfromEnum (T.R April _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hfromEnum (T.R May _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hfromEnum (T.R June _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hfromEnum (T.R July _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hfromEnum (T.R August _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ hfromEnum (T.R September _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ hfromEnum (T.R October _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ hfromEnum (T.R November _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ hfromEnum (T.R December _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ hfromEnum _ p = T.fatal p+ gtoEnum ptoEnum p+ = T.ufun1 c8v31v8v34toEnum ptoEnum p htoEnum+ where htoEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h8v31v8v34n p)+ (y1toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p January aJanuary+ h8v31v8v34n p = y1toEnum fv8v31v8v34n p+ htoEnum fv8v31v8v34n p = y1toEnum fv8v31v8v34n p+ y1toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h8v31v8v34n p)+ (y2toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p February aFebruary+ h8v31v8v34n p = y2toEnum fv8v31v8v34n p+ y1toEnum fv8v31v8v34n p = y2toEnum fv8v31v8v34n p+ y2toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h8v31v8v34n p)+ (y3toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p March aMarch+ h8v31v8v34n p = y3toEnum fv8v31v8v34n p+ y2toEnum fv8v31v8v34n p = y3toEnum fv8v31v8v34n p+ y3toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))))+ (h8v31v8v34n p)+ (y4toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p April aApril+ h8v31v8v34n p = y4toEnum fv8v31v8v34n p+ y3toEnum fv8v31v8v34n p = y4toEnum fv8v31v8v34n p+ y4toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))))+ (h8v31v8v34n p)+ (y5toEnum fv8v31v8v34n p)+ where h8v31v8v34n p = T.con0 T.mkNoSrcPos p May aMay+ h8v31v8v34n p = y5toEnum fv8v31v8v34n p+ y4toEnum fv8v31v8v34n p = y5toEnum fv8v31v8v34n p+ y5toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))))+ (h8v31v8v34n p)+ (y6toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p June aJune+ h8v31v8v34n p = y6toEnum fv8v31v8v34n p+ y5toEnum fv8v31v8v34n p = y6toEnum fv8v31v8v34n p+ y6toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))))+ (h8v31v8v34n p)+ (y7toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p July aJuly+ h8v31v8v34n p = y7toEnum fv8v31v8v34n p+ y6toEnum fv8v31v8v34n p = y7toEnum fv8v31v8v34n p+ y7toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))))+ (h8v31v8v34n p)+ (y8toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p August aAugust+ h8v31v8v34n p = y8toEnum fv8v31v8v34n p+ y7toEnum fv8v31v8v34n p = y8toEnum fv8v31v8v34n p+ y8toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))))+ (h8v31v8v34n p)+ (y9toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p September aSeptember+ h8v31v8v34n p = y9toEnum fv8v31v8v34n p+ y8toEnum fv8v31v8v34n p = y9toEnum fv8v31v8v34n p+ y9toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (h8v31v8v34n p)+ (y10toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p October aOctober+ h8v31v8v34n p = y10toEnum fv8v31v8v34n p+ y9toEnum fv8v31v8v34n p = y10toEnum fv8v31v8v34n p+ y10toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))))+ (h8v31v8v34n p)+ (y11toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p November aNovember+ h8v31v8v34n p = y11toEnum fv8v31v8v34n p+ y10toEnum fv8v31v8v34n p = y11toEnum fv8v31v8v34n p+ y11toEnum fv8v31v8v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v31v8v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))))+ (h8v31v8v34n p)+ (y12toEnum fv8v31v8v34n p)+ where h8v31v8v34n p+ = T.con0 T.mkNoSrcPos p December aDecember+ h8v31v8v34n p = y12toEnum fv8v31v8v34n p+ y11toEnum fv8v31v8v34n p = y12toEnum fv8v31v8v34n p+ y12toEnum _ p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "toEnum: argument out of bounds")+ p)+ genumFrom penumFrom p+ = T.ufun1 c8v31v8v34enumFrom penumFrom p henumFrom+ where henumFrom fy1 p+ = T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ fy1+ (T.con0 T.mkNoSrcPos p December aDecember)+ genumFromThen penumFromThen p+ = T.ufun2 c8v31v8v34enumFromThen penumFromThen p+ henumFromThen+ where henumFromThen fy1 fy2 p+ = T.uap3 T.mkNoSrcPos p+ (genumFromThenTo T.mkNoSrcPos p)+ fy1+ fy2+ (T.ucif p+ (T.uap2 T.mkNoSrcPos p ((!>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy2)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy1))+ (T.con0 T.mkNoSrcPos p December aDecember)+ (T.con0 T.mkNoSrcPos p January aJanuary))+ +instance Bounded Month where+ gminBound pminBound p+ = T.uconstUse pminBound p sminBound+ sminBound+ = T.uconstDef p c8v37v8v43minBound+ (\ p -> T.con0 T.mkNoSrcPos p January aJanuary)+ gmaxBound pmaxBound p+ = T.uconstUse pmaxBound p smaxBound+ smaxBound+ = T.uconstDef p c8v37v8v43maxBound+ (\ p -> T.con0 T.mkNoSrcPos p December aDecember)+ +instance Ix Month where+ grange prange p+ = T.ufun1 c8v46v8v47range prange p hrange+ where hrange (T.R (T.Tuple2 fy1 fy2) _) p+ = T.uwrapForward p+ (hmap (grtoEnum T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ (T.uwrapForward p (hrfromEnum fy1 p))+ (T.uwrapForward p (hrfromEnum fy2 p)))+ p)+ where + grtoEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Int Month)+ + hrtoEnum :: T.R Int -> T.RefExp -> T.R Month+ grtoEnum prtoEnum p+ = T.ufun1 c8v46v8v47rtoEnum prtoEnum p hrtoEnum+ artoEnum = c8v46v8v47rtoEnum+ hrtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h8v46v8v47n p)+ (y1rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p January aJanuary+ h8v46v8v47n p = y1rtoEnum fv8v46v8v47n p+ hrtoEnum fv8v46v8v47n p = y1rtoEnum fv8v46v8v47n p+ y1rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h8v46v8v47n p)+ (y2rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p February aFebruary+ h8v46v8v47n p = y2rtoEnum fv8v46v8v47n p+ y1rtoEnum fv8v46v8v47n p = y2rtoEnum fv8v46v8v47n p+ y2rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h8v46v8v47n p)+ (y3rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p March aMarch+ h8v46v8v47n p = y3rtoEnum fv8v46v8v47n p+ y2rtoEnum fv8v46v8v47n p = y3rtoEnum fv8v46v8v47n p+ y3rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (3))))+ (h8v46v8v47n p)+ (y4rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p April aApril+ h8v46v8v47n p = y4rtoEnum fv8v46v8v47n p+ y3rtoEnum fv8v46v8v47n p = y4rtoEnum fv8v46v8v47n p+ y4rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (4))))+ (h8v46v8v47n p)+ (y5rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p = T.con0 T.mkNoSrcPos p May aMay+ h8v46v8v47n p = y5rtoEnum fv8v46v8v47n p+ y4rtoEnum fv8v46v8v47n p = y5rtoEnum fv8v46v8v47n p+ y5rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (5))))+ (h8v46v8v47n p)+ (y6rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p June aJune+ h8v46v8v47n p = y6rtoEnum fv8v46v8v47n p+ y5rtoEnum fv8v46v8v47n p = y6rtoEnum fv8v46v8v47n p+ y6rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (6))))+ (h8v46v8v47n p)+ (y7rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p July aJuly+ h8v46v8v47n p = y7rtoEnum fv8v46v8v47n p+ y6rtoEnum fv8v46v8v47n p = y7rtoEnum fv8v46v8v47n p+ y7rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (7))))+ (h8v46v8v47n p)+ (y8rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p August aAugust+ h8v46v8v47n p = y8rtoEnum fv8v46v8v47n p+ y7rtoEnum fv8v46v8v47n p = y8rtoEnum fv8v46v8v47n p+ y8rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (8))))+ (h8v46v8v47n p)+ (y9rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p September aSeptember+ h8v46v8v47n p = y9rtoEnum fv8v46v8v47n p+ y8rtoEnum fv8v46v8v47n p = y9rtoEnum fv8v46v8v47n p+ y9rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (9))))+ (h8v46v8v47n p)+ (y10rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p October aOctober+ h8v46v8v47n p = y10rtoEnum fv8v46v8v47n p+ y9rtoEnum fv8v46v8v47n p = y10rtoEnum fv8v46v8v47n p+ y10rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (10))))+ (h8v46v8v47n p)+ (y11rtoEnum fv8v46v8v47n p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p November aNovember+ h8v46v8v47n p = y11rtoEnum fv8v46v8v47n p+ y10rtoEnum fv8v46v8v47n p = y11rtoEnum fv8v46v8v47n p+ y11rtoEnum fv8v46v8v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv8v46v8v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (11))))+ (h8v46v8v47n p)+ (T.fatal p)+ where h8v46v8v47n p+ = T.con0 T.mkNoSrcPos p December aDecember+ h8v46v8v47n p = T.fatal p+ y11rtoEnum _ p = T.fatal p+ + grfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Month Int)+ + hrfromEnum :: T.R Month -> T.RefExp -> T.R Int+ grfromEnum prfromEnum p+ = T.ufun1 c8v46v8v47rfromEnum prfromEnum p hrfromEnum+ arfromEnum = c8v46v8v47rfromEnum+ hrfromEnum (T.R January _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hrfromEnum (T.R February _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hrfromEnum (T.R March _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hrfromEnum (T.R April _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hrfromEnum (T.R May _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hrfromEnum (T.R June _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hrfromEnum (T.R July _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hrfromEnum (T.R August _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ hrfromEnum (T.R September _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ hrfromEnum (T.R October _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ hrfromEnum (T.R November _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ hrfromEnum (T.R December _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ hrfromEnum _ p = T.fatal p+ gindex pindex p+ = T.ufun2 c8v46v8v47index pindex p hindex+ where hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uwrapForward p (hifromEnum fy3 p))+ (T.uwrapForward p (hifromEnum fy2 p))+ where + gifromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Month Int)+ + hifromEnum :: T.R Month -> T.RefExp -> T.R Int+ gifromEnum pifromEnum p+ = T.ufun1 c8v46v8v47ifromEnum pifromEnum p hifromEnum+ aifromEnum = c8v46v8v47ifromEnum+ hifromEnum (T.R January _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hifromEnum (T.R February _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hifromEnum (T.R March _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hifromEnum (T.R April _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hifromEnum (T.R May _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hifromEnum (T.R June _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hifromEnum (T.R July _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hifromEnum (T.R August _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ hifromEnum (T.R September _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ hifromEnum (T.R October _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ hifromEnum (T.R November _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ hifromEnum (T.R December _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ hifromEnum _ p = T.fatal p+ ginRange pinRange p+ = T.ufun2 c8v46v8v47inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hnfromEnum fy1 p))+ (T.uwrapForward p (hnfromEnum fy2 p)))+ (T.uwrapForward p (hnfromEnum fy3 p))+ where + gnfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Month Int)+ + hnfromEnum :: T.R Month -> T.RefExp -> T.R Int+ gnfromEnum pnfromEnum p+ = T.ufun1 c8v46v8v47nfromEnum pnfromEnum p hnfromEnum+ anfromEnum = c8v46v8v47nfromEnum+ hnfromEnum (T.R January _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hnfromEnum (T.R February _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hnfromEnum (T.R March _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hnfromEnum (T.R April _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hnfromEnum (T.R May _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hnfromEnum (T.R June _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hnfromEnum (T.R July _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hnfromEnum (T.R August _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (7))+ hnfromEnum (T.R September _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (8))+ hnfromEnum (T.R October _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (9))+ hnfromEnum (T.R November _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (10))+ hnfromEnum (T.R December _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (11))+ hnfromEnum _ p = T.fatal p+ +instance Read Month where+ greadsPrec preadsPrec p+ = T.ufun1 c8v50v8v53readsPrec preadsPrec p hreadsPrec+ where hreadsPrec fy1 p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p January aJanuary))+ (T.fromLitString T.mkNoSrcPos p "January")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p February+ aFebruary))+ (T.fromLitString T.mkNoSrcPos p "February")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p March aMarch))+ (T.fromLitString T.mkNoSrcPos p "March")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p April+ aApril))+ (T.fromLitString T.mkNoSrcPos p+ "April")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p May+ aMay))+ (T.fromLitString T.mkNoSrcPos p+ "May")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p June+ aJune))+ (T.fromLitString T.mkNoSrcPos p+ "June")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ July+ aJuly))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "July")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ August+ aAugust))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "August")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ September+ aSeptember))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "September")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ October+ aOctober))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "October")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ November+ aNovember))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "November")+ p))+ p))+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0+ T.mkNoSrcPos+ p+ December+ aDecember))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "December")+ p))+ p))))))))))))+ +instance Show Month where+ gshowsPrec pshowsPrec p+ = T.ufun2 c8v56v8v59showsPrec pshowsPrec p hshowsPrec+ where hshowsPrec fy1 (T.R January _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "January")+ hshowsPrec fy1 (T.R February _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "February")+ hshowsPrec fy1 (T.R March _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "March")+ hshowsPrec fy1 (T.R April _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "April")+ hshowsPrec fy1 (T.R May _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "May")+ hshowsPrec fy1 (T.R June _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "June")+ hshowsPrec fy1 (T.R July _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "July")+ hshowsPrec fy1 (T.R August _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "August")+ hshowsPrec fy1 (T.R September _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "September")+ hshowsPrec fy1 (T.R October _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "October")+ hshowsPrec fy1 (T.R November _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "November")+ hshowsPrec fy1 (T.R December _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "December")+ hshowsPrec _ _ p = T.fatal p+ +data Day = Sunday+ | Monday+ | Tuesday+ | Wednesday+ | Thursday+ | Friday+ | Saturday+ +instance T.WrapVal Day where+ wrapVal pwrapVal kwrapVal@Sunday p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aSunday)+ wrapVal pwrapVal kwrapVal@Monday p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aMonday)+ wrapVal pwrapVal kwrapVal@Tuesday p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aTuesday)+ wrapVal pwrapVal kwrapVal@Wednesday p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aWednesday)+ wrapVal pwrapVal kwrapVal@Thursday p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aThursday)+ wrapVal pwrapVal kwrapVal@Friday p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aFriday)+ wrapVal pwrapVal kwrapVal@Saturday p+ = T.R kwrapVal (T.mkValueUse p pwrapVal aSaturday)+ +instance Eq Day where+ (%==) !== p = T.ufun2 (+#$=$$=#$=$%==) (%==) p (*==)+ where (T.R Sunday _ *== T.R Sunday _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Monday _ *== T.R Monday _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Tuesday _ *== T.R Tuesday _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Wednesday _ *== T.R Wednesday _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Thursday _ *== T.R Thursday _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Friday _ *== T.R Friday _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (T.R Saturday _ *== T.R Saturday _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord Day where+ gcompare pcompare p+ = T.ufun2 c12v26v12v28compare pcompare p hcompare+ where hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c12v26v12v28localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c12v26v12v28localFromEnum+ hlocalFromEnum (T.R Sunday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Monday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Tuesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Wednesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Thursday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Friday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum (T.R Saturday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Enum Day where+ gfromEnum pfromEnum p+ = T.ufun1 c12v31v12v34fromEnum pfromEnum p hfromEnum+ where hfromEnum (T.R Sunday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hfromEnum (T.R Monday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hfromEnum (T.R Tuesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hfromEnum (T.R Wednesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hfromEnum (T.R Thursday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hfromEnum (T.R Friday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hfromEnum (T.R Saturday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hfromEnum _ p = T.fatal p+ gtoEnum ptoEnum p+ = T.ufun1 c12v31v12v34toEnum ptoEnum p htoEnum+ where htoEnum fv12v31v12v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v31v12v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h12v31v12v34n p)+ (y1toEnum fv12v31v12v34n p)+ where h12v31v12v34n p+ = T.con0 T.mkNoSrcPos p Sunday aSunday+ h12v31v12v34n p = y1toEnum fv12v31v12v34n p+ htoEnum fv12v31v12v34n p = y1toEnum fv12v31v12v34n p+ y1toEnum fv12v31v12v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v31v12v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h12v31v12v34n p)+ (y2toEnum fv12v31v12v34n p)+ where h12v31v12v34n p+ = T.con0 T.mkNoSrcPos p Monday aMonday+ h12v31v12v34n p = y2toEnum fv12v31v12v34n p+ y1toEnum fv12v31v12v34n p = y2toEnum fv12v31v12v34n p+ y2toEnum fv12v31v12v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v31v12v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h12v31v12v34n p)+ (y3toEnum fv12v31v12v34n p)+ where h12v31v12v34n p+ = T.con0 T.mkNoSrcPos p Tuesday aTuesday+ h12v31v12v34n p = y3toEnum fv12v31v12v34n p+ y2toEnum fv12v31v12v34n p = y3toEnum fv12v31v12v34n p+ y3toEnum fv12v31v12v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v31v12v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))))+ (h12v31v12v34n p)+ (y4toEnum fv12v31v12v34n p)+ where h12v31v12v34n p+ = T.con0 T.mkNoSrcPos p Wednesday aWednesday+ h12v31v12v34n p = y4toEnum fv12v31v12v34n p+ y3toEnum fv12v31v12v34n p = y4toEnum fv12v31v12v34n p+ y4toEnum fv12v31v12v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v31v12v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))))+ (h12v31v12v34n p)+ (y5toEnum fv12v31v12v34n p)+ where h12v31v12v34n p+ = T.con0 T.mkNoSrcPos p Thursday aThursday+ h12v31v12v34n p = y5toEnum fv12v31v12v34n p+ y4toEnum fv12v31v12v34n p = y5toEnum fv12v31v12v34n p+ y5toEnum fv12v31v12v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v31v12v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))))+ (h12v31v12v34n p)+ (y6toEnum fv12v31v12v34n p)+ where h12v31v12v34n p+ = T.con0 T.mkNoSrcPos p Friday aFriday+ h12v31v12v34n p = y6toEnum fv12v31v12v34n p+ y5toEnum fv12v31v12v34n p = y6toEnum fv12v31v12v34n p+ y6toEnum fv12v31v12v34n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v31v12v34n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))))+ (h12v31v12v34n p)+ (y7toEnum fv12v31v12v34n p)+ where h12v31v12v34n p+ = T.con0 T.mkNoSrcPos p Saturday aSaturday+ h12v31v12v34n p = y7toEnum fv12v31v12v34n p+ y6toEnum fv12v31v12v34n p = y7toEnum fv12v31v12v34n p+ y7toEnum _ p+ = T.uwrapForward p+ (herror+ (T.fromLitString T.mkNoSrcPos p+ "toEnum: argument out of bounds")+ p)+ genumFrom penumFrom p+ = T.ufun1 c12v31v12v34enumFrom penumFrom p henumFrom+ where henumFrom fy1 p+ = T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ fy1+ (T.con0 T.mkNoSrcPos p Saturday aSaturday)+ genumFromThen penumFromThen p+ = T.ufun2 c12v31v12v34enumFromThen penumFromThen p+ henumFromThen+ where henumFromThen fy1 fy2 p+ = T.uap3 T.mkNoSrcPos p+ (genumFromThenTo T.mkNoSrcPos p)+ fy1+ fy2+ (T.ucif p+ (T.uap2 T.mkNoSrcPos p ((!>=) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy2)+ (T.uap1 T.mkNoSrcPos p (gfromEnum T.mkNoSrcPos p)+ fy1))+ (T.con0 T.mkNoSrcPos p Saturday aSaturday)+ (T.con0 T.mkNoSrcPos p Sunday aSunday))+ +instance Bounded Day where+ gminBound pminBound p+ = T.uconstUse pminBound p sminBound+ sminBound+ = T.uconstDef p c12v37v12v43minBound+ (\ p -> T.con0 T.mkNoSrcPos p Sunday aSunday)+ gmaxBound pmaxBound p+ = T.uconstUse pmaxBound p smaxBound+ smaxBound+ = T.uconstDef p c12v37v12v43maxBound+ (\ p -> T.con0 T.mkNoSrcPos p Saturday aSaturday)+ +instance Ix Day where+ grange prange p+ = T.ufun1 c12v46v12v47range prange p hrange+ where hrange (T.R (T.Tuple2 fy1 fy2) _) p+ = T.uwrapForward p+ (hmap (grtoEnum T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p (genumFromTo T.mkNoSrcPos p)+ (T.uwrapForward p (hrfromEnum fy1 p))+ (T.uwrapForward p (hrfromEnum fy2 p)))+ p)+ where + grtoEnum ::+ T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Day)+ + hrtoEnum :: T.R Int -> T.RefExp -> T.R Day+ grtoEnum prtoEnum p+ = T.ufun1 c12v46v12v47rtoEnum prtoEnum p hrtoEnum+ artoEnum = c12v46v12v47rtoEnum+ hrtoEnum fv12v46v12v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v46v12v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0))))+ (h12v46v12v47n p)+ (y1rtoEnum fv12v46v12v47n p)+ where h12v46v12v47n p+ = T.con0 T.mkNoSrcPos p Sunday aSunday+ h12v46v12v47n p = y1rtoEnum fv12v46v12v47n p+ hrtoEnum fv12v46v12v47n p+ = y1rtoEnum fv12v46v12v47n p+ y1rtoEnum fv12v46v12v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v46v12v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (1))))+ (h12v46v12v47n p)+ (y2rtoEnum fv12v46v12v47n p)+ where h12v46v12v47n p+ = T.con0 T.mkNoSrcPos p Monday aMonday+ h12v46v12v47n p = y2rtoEnum fv12v46v12v47n p+ y1rtoEnum fv12v46v12v47n p+ = y2rtoEnum fv12v46v12v47n p+ y2rtoEnum fv12v46v12v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v46v12v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (2))))+ (h12v46v12v47n p)+ (y3rtoEnum fv12v46v12v47n p)+ where h12v46v12v47n p+ = T.con0 T.mkNoSrcPos p Tuesday aTuesday+ h12v46v12v47n p = y3rtoEnum fv12v46v12v47n p+ y2rtoEnum fv12v46v12v47n p+ = y3rtoEnum fv12v46v12v47n p+ y3rtoEnum fv12v46v12v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v46v12v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (3))))+ (h12v46v12v47n p)+ (y4rtoEnum fv12v46v12v47n p)+ where h12v46v12v47n p+ = T.con0 T.mkNoSrcPos p Wednesday aWednesday+ h12v46v12v47n p = y4rtoEnum fv12v46v12v47n p+ y3rtoEnum fv12v46v12v47n p+ = y4rtoEnum fv12v46v12v47n p+ y4rtoEnum fv12v46v12v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v46v12v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (4))))+ (h12v46v12v47n p)+ (y5rtoEnum fv12v46v12v47n p)+ where h12v46v12v47n p+ = T.con0 T.mkNoSrcPos p Thursday aThursday+ h12v46v12v47n p = y5rtoEnum fv12v46v12v47n p+ y4rtoEnum fv12v46v12v47n p+ = y5rtoEnum fv12v46v12v47n p+ y5rtoEnum fv12v46v12v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v46v12v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (5))))+ (h12v46v12v47n p)+ (y6rtoEnum fv12v46v12v47n p)+ where h12v46v12v47n p+ = T.con0 T.mkNoSrcPos p Friday aFriday+ h12v46v12v47n p = y6rtoEnum fv12v46v12v47n p+ y5rtoEnum fv12v46v12v47n p+ = y6rtoEnum fv12v46v12v47n p+ y6rtoEnum fv12v46v12v47n p+ = T.ucguard+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fv12v46v12v47n+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (6))))+ (h12v46v12v47n p)+ (T.fatal p)+ where h12v46v12v47n p+ = T.con0 T.mkNoSrcPos p Saturday aSaturday+ h12v46v12v47n p = T.fatal p+ y6rtoEnum _ p = T.fatal p+ + grfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Day Int)+ + hrfromEnum :: T.R Day -> T.RefExp -> T.R Int+ grfromEnum prfromEnum p+ = T.ufun1 c12v46v12v47rfromEnum prfromEnum p+ hrfromEnum+ arfromEnum = c12v46v12v47rfromEnum+ hrfromEnum (T.R Sunday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hrfromEnum (T.R Monday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hrfromEnum (T.R Tuesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hrfromEnum (T.R Wednesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hrfromEnum (T.R Thursday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hrfromEnum (T.R Friday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hrfromEnum (T.R Saturday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hrfromEnum _ p = T.fatal p+ gindex pindex p+ = T.ufun2 c12v46v12v47index pindex p hindex+ where hindex (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p ((!-) T.mkNoSrcPos p)+ (T.uwrapForward p (hifromEnum fy3 p))+ (T.uwrapForward p (hifromEnum fy2 p))+ where + gifromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Day Int)+ + hifromEnum :: T.R Day -> T.RefExp -> T.R Int+ gifromEnum pifromEnum p+ = T.ufun1 c12v46v12v47ifromEnum pifromEnum p+ hifromEnum+ aifromEnum = c12v46v12v47ifromEnum+ hifromEnum (T.R Sunday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hifromEnum (T.R Monday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hifromEnum (T.R Tuesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hifromEnum (T.R Wednesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hifromEnum (T.R Thursday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hifromEnum (T.R Friday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hifromEnum (T.R Saturday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hifromEnum _ p = T.fatal p+ ginRange pinRange p+ = T.ufun2 c12v46v12v47inRange pinRange p hinRange+ where hinRange (T.R (T.Tuple2 fy1 fy2) _) fy3 p+ = T.uap2 T.mkNoSrcPos p (ginRange T.mkNoSrcPos p)+ (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2+ (T.uwrapForward p (hnfromEnum fy1 p))+ (T.uwrapForward p (hnfromEnum fy2 p)))+ (T.uwrapForward p (hnfromEnum fy3 p))+ where + gnfromEnum ::+ T.RefSrcPos ->+ T.RefExp -> T.R (T.Fun Day Int)+ + hnfromEnum :: T.R Day -> T.RefExp -> T.R Int+ gnfromEnum pnfromEnum p+ = T.ufun1 c12v46v12v47nfromEnum pnfromEnum p+ hnfromEnum+ anfromEnum = c12v46v12v47nfromEnum+ hnfromEnum (T.R Sunday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ hnfromEnum (T.R Monday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (1))+ hnfromEnum (T.R Tuesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (2))+ hnfromEnum (T.R Wednesday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (3))+ hnfromEnum (T.R Thursday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (4))+ hnfromEnum (T.R Friday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (5))+ hnfromEnum (T.R Saturday _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (6))+ hnfromEnum _ p = T.fatal p+ +instance Read Day where+ greadsPrec preadsPrec p+ = T.ufun1 c12v50v12v53readsPrec preadsPrec p+ hreadsPrec+ where hreadsPrec fy1 p+ = T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p Sunday aSunday))+ (T.fromLitString T.mkNoSrcPos p "Sunday")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos p)+ (T.con0 T.mkNoSrcPos p Monday aMonday))+ (T.fromLitString T.mkNoSrcPos p "Monday")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p Tuesday+ aTuesday))+ (T.fromLitString T.mkNoSrcPos p+ "Tuesday")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p Wednesday+ aWednesday))+ (T.fromLitString T.mkNoSrcPos p+ "Wednesday")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p Thursday+ aThursday))+ (T.fromLitString T.mkNoSrcPos p+ "Thursday")+ p))+ p))+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.galt T.mkNoSrcPos p)+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ Friday+ aFriday))+ (T.fromLitString T.mkNoSrcPos p+ "Friday")+ p))+ p))+ (T.uwrapForward p+ (hreadParen+ (T.con0 T.mkNoSrcPos p+ Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.con0 T.mkNoSrcPos p+ Saturday+ aSaturday))+ (T.fromLitString T.mkNoSrcPos p+ "Saturday")+ p))+ p)))))))+ +instance Show Day where+ gshowsPrec pshowsPrec p+ = T.ufun2 c12v56v12v59showsPrec pshowsPrec p+ hshowsPrec+ where hshowsPrec fy1 (T.R Sunday _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Sunday")+ hshowsPrec fy1 (T.R Monday _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Monday")+ hshowsPrec fy1 (T.R Tuesday _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Tuesday")+ hshowsPrec fy1 (T.R Wednesday _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Wednesday")+ hshowsPrec fy1 (T.R Thursday _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Thursday")+ hshowsPrec fy1 (T.R Friday _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Friday")+ hshowsPrec fy1 (T.R Saturday _) p+ = T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "Saturday")+ hshowsPrec _ _ p = T.fatal p+ +data CalendarTime = CalendarTime{bctYear :: T.R Int,+ bctMonth :: T.R Month,+ bctDay, bctHour, bctMin, bctSec :: T.R Int,+ bctPicosec :: T.R Integer, bctWDay :: T.R Day,+ bctYDay :: T.R Int, bctTZName :: T.R String,+ bctTZ :: T.R Int, bctIsDST :: T.R Bool}+ +instance T.WrapVal CalendarTime where+ wrapVal pwrapVal+ kwrapVal@(CalendarTime (T.R _ z1wrapVal)+ (T.R _ z2wrapVal) (T.R _ z3wrapVal) (T.R _ z4wrapVal)+ (T.R _ z5wrapVal) (T.R _ z6wrapVal) (T.R _ z7wrapVal)+ (T.R _ z8wrapVal) (T.R _ z9wrapVal)+ (T.R _ z10wrapVal) (T.R _ z11wrapVal)+ (T.R _ z12wrapVal))+ p+ = T.R kwrapVal+ (T.mkValueApp12 p pwrapVal aCalendarTime z1wrapVal+ z2wrapVal+ z3wrapVal+ z4wrapVal+ z5wrapVal+ z6wrapVal+ z7wrapVal+ z8wrapVal+ z9wrapVal+ z10wrapVal+ z11wrapVal+ z12wrapVal)+gctYear pctYear p = T.ufun1 actYear pctYear p hctYear+hctYear (T.R z1ctYear _) p+ = T.projection T.mkNoSrcPos p (bctYear z1ctYear)+gctMonth pctMonth p+ = T.ufun1 actMonth pctMonth p hctMonth+hctMonth (T.R z1ctMonth _) p+ = T.projection T.mkNoSrcPos p (bctMonth z1ctMonth)+gctDay pctDay p = T.ufun1 actDay pctDay p hctDay+hctDay (T.R z1ctDay _) p+ = T.projection T.mkNoSrcPos p (bctDay z1ctDay)+gctHour pctHour p = T.ufun1 actHour pctHour p hctHour+hctHour (T.R z1ctHour _) p+ = T.projection T.mkNoSrcPos p (bctHour z1ctHour)+gctMin pctMin p = T.ufun1 actMin pctMin p hctMin+hctMin (T.R z1ctMin _) p+ = T.projection T.mkNoSrcPos p (bctMin z1ctMin)+gctSec pctSec p = T.ufun1 actSec pctSec p hctSec+hctSec (T.R z1ctSec _) p+ = T.projection T.mkNoSrcPos p (bctSec z1ctSec)+gctPicosec pctPicosec p+ = T.ufun1 actPicosec pctPicosec p hctPicosec+hctPicosec (T.R z1ctPicosec _) p+ = T.projection T.mkNoSrcPos p+ (bctPicosec z1ctPicosec)+gctWDay pctWDay p = T.ufun1 actWDay pctWDay p hctWDay+hctWDay (T.R z1ctWDay _) p+ = T.projection T.mkNoSrcPos p (bctWDay z1ctWDay)+gctYDay pctYDay p = T.ufun1 actYDay pctYDay p hctYDay+hctYDay (T.R z1ctYDay _) p+ = T.projection T.mkNoSrcPos p (bctYDay z1ctYDay)+gctTZName pctTZName p+ = T.ufun1 actTZName pctTZName p hctTZName+hctTZName (T.R z1ctTZName _) p+ = T.projection T.mkNoSrcPos p (bctTZName z1ctTZName)+gctTZ pctTZ p = T.ufun1 actTZ pctTZ p hctTZ+hctTZ (T.R z1ctTZ _) p+ = T.projection T.mkNoSrcPos p (bctTZ z1ctTZ)+gctIsDST pctIsDST p+ = T.ufun1 actIsDST pctIsDST p hctIsDST+hctIsDST (T.R z1ctIsDST _) p+ = T.projection T.mkNoSrcPos p (bctIsDST z1ctIsDST)+ +instance Eq CalendarTime where+ (%==) !== p = T.ufun2 (+$&=$#=$&=$$==) (%==) p (*==)+ where (T.R+ (CalendarTime fy1 fy2 fy3 fy4 fy5 fy6 fy7 fy8 fy9+ fy10 fy11 fy12)+ _+ *==+ T.R+ (CalendarTime fy13 fy14 fy15 fy16 fy17 fy18 fy19 fy20+ fy21 fy22 fy23 fy24)+ _)+ p+ = T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy1+ fy13)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy2+ fy14)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy3+ fy15)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy4+ fy16)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy5+ fy17)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy6+ fy18)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy7+ fy19)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy8+ fy20)+ (T.uwrapForward+ p+ ((Hat.PreludeBasic.*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy9+ fy21)+ (T.uwrapForward+ p+ ((Hat.PreludeBasic.*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy10+ fy22)+ (T.uwrapForward+ p+ ((Hat.PreludeBasic.*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy11+ fy23)+ (T.uwrapForward+ p+ ((Hat.PreludeBasic.*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy12+ fy24)+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue)+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord CalendarTime where+ gcompare pcompare p+ = T.ufun2 c24v25v24v27compare pcompare p hcompare+ where hcompare+ (T.R+ (CalendarTime fy3 fy4 fy5 fy6 fy7 fy8 fy9 fy10 fy11+ fy12 fy13 fy14)+ _)+ (T.R+ (CalendarTime fy15 fy16 fy17 fy18 fy19 fy20 fy21 fy22+ fy23 fy24 fy25 fy26)+ _)+ p+ = T.uccase T.mkNoSrcPos p+ (let v24v25v24v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v24v25v24v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v24v25v24v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v24v25v24v27v1+ (T.R EQ _) p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v24v25v24v27v1+ (T.R EQ+ _)+ p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v24v25v24v27v1+ (T.R+ EQ+ _)+ p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v24v25v24v27v1+ (T.R+ EQ+ _)+ p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v24v25v24v27v1+ (T.R+ EQ+ _)+ p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v24v25v24v27v1+ (T.R+ EQ+ _)+ p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v24v25v24v27v1+ (T.R+ EQ+ _)+ p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v24v25v24v27v1+ (T.R+ EQ+ _)+ p+ = T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy14+ fy26+ v24v25v24v27v1+ fy1+ p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v24v25v24v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy13+ fy25)+ v24v25v24v27v1+ fy1+ p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v24v25v24v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy12+ fy24)+ v24v25v24v27v1+ fy1+ p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v24v25v24v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy11+ fy23)+ v24v25v24v27v1+ fy1+ p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v24v25v24v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy10+ fy22)+ v24v25v24v27v1+ fy1+ p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v24v25v24v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy9+ fy21)+ v24v25v24v27v1+ fy1+ p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v24v25v24v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy8+ fy20)+ v24v25v24v27v1+ fy1 p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v24v25v24v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy7+ fy19)+ v24v25v24v27v1 fy1 p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in v24v25v24v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos+ p)+ fy6+ fy18)+ v24v25v24v27v1 fy1 p+ = T.projection T.mkNoSrcPos p+ fy1+ in v24v25v24v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos p)+ fy5+ fy17)+ v24v25v24v27v1 fy1 p+ = T.projection T.mkNoSrcPos p fy1+ in v24v25v24v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos p)+ fy4+ fy16)+ v24v25v24v27v1 fy1 p+ = T.projection T.mkNoSrcPos p fy1+ in v24v25v24v27v1)+ (T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p) fy3+ fy15)+ hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c24v25v24v27localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c24v25v24v27localFromEnum+ hlocalFromEnum+ (T.R (CalendarTime _ _ _ _ _ _ _ _ _ _ _ _) _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Read CalendarTime where+ greadsPrec preadsPrec p+ = T.ufun1 c24v30v24v33readsPrec preadsPrec p+ hreadsPrec+ where hreadsPrec fy1 p+ = T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.pa0+ CalendarTime+ T.cn12+ T.mkNoSrcPos+ p+ aCalendarTime))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "CalendarTime")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "{")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctYear")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctMonth")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctDay")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctHour")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctMin")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctSec")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctPicosec")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctWDay")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctYDay")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctTZName")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctTZ")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1 T.mkNoSrcPos p+ (greadsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString T.mkNoSrcPos p+ ",")+ p))+ (T.fromLitString T.mkNoSrcPos p+ "ctIsDST")+ p))+ (T.fromLitString T.mkNoSrcPos p "=")+ p))+ (T.uap1 T.mkNoSrcPos p (greadsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0)))))+ (T.fromLitString T.mkNoSrcPos p "}")+ p)+ +instance Show CalendarTime where+ gshowsPrec pshowsPrec p+ = T.ufun2 c24v36v24v39showsPrec pshowsPrec p+ hshowsPrec+ where hshowsPrec fy1+ (T.R+ (CalendarTime fy2 fy3 fy4 fy5 fy6 fy7 fy8 fy9 fy10+ fy11 fy12 fy13)+ _)+ p+ = T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "CalendarTime{"))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "ctYear"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy2))+ (T.uap1 T.mkNoSrcPos p (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "ctMonth"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy3))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "ctDay"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy4))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "ctHour"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (0)))+ fy5))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctMin"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (0)))+ fy6))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctSec"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos+ p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy7))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString+ T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctPicosec"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy8))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString+ T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctWDay"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec+ T.mkNoSrcPos+ p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy9))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos+ p)+ (T.conChar T.mkNoSrcPos p+ ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowString+ T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctYDay"))+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy10))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!.)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowString+ T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctTZName"))+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ '=')))+ (T.uap2+ T.mkNoSrcPos+ p+ (gshowsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy11))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!.)+ T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!.)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowString+ T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctTZ"))+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ '=')))+ (T.uap2+ T.mkNoSrcPos+ p+ (gshowsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy12))+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos+ p)+ (T.uap2+ T.mkNoSrcPos+ p+ ((!.)+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowString+ T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "ctIsDST"))+ (T.uap1+ T.mkNoSrcPos+ p+ (gshowChar+ T.mkNoSrcPos+ p)+ (T.conChar+ T.mkNoSrcPos+ p+ '=')))+ (T.uap2+ T.mkNoSrcPos+ p+ (gshowsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy13))))))))))))))+ (T.uap1 T.mkNoSrcPos p (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '}'))+ hshowsPrec _ _ p = T.fatal p+ +data TimeDiff = TimeDiff{btdYear, btdMonth, btdDay,+ btdHour, btdMin, btdSec :: T.R Int,+ btdPicosec :: T.R Integer}+ +instance T.WrapVal TimeDiff where+ wrapVal pwrapVal+ kwrapVal@(TimeDiff (T.R _ z1wrapVal)+ (T.R _ z2wrapVal) (T.R _ z3wrapVal) (T.R _ z4wrapVal)+ (T.R _ z5wrapVal) (T.R _ z6wrapVal)+ (T.R _ z7wrapVal))+ p+ = T.R kwrapVal+ (T.mkValueApp7 p pwrapVal aTimeDiff z1wrapVal+ z2wrapVal+ z3wrapVal+ z4wrapVal+ z5wrapVal+ z6wrapVal+ z7wrapVal)+gtdYear ptdYear p = T.ufun1 atdYear ptdYear p htdYear+htdYear (T.R z1tdYear _) p+ = T.projection T.mkNoSrcPos p (btdYear z1tdYear)+gtdMonth ptdMonth p+ = T.ufun1 atdMonth ptdMonth p htdMonth+htdMonth (T.R z1tdMonth _) p+ = T.projection T.mkNoSrcPos p (btdMonth z1tdMonth)+gtdDay ptdDay p = T.ufun1 atdDay ptdDay p htdDay+htdDay (T.R z1tdDay _) p+ = T.projection T.mkNoSrcPos p (btdDay z1tdDay)+gtdHour ptdHour p = T.ufun1 atdHour ptdHour p htdHour+htdHour (T.R z1tdHour _) p+ = T.projection T.mkNoSrcPos p (btdHour z1tdHour)+gtdMin ptdMin p = T.ufun1 atdMin ptdMin p htdMin+htdMin (T.R z1tdMin _) p+ = T.projection T.mkNoSrcPos p (btdMin z1tdMin)+gtdSec ptdSec p = T.ufun1 atdSec ptdSec p htdSec+htdSec (T.R z1tdSec _) p+ = T.projection T.mkNoSrcPos p (btdSec z1tdSec)+gtdPicosec ptdPicosec p+ = T.ufun1 atdPicosec ptdPicosec p htdPicosec+htdPicosec (T.R z1tdPicosec _) p+ = T.projection T.mkNoSrcPos p+ (btdPicosec z1tdPicosec)+ +instance Eq TimeDiff where+ (%==) !== p = T.ufun2 (+$>=$#=$>=$$==) (%==) p (*==)+ where (T.R (TimeDiff fy1 fy2 fy3 fy4 fy5 fy6 fy7) _+ *==+ T.R (TimeDiff fy8 fy9 fy10 fy11 fy12 fy13 fy14) _)+ p+ = T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy1+ fy8)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy2+ fy9)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==) T.mkNoSrcPos p)+ fy3+ fy10)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy4+ fy11)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy5+ fy12)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2 T.mkNoSrcPos p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy6+ fy13)+ (T.uwrapForward p+ ((Hat.PreludeBasic.*&&)+ (T.uap2+ T.mkNoSrcPos+ p+ ((Hat.PreludeBasic.!==)+ T.mkNoSrcPos+ p)+ fy7+ fy14)+ (T.con0+ T.mkNoSrcPos+ p+ Hat.PreludeBuiltinTypes.True+ Hat.PreludeBuiltinTypes.aTrue)+ p))+ p))+ p))+ p))+ p))+ p))+ p)+ (_ *== _) p+ = T.con0 T.mkNoSrcPos p Hat.PreludeBuiltinTypes.False+ Hat.PreludeBuiltinTypes.aFalse+ +instance Ord TimeDiff where+ gcompare pcompare p+ = T.ufun2 c29v25v29v27compare pcompare p hcompare+ where hcompare+ (T.R (TimeDiff fy3 fy4 fy5 fy6 fy7 fy8 fy9) _)+ (T.R (TimeDiff fy10 fy11 fy12 fy13 fy14 fy15 fy16) _)+ p+ = T.uccase T.mkNoSrcPos p+ (let v29v25v29v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v29v25v29v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v29v25v29v27v1 (T.R EQ _) p+ = T.uccase T.mkNoSrcPos p+ (let v29v25v29v27v1+ (T.R EQ _) p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v29v25v29v27v1+ (T.R EQ+ _)+ p+ = T.uccase+ T.mkNoSrcPos+ p+ (let v29v25v29v27v1+ (T.R+ EQ+ _)+ p+ = T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy9+ fy16+ v29v25v29v27v1+ fy1+ p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v29v25v29v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy8+ fy15)+ v29v25v29v27v1+ fy1 p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in+ v29v25v29v27v1)+ (T.uap2+ T.mkNoSrcPos+ p+ (gcompare+ T.mkNoSrcPos+ p)+ fy7+ fy14)+ v29v25v29v27v1 fy1 p+ = T.projection+ T.mkNoSrcPos+ p+ fy1+ in v29v25v29v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos+ p)+ fy6+ fy13)+ v29v25v29v27v1 fy1 p+ = T.projection T.mkNoSrcPos p+ fy1+ in v29v25v29v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos p)+ fy5+ fy12)+ v29v25v29v27v1 fy1 p+ = T.projection T.mkNoSrcPos p fy1+ in v29v25v29v27v1)+ (T.uap2 T.mkNoSrcPos p+ (gcompare T.mkNoSrcPos p)+ fy4+ fy11)+ v29v25v29v27v1 fy1 p+ = T.projection T.mkNoSrcPos p fy1+ in v29v25v29v27v1)+ (T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p) fy3+ fy10)+ hcompare fy1 fy2 p+ = T.uap2 T.mkNoSrcPos p (gcompare T.mkNoSrcPos p)+ (T.uwrapForward p (hlocalFromEnum fy1 p))+ (T.uwrapForward p (hlocalFromEnum fy2 p))+ where glocalFromEnum plocalFromEnum p+ = T.ufun1 c29v25v29v27localFromEnum plocalFromEnum p+ hlocalFromEnum+ alocalFromEnum = c29v25v29v27localFromEnum+ hlocalFromEnum (T.R (TimeDiff _ _ _ _ _ _ _) _) p+ = T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0))+ :: T.R Hat.PreludeBuiltinTypes.Int+ hlocalFromEnum _ p = T.fatal p+ +instance Read TimeDiff where+ greadsPrec preadsPrec p+ = T.ufun1 c29v30v29v33readsPrec preadsPrec p+ hreadsPrec+ where hreadsPrec fy1 p+ = T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.gthenAp T.mkNoSrcPos p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap2 T.mkNoSrcPos p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap2+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gthenAp+ T.mkNoSrcPos+ p)+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uwrapForward+ p+ (Hat.PreludeBasic.hthenLex+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gyield+ T.mkNoSrcPos+ p)+ (T.pa0+ TimeDiff+ T.cn7+ T.mkNoSrcPos+ p+ aTimeDiff))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "TimeDiff")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "{")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdYear")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdMonth")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdDay")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdHour")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdMin")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1+ T.mkNoSrcPos+ p+ (greadsPrec+ T.mkNoSrcPos+ p)+ (T.uap1+ T.mkNoSrcPos+ p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString+ T.mkNoSrcPos+ p+ ",")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdSec")+ p))+ (T.fromLitString+ T.mkNoSrcPos+ p+ "=")+ p))+ (T.uap1 T.mkNoSrcPos p+ (greadsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))))+ (T.fromLitString T.mkNoSrcPos p+ ",")+ p))+ (T.fromLitString T.mkNoSrcPos p+ "tdPicosec")+ p))+ (T.fromLitString T.mkNoSrcPos p "=")+ p))+ (T.uap1 T.mkNoSrcPos p (greadsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)+ (T.conInteger T.mkNoSrcPos p (0)))))+ (T.fromLitString T.mkNoSrcPos p "}")+ p)+ +instance Show TimeDiff where+ gshowsPrec pshowsPrec p+ = T.ufun2 c29v36v29v39showsPrec pshowsPrec p+ hshowsPrec+ where hshowsPrec fy1+ (T.R (TimeDiff fy2 fy3 fy4 fy5 fy6 fy7 fy8) _) p+ = T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p "TimeDiff{"))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "tdYear"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy2))+ (T.uap1 T.mkNoSrcPos p (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "tdMonth"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy3))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "tdDay"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p (0)))+ fy4))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString T.mkNoSrcPos p+ "tdHour"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (0)))+ fy5))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdMin"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (0)))+ fy6))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos+ p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdSec"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos+ p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger+ T.mkNoSrcPos+ p+ (0)))+ fy7))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ ',')))+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap2 T.mkNoSrcPos p+ ((!.) T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (gshowString T.mkNoSrcPos p)+ (T.fromLitString+ T.mkNoSrcPos+ p+ "tdPicosec"))+ (T.uap1 T.mkNoSrcPos p+ (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p+ '=')))+ (T.uap2 T.mkNoSrcPos p+ (gshowsPrec T.mkNoSrcPos p)+ (T.uap1 T.mkNoSrcPos p+ (Hat.PreludeBasic.gfromInteger+ T.mkNoSrcPos+ p)+ (T.conInteger T.mkNoSrcPos p+ (0)))+ fy8)))))))))+ (T.uap1 T.mkNoSrcPos p (gshowChar T.mkNoSrcPos p)+ (T.conChar T.mkNoSrcPos p '}'))+ hshowsPrec _ _ p = T.fatal p+aApril+ = T.mkConstructor tTimeBuiltinTypes 50049 50053 3 (0)+ "April"+aAugust+ = T.mkConstructor tTimeBuiltinTypes 60049 60054 3 (0)+ "August"+aCalendarTime+ = T.mkConstructorWFields tTimeBuiltinTypes 140021+ 140032+ 3+ (12)+ "CalendarTime"+ ((:) actYear+ ((:) actMonth+ ((:) actDay+ ((:) actHour+ ((:) actMin+ ((:) actSec+ ((:) actPicosec+ ((:) actWDay+ ((:) actYDay+ ((:) actTZName+ ((:) actTZ ((:) actIsDST []))))))))))))+aDecember+ = T.mkConstructor tTimeBuiltinTypes 70049 70056 3 (0)+ "December"+aFebruary+ = T.mkConstructor tTimeBuiltinTypes 50027 50034 3 (0)+ "February"+aFriday+ = T.mkConstructor tTimeBuiltinTypes 110015 110020 3+ (0)+ "Friday"+aJanuary+ = T.mkConstructor tTimeBuiltinTypes 50015 50021 3 (0)+ "January"+aJuly+ = T.mkConstructor tTimeBuiltinTypes 60038 60041 3 (0)+ "July"+aJune+ = T.mkConstructor tTimeBuiltinTypes 60027 60030 3 (0)+ "June"+aMarch+ = T.mkConstructor tTimeBuiltinTypes 50038 50042 3 (0)+ "March"+aMay+ = T.mkConstructor tTimeBuiltinTypes 60015 60017 3 (0)+ "May"+aMonday+ = T.mkConstructor tTimeBuiltinTypes 100024 100029 3+ (0)+ "Monday"+aNovember+ = T.mkConstructor tTimeBuiltinTypes 70038 70045 3 (0)+ "November"+aOctober+ = T.mkConstructor tTimeBuiltinTypes 70027 70033 3 (0)+ "October"+aSaturday+ = T.mkConstructor tTimeBuiltinTypes 110024 110031 3+ (0)+ "Saturday"+aSeptember+ = T.mkConstructor tTimeBuiltinTypes 70015 70023 3 (0)+ "September"+aSunday+ = T.mkConstructor tTimeBuiltinTypes 100015 100020 3+ (0)+ "Sunday"+aThursday+ = T.mkConstructor tTimeBuiltinTypes 100057 100064 3+ (0)+ "Thursday"+aTimeDiff+ = T.mkConstructorWFields tTimeBuiltinTypes 260017+ 260024+ 3+ (7)+ "TimeDiff"+ ((:) atdYear+ ((:) atdMonth+ ((:) atdDay+ ((:) atdHour+ ((:) atdMin ((:) atdSec ((:) atdPicosec [])))))))+aTuesday+ = T.mkConstructor tTimeBuiltinTypes 100034 100040 3+ (0)+ "Tuesday"+aWednesday+ = T.mkConstructor tTimeBuiltinTypes 100045 100053 3+ (0)+ "Wednesday"+actDay+ = T.mkVariable tTimeBuiltinTypes 170017 170021 3 (1)+ "ctDay"+ Prelude.False+actHour+ = T.mkVariable tTimeBuiltinTypes 170024 170029 3 (1)+ "ctHour"+ Prelude.False+actIsDST+ = T.mkVariable tTimeBuiltinTypes 230017 230023 3 (1)+ "ctIsDST"+ Prelude.False+actMin+ = T.mkVariable tTimeBuiltinTypes 170032 170036 3 (1)+ "ctMin"+ Prelude.False+actMonth+ = T.mkVariable tTimeBuiltinTypes 160017 160023 3 (1)+ "ctMonth"+ Prelude.False+actPicosec+ = T.mkVariable tTimeBuiltinTypes 180017 180025 3 (1)+ "ctPicosec"+ Prelude.False+actSec+ = T.mkVariable tTimeBuiltinTypes 170039 170043 3 (1)+ "ctSec"+ Prelude.False+actTZ+ = T.mkVariable tTimeBuiltinTypes 220017 220020 3 (1)+ "ctTZ"+ Prelude.False+actTZName+ = T.mkVariable tTimeBuiltinTypes 210017 210024 3 (1)+ "ctTZName"+ Prelude.False+actWDay+ = T.mkVariable tTimeBuiltinTypes 190017 190022 3 (1)+ "ctWDay"+ Prelude.False+actYDay+ = T.mkVariable tTimeBuiltinTypes 200017 200022 3 (1)+ "ctYDay"+ Prelude.False+actYear+ = T.mkVariable tTimeBuiltinTypes 150017 150022 3 (1)+ "ctYear"+ Prelude.False+atdDay+ = T.mkVariable tTimeBuiltinTypes 270034 270038 3 (1)+ "tdDay"+ Prelude.False+atdHour+ = T.mkVariable tTimeBuiltinTypes 270041 270046 3 (1)+ "tdHour"+ Prelude.False+atdMin+ = T.mkVariable tTimeBuiltinTypes 270049 270053 3 (1)+ "tdMin"+ Prelude.False+atdMonth+ = T.mkVariable tTimeBuiltinTypes 270025 270031 3 (1)+ "tdMonth"+ Prelude.False+atdPicosec+ = T.mkVariable tTimeBuiltinTypes 280017 280025 3 (1)+ "tdPicosec"+ Prelude.False+atdSec+ = T.mkVariable tTimeBuiltinTypes 270056 270060 3 (1)+ "tdSec"+ Prelude.False+atdYear+ = T.mkVariable tTimeBuiltinTypes 270017 270022 3 (1)+ "tdYear"+ Prelude.False+(+@=$$=@=$%==)+ = T.mkVariable tTimeBuiltinTypes 80022 80023 3 (-1)+ "=="+ Prelude.False+c8v26v8v28localFromEnum+ = T.mkVariable tTimeBuiltinTypes 80026 80028 3 (1)+ "localFromEnum"+ Prelude.True+c8v26v8v28compare+ = T.mkVariable tTimeBuiltinTypes 80026 80028 3 (-1)+ "compare"+ Prelude.False+c8v31v8v34enumFrom+ = T.mkVariable tTimeBuiltinTypes 80031 80034 3 (-1)+ "enumFrom"+ Prelude.False+c8v31v8v34enumFromThen+ = T.mkVariable tTimeBuiltinTypes 80031 80034 3 (-1)+ "enumFromThen"+ Prelude.False+c8v31v8v34fromEnum+ = T.mkVariable tTimeBuiltinTypes 80031 80034 3 (-1)+ "fromEnum"+ Prelude.False+c8v31v8v34toEnum+ = T.mkVariable tTimeBuiltinTypes 80031 80034 3 (-1)+ "toEnum"+ Prelude.False+c8v37v8v43maxBound+ = T.mkVariable tTimeBuiltinTypes 80037 80043 3 (-1)+ "maxBound"+ Prelude.False+c8v37v8v43minBound+ = T.mkVariable tTimeBuiltinTypes 80037 80043 3 (-1)+ "minBound"+ Prelude.False+c8v46v8v47rfromEnum+ = T.mkVariable tTimeBuiltinTypes 80046 80047 3 (1)+ "rfromEnum"+ Prelude.True+c8v46v8v47rtoEnum+ = T.mkVariable tTimeBuiltinTypes 80046 80047 3 (1)+ "rtoEnum"+ Prelude.True+c8v46v8v47ifromEnum+ = T.mkVariable tTimeBuiltinTypes 80046 80047 3 (1)+ "ifromEnum"+ Prelude.True+c8v46v8v47nfromEnum+ = T.mkVariable tTimeBuiltinTypes 80046 80047 3 (1)+ "nfromEnum"+ Prelude.True+c8v46v8v47inRange+ = T.mkVariable tTimeBuiltinTypes 80046 80047 3 (-1)+ "inRange"+ Prelude.False+c8v46v8v47index+ = T.mkVariable tTimeBuiltinTypes 80046 80047 3 (-1)+ "index"+ Prelude.False+c8v46v8v47range+ = T.mkVariable tTimeBuiltinTypes 80046 80047 3 (-1)+ "range"+ Prelude.False+c8v50v8v53readsPrec+ = T.mkVariable tTimeBuiltinTypes 80050 80053 3 (-1)+ "readsPrec"+ Prelude.False+c8v56v8v59showsPrec+ = T.mkVariable tTimeBuiltinTypes 80056 80059 3 (-1)+ "showsPrec"+ Prelude.False+(+#$=$$=#$=$%==)+ = T.mkVariable tTimeBuiltinTypes 120022 120023 3 (-1)+ "=="+ Prelude.False+c12v26v12v28localFromEnum+ = T.mkVariable tTimeBuiltinTypes 120026 120028 3 (1)+ "localFromEnum"+ Prelude.True+c12v26v12v28compare+ = T.mkVariable tTimeBuiltinTypes 120026 120028 3 (-1)+ "compare"+ Prelude.False+c12v31v12v34enumFrom+ = T.mkVariable tTimeBuiltinTypes 120031 120034 3 (-1)+ "enumFrom"+ Prelude.False+c12v31v12v34enumFromThen+ = T.mkVariable tTimeBuiltinTypes 120031 120034 3 (-1)+ "enumFromThen"+ Prelude.False+c12v31v12v34fromEnum+ = T.mkVariable tTimeBuiltinTypes 120031 120034 3 (-1)+ "fromEnum"+ Prelude.False+c12v31v12v34toEnum+ = T.mkVariable tTimeBuiltinTypes 120031 120034 3 (-1)+ "toEnum"+ Prelude.False+c12v37v12v43maxBound+ = T.mkVariable tTimeBuiltinTypes 120037 120043 3 (-1)+ "maxBound"+ Prelude.False+c12v37v12v43minBound+ = T.mkVariable tTimeBuiltinTypes 120037 120043 3 (-1)+ "minBound"+ Prelude.False+c12v46v12v47rfromEnum+ = T.mkVariable tTimeBuiltinTypes 120046 120047 3 (1)+ "rfromEnum"+ Prelude.True+c12v46v12v47rtoEnum+ = T.mkVariable tTimeBuiltinTypes 120046 120047 3 (1)+ "rtoEnum"+ Prelude.True+c12v46v12v47ifromEnum+ = T.mkVariable tTimeBuiltinTypes 120046 120047 3 (1)+ "ifromEnum"+ Prelude.True+c12v46v12v47nfromEnum+ = T.mkVariable tTimeBuiltinTypes 120046 120047 3 (1)+ "nfromEnum"+ Prelude.True+c12v46v12v47inRange+ = T.mkVariable tTimeBuiltinTypes 120046 120047 3 (-1)+ "inRange"+ Prelude.False+c12v46v12v47index+ = T.mkVariable tTimeBuiltinTypes 120046 120047 3 (-1)+ "index"+ Prelude.False+c12v46v12v47range+ = T.mkVariable tTimeBuiltinTypes 120046 120047 3 (-1)+ "range"+ Prelude.False+c12v50v12v53readsPrec+ = T.mkVariable tTimeBuiltinTypes 120050 120053 3 (-1)+ "readsPrec"+ Prelude.False+c12v56v12v59showsPrec+ = T.mkVariable tTimeBuiltinTypes 120056 120059 3 (-1)+ "showsPrec"+ Prelude.False+(+$&=$#=$&=$$==)+ = T.mkVariable tTimeBuiltinTypes 240021 240022 3 (-1)+ "=="+ Prelude.False+c24v25v24v27localFromEnum+ = T.mkVariable tTimeBuiltinTypes 240025 240027 3 (1)+ "localFromEnum"+ Prelude.True+c24v25v24v27compare+ = T.mkVariable tTimeBuiltinTypes 240025 240027 3 (-1)+ "compare"+ Prelude.False+c24v30v24v33readsPrec+ = T.mkVariable tTimeBuiltinTypes 240030 240033 3 (-1)+ "readsPrec"+ Prelude.False+c24v36v24v39showsPrec+ = T.mkVariable tTimeBuiltinTypes 240036 240039 3 (-1)+ "showsPrec"+ Prelude.False+(+$>=$#=$>=$$==)+ = T.mkVariable tTimeBuiltinTypes 290021 290022 3 (-1)+ "=="+ Prelude.False+c29v25v29v27localFromEnum+ = T.mkVariable tTimeBuiltinTypes 290025 290027 3 (1)+ "localFromEnum"+ Prelude.True+c29v25v29v27compare+ = T.mkVariable tTimeBuiltinTypes 290025 290027 3 (-1)+ "compare"+ Prelude.False+c29v30v29v33readsPrec+ = T.mkVariable tTimeBuiltinTypes 290030 290033 3 (-1)+ "readsPrec"+ Prelude.False+c29v36v29v39showsPrec+ = T.mkVariable tTimeBuiltinTypes 290036 290039 3 (-1)+ "showsPrec"+ Prelude.False+p = T.mkRoot+tTimeBuiltinTypes+ = T.mkModule "TimeBuiltinTypes" "TimeBuiltinTypes.hs"+ Prelude.False
− compiler98/AssocTree.hs
@@ -1,58 +0,0 @@-module AssocTree- ( AssocTree- , Tree- , initAT -- :: AssocTree k v- , listAT -- :: AssocTree k v -> [(k,v)]- , reorderAT -- :: (AssocTree k v -> (j,u) -> AssocTree k v)- -- -> AssocTree j u -> AssocTree k v- , addAT -- :: Ord k =>- -- AssocTree k v -> (v->v->v) -> k -> v -> AssocTree k v- , lookupAT -- :: Ord a =>- -- AssocTree k v -> k -> Maybe v- , updateAT -- :: Ord k =>- -- AssocTree k v -> k -> (v->v) -> AssocTree k v- , mapAT -- :: (v -> w) -> AssocTree k v -> AssocTree k w- ) where--import Tree234--newtype AssocTree k v = AssocTree (Tree (k,v))--instance (Show k, Show v) => Show (AssocTree k v) where- show t = show (listAT t)--initAT :: AssocTree k v-initAT = AssocTree initTree--listAT :: AssocTree k v -> [(k,v)]-listAT (AssocTree t) = treeMapList (:) t--reorderAT :: (AssocTree k v -> (j,u) -> AssocTree k v)- -> AssocTree j u -> AssocTree k v-reorderAT translate t = - foldl translate initAT (listAT t) --cmp1 key (key',value) = compare key key'--cmp2 key _ (key',value) = compare key key'--addAT :: Ord k => AssocTree k v -> (v->v->v) -> k -> v -> AssocTree k v-addAT (AssocTree t) comb key value = - AssocTree $ treeAdd combine (cmp2 key) (key,value) t- where- combine (k1,v1) (k2,v2) = (k2,comb v1 v2)--lookupAT :: Ord k => AssocTree k v -> k -> Maybe v-lookupAT (AssocTree t) key = - treeSearch Nothing ok (cmp1 key) t- where- ok (key,value) = Just value--updateAT :: Ord k => AssocTree k v -> k -> (v->v) -> AssocTree k v-updateAT (AssocTree t) key upd = - AssocTree $ treeUpdate update (cmp1 key) t- where- update (k1,v1) = (k1,upd v1)--mapAT :: (v -> w) -> AssocTree k v -> AssocTree k w-mapAT f (AssocTree t) = AssocTree $ treeMap (\(k, v) -> (k, f v)) t
− compiler98/Error.hs
@@ -1,42 +0,0 @@-module Error where--import Control.Exception-import Data.List-import System.IO-import System.Exit--exit :: IO a-exit = exitWith (ExitFailure 1)--can'tOpen :: String -> IOException -> IO a-can'tOpen filename ioError =- do- hPutStr stderr ("Can't open "++filename ++ "\n")- exit--errorStr :: String -> String -> String-errorStr filename msg = "In file "++filename++":\n"++msg ++ "\n"--can'tOpenStr :: String -> [String] -> a -> String-can'tOpenStr name [filename] ioerror =- "Can't open "++ filename ++ " when trying to read "++name++".\n"-can'tOpenStr name filename ioerror =- "Can't open any of:\n "++ concatMap (++"\n ") (nub filename)- ++ "when trying to read "++name++".\n"--errorMsg :: String -> String -> IO a-errorMsg filename msg =- do- hPutStr stderr (errorStr filename msg)- exit--can'tOpenAnyOf :: String -> [String] -> a -> IO b-can'tOpenAnyOf name filename ioError =- do- hPutStr stderr (can'tOpenStr name filename ioError)- exit--errorLC :: Int -> Int -> String -> a-errorLC l c msg =- error ("Error at line "++show l ++", column " ++ show c ++ ": " ++ msg++"\n")-
− compiler98/Extra.hs
@@ -1,294 +0,0 @@-module Extra(module Extra, module HbcOnly, module Data.Maybe, trace) where--import HbcOnly-import qualified Control.Exception (catch, IOException)-import Data.Char-import Data.List-import Data.Maybe-import System.IO (hPutStr,stderr)-import System.Exit (exitFailure)-import SysDeps (trace)--mapListSnd :: (a -> b) -> [(c,a)] -> [(c,b)]-mapListSnd f = map (mapSnd f)--foldls f z [] = z-foldls f z (x:xs) =- let z' = f z x- in seq z' (foldl f z' xs)--strace msg c = if length msg == 0- then c- else trace msg c--warning s v = trace ("Warning: "++s) v---warning s v = v--fstOf a b = a-sndOf a b = b--snub [] = []-snub (x:xs) = x:snub (filter (/=x) xs)--pair x y = (x,y)-triple x y z = (x,y,z)---- #if !defined(__HASKELL98__)--- isNothing Nothing = True--- isNothing _ = False--- #endif--dropJust (Just v) = v--isLeft (Left a) = True-isLeft _ = False--isRight (Right a) = True-isRight _ = False--dropLeft (Left a) = a--dropRight (Right a) = a--dropEither (Left x) = x-dropEither (Right x) = x--mapPair f g (x,y) = (f x,g y)-mapFst f (x,y) = (f x, y)-mapSnd g (x,y) = ( x,g y)--findLeft l = - f [] l- where- f a [] = Right (reverse a)- f a (Left e:r) = Left e- f a (Right x:r) = f (x:a) r--eitherMap f [] = Right []-eitherMap f (x:xs) =- case f x of- Left err -> Left err- Right x' -> case eitherMap f xs of- Left err -> Left err- Right xs' -> Right (x':xs') ---jRight :: Int -> [Char] -> [Char]-jRight n s = case length s of- ns -> if ns > n then s- else space (n-ns) ++ s--jLeft :: Int -> [Char] -> [Char]-jLeft n s = case length s of- ns -> if ns > n then s- else s ++ space (n-ns)--partitions f [] = []-partitions f (x:xs) =- gB f (f x) [x] xs- where- gB f v a [] = [reverse a]- gB f v a (x:xs) = if f x == v- then gB f v (x:a) xs- else reverse a : gB f (f x) [x] xs--------------mix s [] = ""-mix s xs = foldl1 (\x y-> x ++ s ++ y) xs--mixSpace = mix " "-mixComma = mix ","-mixLine = mix "\n"--mixCommaAnd [x] = x-mixCommaAnd [x,y] = x ++ " and " ++ y-mixCommaAnd (x:xs) = x ++ ", " ++ mixCommaAnd xs--rep 0 c = []-rep n c = c:rep (n-1) c---------------------assoc :: Eq a => a -> [(a,b)] -> b-assoc a [] = error "assoc!"-assoc a ((k,v):kvs) = if a == k then v- else assoc a kvs--assocDef :: Eq a => [(a,b)] -> b -> a -> b-assocDef [] d a = d-assocDef ((k,v):kvs) d a = if a == k then v- else assocDef kvs d a------------------------- abstract type for storing the position of a syntactic construct in a file,--- that is, line and column number of both start and end positions.--data Pos = P !Int !Int--- line * 10000 + column of start, line * 10000 + column of end--- both lines and column start at 1--- allow lines and coluns 0 to mark nonexisting position--type Line = Int-type Column = Int---- used in STGcode to get encoded start position--- STGcode should be changed so that this function can disappear-pos2Int :: Pos -> Int -pos2Int (P s _) = s--toPos :: Line -> Column -> Line -> Column -> Pos-toPos l1 c1 l2 c2 = P (l1*10000 + c1) (l2*10000 + c2) ---- create a virtual position out of a real one-insertPos :: Pos -> Pos-insertPos (P s e) = P s 0--noPos :: Pos-noPos = P 0 0--mergePos :: Pos -> Pos -> Pos--- combines positions by determining minimal one that covers both--- positions may or may not overlap--- does not assume that first pos really earlier --- nonexisting positions are ignored-mergePos (P s1 e1) (P s2 e2) =- if e1 == 0 then P s2 e2- else if e2 == 0 then P s1 e1- else P (min s1 s2) (max e1 e2)--mergePoss :: [Pos] -> Pos--- merge a list of positions-mergePoss = foldr mergePos noPos--fromPos :: Pos -> (Line,Column,Line,Column)-fromPos (P s e) =- let l1 = s `div` 10000- c1 = s - l1*10000- l2 = e `div` 10000- c2 = e - l2*10000- in (l1,c1,l2,c2)--strPos :: Pos -> String-strPos p = - case fromPos p of- (0,0,0,0) -> "nopos"- (l1,c1,0,0) -> show l1 ++ ':' : show c1- (l1,c1,l2,c2) | l1==l2 && c1==c2- -> show l1 ++ ':' : show c1- (l1,c1,l2,c2) -> show l1 ++ ':' : show c1 ++ '-' : show l2 ++ ':' : show c2--instance Show Pos where- show p = strPos p--instance Eq Pos where- P s1 e1 == P s2 e2 = (s1 == s2) && (e1 == e2)--instance Ord Pos where - -- for ordering error messages of parser- -- and determining minimum of two positions- -- nonexisting positions are avoided- P s1 e1 > P s2 e2 = - s1 > s2 || (s1 == s2 && e1 > e2)- min (P s1 e1) (P s2 e2) =- if e1 == 0 - then if e2 == 0 - then if s1 <= s2 then P s1 e1 else P s2 e2- else P s2 e2- else if e2 == 0- then P s1 e1- else if (s1 < s2) || (s1 == s2 && e1 <= e2)- then P s1 e1- else P s2 e2 -------------------------data SplitIntegral = SplitPos [Int]- | SplitZero- | SplitNeg [Int]---- splitIntegral :: (Integral a) => a -> SplitIntegral-splitIntegral n =- if n < 0- then SplitNeg (split' (-n))- else if n == 0 then SplitZero- else SplitPos (split' n)- where- split' n = if n == 0 then []- else fromInteger (toInteger (n `mod` 256)) : split' (n `div` 256)-----------------------type Set a = [a]--emptySet = []--singletonSet a = [a]--listSet xs = (nub xs)--unionSet xs ys = unionSet' xs ys- where unionSet' [] ys = ys- unionSet' (x:xs) ys | x `elem` ys = unionSet' xs ys- | otherwise = x:unionSet' xs ys--removeSet xs ys = filter (`notElem` ys) xs-----------------------strChr' :: Char -> Char -> String -strChr' del '\\' = "\\\\"-strChr' del '\n' = "\\n"-strChr' del '\t' = "\\t"-strChr' del c = if isPrint c - then if c == del - then "\\" ++ [c]- else [c]- else "\\o" ++ map (toEnum . (+(fromEnum '0')))- (ctoo (fromEnum c))- where ctoo c = [(c `div` 64),(c `div` 8) `mod` 8,c `mod` 8]- -strChr :: Char -> String -strChr c = "'" ++ strChr' '\'' c ++ "'"--strStr :: String -> String -strStr s = "\"" ++ concatMap (strChr' '"') s ++ "\""--------------------------showErr :: (Pos,String,[String]) -> String-showErr (pos,token,strs) =- strPos pos ++ (" Found " ++ token ++- case nub strs of- [] -> " but no token can be accepted here."- [x] -> " but expected a " ++ x- xs -> " but expected one of " ++ mix " " xs)---------------------------isNhcOp :: Char -> Bool-isNhcOp '~' = True; isNhcOp '=' = True; isNhcOp '*' = True-isNhcOp '%' = True; isNhcOp '/' = True; isNhcOp ':' = True-isNhcOp '+' = True; isNhcOp '@' = True; isNhcOp '.' = True-isNhcOp '>' = True; isNhcOp '&' = True; isNhcOp '$' = True-isNhcOp '|' = True; isNhcOp '-' = True-isNhcOp '!' = True; isNhcOp '<' = True-isNhcOp '^' = True; isNhcOp '#' = True; isNhcOp '?' = True-isNhcOp '\\' = True-isNhcOp _ = False----------------------------- Given a list of filenames, return filename and its content of first file--- that was read successfully (intention: other filenames may not exist)--readFirst :: [String] -> IO (String,String)--readFirst [] = do- hPutStr stderr "Fail no filenames, probably no -I or -P" - exitFailure-readFirst [x] = do - finput <- readFile x- return (x,finput)-readFirst (x:xs) =- Control.Exception.catch (do finput <- readFile x- return (x,finput))- (\ y -> (y :: Control.Exception.IOException) `seq` readFirst xs)--------------------------
− compiler98/HbcOnly.hs
@@ -1,12 +0,0 @@-module HbcOnly where--space :: Int -> String-space n = if n == 0 then ""- else ' ':space (n-1)--fst3 (a,_,_) = a-snd3 (_,a,_) = a-thd3 (_,_,a) = a--makeDouble :: Integer -> Double -> Int -> Double-makeDouble i f e = (fromIntegral i +f) * (10.0 ^^ e)
− compiler98/Id.hs
@@ -1,12 +0,0 @@-{- ----------------------------------------------------------------------------This is the start for an abstract data type Id.-We need instance Eq Id and instance Ord Id.-Furthermore an IdSupply.-However, currently Int is used for that purpose and shall slowly be-replaced by the new type Id.--}-module Id(Id) where--type Id = Int--{- End Module Id ------------------------------------------------------------}
− compiler98/IdKind.hs
@@ -1,60 +0,0 @@-{- ----------------------------------------------------------------------------Defines data type IdKind which tells of which kind an identifier is, -e.g. a module identifier or a class identifier--}--module IdKind(IdKind(..)) where--data IdKind = Var- | Arg- | Method- | TVar- | Con- | TCon- | TSyn- | TClass- | TC- | Modid- | MethodInstance- | MethodDefault- | Field--ordIdKind :: IdKind -> Int-ordIdKind Var = 1-ordIdKind Arg = 1-ordIdKind Method = 1-ordIdKind TVar = 2-ordIdKind Con = 3-ordIdKind TCon = 4-ordIdKind TSyn = 4-ordIdKind TClass = 4-ordIdKind TC = 4-ordIdKind Modid = 5-ordIdKind MethodInstance = 6-ordIdKind MethodDefault = 7-ordIdKind Field = 8--instance Eq IdKind where- a == b = ordIdKind a == ordIdKind b--instance Ord IdKind where- a <= b = ordIdKind a <= ordIdKind b- a < b = ordIdKind a < ordIdKind b- compare a b = compare (ordIdKind a) (ordIdKind b)---instance Show IdKind where- showsPrec d Var = ("Identifier"++)- showsPrec d Arg = ("Argument"++)- showsPrec d Method = ("Method"++)- showsPrec d TVar = ("Typevar"++)- showsPrec d Con = ("Constructor"++)- showsPrec d TC = ("Type constructor/class"++)- showsPrec d TCon = ("Type constructor"++)- showsPrec d TSyn = ("Type synonym"++)- showsPrec d TClass = ("Type class"++)- showsPrec d Modid = ("Module identifier"++)- showsPrec d MethodDefault = ("Default method"++)- showsPrec d MethodInstance = ("Instance method"++)- showsPrec d Field = ("Field"++)-
− compiler98/Info.hs
@@ -1,498 +0,0 @@-{- ----------------------------------------------------------------------------Central data structures of the symbol table--}-module Info(module Info, IdKind,TokenId,NewType,InfixClass(..),Pos- ,AssocTree,Tree) where--import IdKind(IdKind)-import TokenId(TokenId)-import NT-import Extra(Pos,sndOf,strace)-import SysDeps(PackedString)-import AssocTree-import Syntax(InfixClass(..))-import Id(Id)--data IE = IEnone | IEsel | IEsome | IEabs | IEall deriving (Eq,Show) --- This is "Interface Exports"--- defined in a lattice IEall--- / \--- | IEsome--- IEsel |--- | IEabs--- \ /--- IEnone--- IEall -> exported (with all constructors/fields/methods)--- IEsome -> exported with selected constructors/fields/methods--- IEabs -> exported abstractly (without constructors/fields/methods)--- IEnone -> not exported--- IEsel -> selected constructors/fields/methods--- (is exported, despite defn below!)--isExported IEnone = False-isExported IEsel = False-isExported _ = True--combIE IEall _ = IEall-combIE _ IEall = IEall-combIE IEnone i = i-combIE i IEnone = i-combIE IEsome IEabs = IEsome-combIE IEabs IEsome = IEsome-combIE _ i = i---- Patch newtype for exports (Its constructor must always be in the--- interface file, even if not visible in the importing module.)-patchIE IEabs = IEsome-patchIE ie = ie--data DataKind = - DataTypeSynonym Bool -- True <-> unboxed after expansion- Int -- depth (used to determine - -- which type synonym to expand)- | DataNewType Bool -- always False- [Id] -- constructor(one or zero) - | Data Bool -- True <-> unboxed- [Id] -- constructors- | DataPrimitive Int -- size- deriving (Show)--data Info =- InfoClear -- used to remove imported when redefining in mutally - -- recursive modules and when compiling the prelude- | InfoUsed Id -- unique- [(IdKind,TokenId,PackedString,Pos)] -- occurrence where used- | InfoUsedClass Id -- unique- [(IdKind,TokenId,PackedString,Pos)] -- occurrence where used- (AssocTree Int ([Int],[(Int,Int)])) - -- instances of the class- -- the tree associates a type constructor with- -- the free variables and the superclass context - -- of an instance- | InfoData -- data type (algebraic, type synonym, ...)- Id -- unique- TokenId -- token of data type name- IE -- is exported?- NewType -- if type synonym: type it is defined to be- -- if data or newtype: defined type- -- e.g.: data Num a => Test a b = A a | B b- -- NewType [1,2] [] [(NumId, 1)] - -- [NTvar 1 Star, NTvar 2 Star, mkNTcons TestId - -- [NTvar 1 Star, NTvar 2 Star]]- DataKind -- kind of data type - | InfoClass Int -- unique- TokenId -- token of class name- IE -- is exported?- NewType -- pseudo type built from class and type variable- -- (type of dictionary?)- [Id] -- method ids refering to type declaration- [Id] -- method ids refering to default definition- -- ids in same position refer to same method- -- => lists have same lengths- (AssocTree Int ([Int],[(Int,Int)])) - -- instances of the class- -- the tree associates a type constructor with- -- the free variables and the superclass context - -- of an instance- | InfoVar -- term variable - Int -- unique - TokenId -- token for name- IE -- is exported?- (InfixClass TokenId,Int) -- fixity - NewType -- type- (Maybe Int) -- arity (if available)- | InfoConstr -- data constructor- Int -- unique - TokenId -- token for name- IE -- is exported?- (InfixClass TokenId,Int) -- fixity - NewType -- type of the constructor- [Maybe Int] -- field names (if they exist) - Int -- data type to which constructor belongs- | InfoField -- field name- Id -- unique- TokenId -- token for name- IE -- is exported?- [(Id,Int)] -- [(data constructor, offset for this constr.)]- Id -- iData- Id -- iSel - -- unique tid [(constructor,offset)] type selector- | InfoMethod -- for type declaration of method in a class definition- Id -- unique - TokenId -- token for method name- IE -- is exported?- (InfixClass TokenId,Int) -- fixity- NewType - (Maybe Int) -- arity (if available; here bogus)- Id -- unique of class to which method belongs- | InfoIMethod -- for definition in instance definition- Id -- unique - TokenId -- token for name- NewType - (Maybe Int) -- arity (if available) - Id -- iMethod (0 after renaming)- -- The type is NewType free instancs_ctx instance_type, - -- for real type follow iMethod- | InfoDMethod -- for default definition in class definition- Id -- unique- TokenId -- token for method name- NewType - (Maybe Int) -- arity (if available) - Id -- class to which method belongs- | InfoInstance -- Only used in Export- Id -- unique- NewType - Id -- unique of class (of which this is instance)- | InfoName Id -- unique- TokenId -- token for name- Int -- arity- TokenId - Bool --PHtprof indicates subfn- -- inserted late to hold name and arity for some functions - -- (second TokenId is profname )- deriving (Show)--{- Template-z (InfoUsed unique uses) =-z (InfoUsedClass unique uses insts) =-z (InfoData unique tid ie nt dk) =- case dk of- (DataTypeSynonym unboxed depth) ->- (DataNewType unboxed constructors) ->- (Data unboxed constrs) ->- (DataPrimitive size) ->-z (InfoClass unique tid ie nt ms ds insts) = -z (InfoVar unique tid ie fix nt annot) = -z (InfoConstr unique tid ie fix nt fields iType) =-z (InfoField unique tid ie icon_offs iData iSel) =-z (InfoMethod unique tid ie fix nt annot iClass) =-z (InfoIMethod unique tid nt annot iMethod) =-z (InfoDMethod unique tid nt annot iClass) =-z (InfoInstance unique nt iClass) =-z (InfoName pos unique tid Int ptid subfn) = --PHtprof--}--clearI :: a -> Info-clearI _ = InfoClear-----isClear InfoClear = True---isClear _ = False--isMethod :: Info -> Bool-isMethod (InfoMethod unique tid ie fix nt annot iClass) = True-isMethod _ = False---isData :: Info -> Bool -isData (InfoData unique tid exp nt dk) = True-isData _ = False---isRealData :: Info -> Bool-isRealData (InfoData unique tid exp nt dk) =- case dk of- (DataTypeSynonym unboxed depth) -> False- (DataNewType unboxed constructors) -> False- (DataPrimitive size) -> True- (Data unboxed constrs) -> True-isRealData info = error ("isRealData " ++ show info)---isRenamingFor :: AssocTree Int Info -> Info -> NewType-isRenamingFor st (InfoData unique tid exp nt (DataTypeSynonym _ depth)) = nt-isRenamingFor st info@(InfoData unique tid exp nt (DataNewType _ constrs)) =- case constrs of- [] -> error ("Problem with type of a foreign imported function:\n"- ++"Cannot find constructor for newtype: "++show info)- [c] -> case lookupAT st c of- Just i -> ntI i- Nothing -> error ("Cannot find info for newtype constructor: "- ++show info)-isRenamingFor st info = error ("isRenamingFor " ++ show info)---isDataUnBoxed :: Info -> Bool -isDataUnBoxed (InfoData unique tid exp nt dk) =- case dk of- (DataTypeSynonym unboxed depth) -> unboxed- (DataNewType unboxed constructors) -> unboxed- (Data unboxed constrs) -> unboxed- (DataPrimitive size) -> True-isDataUnBoxed info = error ("isDataUnBoxed: " ++ show info)---isField :: Info -> Bool-isField (InfoField _ _ _ _ _ _) = True-isField _ = False--isClass :: Info -> Bool-isClass (InfoClass _ _ _ _ _ _ _) = True-isClass _ = False--isUsedClass :: Info -> Bool-isUsedClass (InfoUsedClass _ _ _) = True-isUsedClass _ = False---depthI :: Info -> Maybe Int-depthI (InfoData unique tid exp nt dk) =- case dk of- (DataTypeSynonym unboxed depth) -> Just depth- _ -> Nothing-depthI _ = Nothing---typeSynonymBodyI :: Info -> Maybe NewType-typeSynonymBodyI (InfoData _ _ _ nt (DataTypeSynonym _ _)) = Just nt-typeSynonymBodyI _ = Nothing---updTypeSynonym :: Bool -> Int -> Info -> Info-updTypeSynonym unboxed depth (InfoData unique tid exp nt dk) =- case dk of- (DataTypeSynonym _ _) ->- (InfoData unique tid exp nt (DataTypeSynonym unboxed depth)) ---{---- Sets the unboxedness information in newtype info as given.--}-updNewType :: Bool -> Info -> Info-updNewType unboxed (InfoData unique tid exp nt dk) =- case dk of- (DataNewType _ constructors) -> - InfoData unique tid exp nt (DataNewType unboxed constructors)--{---- Sets the type information in variable info as given.--- Is only applied to identifiers without types,i.e. never methods of any kind!--}-newNT :: NewType -> Info -> Info-newNT nt (InfoVar unique tid ie fix _ annot) =- InfoVar unique tid ie fix nt annot---ntI :: Info -> NewType-ntI (InfoData unique tid ie nt dk) = nt--- ntI (InfoClass unique tid ie nt ms ds) = nt --- Not needed?-ntI (InfoVar unique tid ie fix nt annot) = nt-ntI (InfoConstr unique tid ie fix nt fields iType) = nt-ntI (InfoMethod unique tid ie fix nt annot iClass) = nt-ntI (InfoIMethod unique tid nt annot iMethod) = nt -- Work here?-ntI (InfoDMethod unique tid nt annot iClass) = nt---strictI :: Info -> [Bool]-strictI (InfoConstr _ _ _ _ (NewType free [] ctx nts) _ _) = - map strictNT (init nts)-strictI _ = []- -- Not strict in any argument so it doesn't matter if we return empty list--qDefI (InfoUsed _ _) = False-qDefI (InfoUsedClass _ _ _) = False-qDefI _ = True--uniqueI (InfoUsed unique _) = unique-uniqueI (InfoUsedClass unique _ _) = unique-uniqueI (InfoData unique tid ie nt dk) = unique-uniqueI (InfoClass unique _ _ _ _ _ _) = unique-uniqueI (InfoVar unique _ _ _ _ _) = unique-uniqueI (InfoConstr unique _ _ _ _ _ _) = unique-uniqueI (InfoField unique _ _ _ _ _) = unique-uniqueI (InfoMethod unique _ _ _ _ _ _) = unique-uniqueI (InfoIMethod unique _ _ _ _) = unique-uniqueI (InfoDMethod unique _ _ _ _) = unique-uniqueI (InfoInstance unique _ _) = unique-uniqueI (InfoName unique _ _ _ _) = unique --PHtprof---tidI :: Info -> TokenId-tidI (InfoData unique tid exp nt dk) = tid-tidI (InfoClass u tid _ _ _ _ _) = tid-tidI (InfoVar u tid _ _ _ _) = tid-tidI (InfoConstr u tid _ _ _ _ _) = tid-tidI (InfoField u tid _ _ _ _) = tid-tidI (InfoMethod u tid _ _ _ _ _) = tid-tidI (InfoIMethod u tid _ _ _) = tid-tidI (InfoDMethod u tid _ _ _) = tid-tidI (InfoName u tid _ _ _) = tid --PHtprof-tidI (InfoUsedClass u ((_,tid,_,_):_) _) = tid --MW-tidI info = error ("tidI (Info.hs) called with bad info:\n" ++ show info)---cmpTid :: TokenId -> Info -> Bool-cmpTid t (InfoUsed _ _) = False-cmpTid t (InfoUsedClass _ _ _) = False-cmpTid t i = tidI i == t---methodsI :: Info -> [(Int,Int)]-methodsI (InfoClass u tid ie nt ms ds inst) = zip ms ds---instancesI :: Info -> AssocTree Int ([Int],[(Int,Int)])-instancesI (InfoClass u tid e nt ms ds inst) = inst-instancesI info@(InfoUsedClass u uses inst) = - strace ("***instanceI(1) "++show info++"\n") inst-instancesI info = - strace ("***instanceI(2) "++show info++"\n") initAT - -- This is a lie!!! For some reason has this class no real entry---{- Return identifiers of all superclasses of the class which is described--- by given info.--}-superclassesI :: Info -> [Int]-superclassesI (InfoClass _ _ _ (NewType _ [] ctxs _) _ _ _) = map fst ctxs-superclassesI info = error ("superclassesI " ++ show info)--{- Add information about an instance to info of a class.--- If information about this instance exists already in info, then info left--- unchanged.--- type constructor -> free type variables -> context -> class info--- -> class info--}-addInstanceI :: Int -> [Int] -> [(Int,Int)] -> Info -> Info-addInstanceI con free ctxs info@(InfoClass u tid e nt ms ds inst) =- case lookupAT inst con of- Just _ -> info- Nothing -> InfoClass u tid e nt ms ds (addAT inst sndOf con (free,ctxs))-addInstanceI con free ctxs info@(InfoUsedClass u uses inst) =- case lookupAT inst con of- Just _ -> info- Nothing -> InfoUsedClass u uses (addAT inst sndOf con (free,ctxs))-addInstanceI con free ctxs (InfoUsed u uses) = - addInstanceI con free ctxs (InfoUsedClass u uses initAT)--{---- In joining two trees for describing instances the second one gets--- precedence in case of conflict.--}-joinInsts :: AssocTree Int a -> AssocTree Int a -> AssocTree Int a-joinInsts inst inst' =- foldr (\(k,v) inst -> addAT inst sndOf k v) inst (listAT inst')---{- Determine constructors of a type from the info of the type -}-constrsI :: Info -> [Int]-constrsI (InfoName unique tid i ptid _) = [unique] --PHtprof- -- ^this is a lie! but it is consistent with belongstoI :-)-constrsI (InfoData unique tid exp nt dk) =- case dk of- (DataTypeSynonym unboxed depth) -> - strace ("Constr of type synonym "++show tid++"\n") []- (DataNewType unboxed constructors) -> constructors- (DataPrimitive size) ->- strace ("Constr of data primitive "++show tid++"\n") []- (Data unboxed constrs) -> constrs-constrsI info = error ("constrsI " ++ show info)---updConstrsI :: Info -> [Int] -> Info-updConstrsI (InfoData unique tid exp nt dk) constrs' =- case dk of- (Data unboxed constrs) -> - InfoData unique tid exp nt (Data unboxed constrs')---fieldsI (InfoConstr unique tid ie fix nt fields iType) = fields---combInfo :: Info -> Info -> Info--combInfo InfoClear info' = info'-combInfo (InfoUsed _ w) (InfoUsed u' w') = InfoUsed u' (w++w')-combInfo (InfoUsed _ _) info' = info'-combInfo info InfoClear = info-combInfo info (InfoUsed _ _) = info-combInfo i1@(InfoUsedClass _ uses insts) - i2@(InfoClass u tid exp nt ms ds insts') =- InfoClass u tid exp nt ms ds (joinInsts insts' insts)-combInfo i1@(InfoClass _ tid exp nt ms ds insts) - i2@(InfoUsedClass u uses insts') =- InfoClass u tid exp nt ms ds (joinInsts insts' insts)-combInfo (InfoClass u tid exp nt ms ds insts) - (InfoClass u' tid' exp' nt' [] [] insts') = - InfoClass u tid (combIE exp exp') nt ms ds (joinInsts insts' insts)-combInfo (InfoClass u tid exp nt ms ds insts) - (InfoClass u' tid' exp' nt' ms' ds' insts') = - InfoClass u tid (combIE exp exp') nt' ms' ds' (joinInsts insts' insts)-combInfo info@(InfoData u tid exp nt dk) - info'@(InfoData u' tid' exp' nt' dk') =- case dk' of- Data unboxed [] -> info- _ -> if isExported exp' then info' else info-combInfo info info' = - -- Use new (if possible) so that code can override old imported- if isExported (expI info)- then info- else info'--expI (InfoData _ _ ie _ _) = ie-expI (InfoClass _ _ ie _ _ _ _) = ie-expI (InfoVar _ _ ie _ _ _) = ie-expI (InfoConstr _ _ ie _ _ _ _) = ie-expI (InfoField _ _ ie _ _ _) = ie -- Data contains export info-expI (InfoMethod _ _ ie _ _ _ _) = ie-expI (InfoIMethod _ _ _ _ _) = IEnone-expI (InfoDMethod _ _ _ _ _) = IEnone-expI info = IEnone -- I get InfoUsed here !!!---- arity without context (Visible)-arityVI (InfoVar _ _ _ _ _ (Just arity)) = arity-arityVI (InfoConstr _ _ _ _ (NewType _ _ _ nts) _ _) = length nts - 1-arityVI (InfoMethod _ _ _ _ _ (Just arity) _) = 1-arityVI (InfoIMethod _ _ _ (Just arity) _) = arity-arityVI (InfoDMethod _ _ _ (Just arity) _) = arity -arityVI (InfoName _ _ arity _ _) = arity --PHtprof---- arity with context-arityI (InfoVar _ _ _ _ (NewType _ _ ctx _) (Just arity)) = length ctx + arity-arityI (InfoVar _ _ _ _ _ (Just arity)) = arity- -- NR Generated after type deriving-arityI (InfoConstr _ _ _ _ (NewType _ _ _ nts) _ _) = length nts - 1-arityI (InfoMethod _ _ _ _ _ (Just arity) _) = 1--- Wrong !!! --- arityI (InfoIMethod _ _ (NewType _ _ ctx _) (Just arity) _)--- = length ctx + arity-arityI (InfoDMethod _ _ (NewType _ _ ctx _) (Just arity) _)- = length ctx + arity- + 1- -- +1 is for the dictionary-arityI (InfoName unique tid arity ptid _) = arity --PHtprof-arityI info = error ("arityI " ++ show info)--arityIM (InfoMethod _ _ _ _ (NewType _ _ ctx _) (Just arity) _)- = length ctx + arity--fixityI (InfoVar unique tid ie fix nt annot) = fix-fixityI (InfoConstr unique tid ie fix nt fields iType) = fix-fixityI (InfoMethod unique tid ie fix nt annot iClass) = fix-fixityI _ = (InfixDef,9::Int)---belongstoI :: Info -> Id-belongstoI (InfoConstr unique tid ie fix nt fields iType) = iType-belongstoI (InfoField unique tid ie icon_offs iData iSel) = iData-belongstoI (InfoMethod unique tid ie fix nt annot iClass) = iClass-belongstoI (InfoIMethod unique tid nt annot iMethod) = iMethod - -- ^Maybe ought to be it's own function-belongstoI (InfoDMethod unique tid nt annot iClass) = iClass-belongstoI (InfoInstance unique nt iClass) = iClass-belongstoI (InfoName unique tid i ptid _) = unique --PHtprof- -- ^this is a lie! but it is consistent with constrsI :-)-belongstoI info = error ("belongstoI " ++ show info)---profI :: Info -> TokenId-profI (InfoData unique tid exp nt dk) = tid-profI (InfoClass u tid _ _ _ _ _) = tid-profI (InfoVar u tid _ _ _ _) = tid-profI (InfoConstr u tid _ _ _ _ _) = tid-profI (InfoField u tid _ _ _ _) = tid-profI (InfoMethod u tid _ _ _ _ _) = tid-profI (InfoIMethod u tid _ _ _) = tid-profI (InfoDMethod u tid _ _ _) = tid-profI (InfoName u tid _ ptid _) = ptid --PHtprof-profI info = error ("profII (Info.hs) " ++ show info)
− compiler98/IntState.hs
@@ -1,266 +0,0 @@-{- ----------------------------------------------------------------------------Internal state of the compiler -used from the renaming pass until code generation--}-module IntState(module IntState, module Info) where--import AssocTree-import NT-import TokenId(mkQual3,mkQualD,dropM)-import Extra-import SysDeps(PackedString,packString)-import Info-import MergeSort(group)-import Reduce(Reduce)-import Id(Id)---data IntState = - IntState- Int -- unique- (Int,PackedString) -- modid- (AssocTree Int Info) -- symboltable (unique int -> info)- [String] -- errors--dummyIntState = IntState 0 (0,packString "<Dummy>") initAT []---- -===== State--getInfo :: Id -> a -> IntState -> (Info,IntState)--getInfo i down state@(IntState unique rps st errors) =- case lookupAT st i of- Just info -> (info,state)---addDefaultMethod :: a -> (Id,Id) -> IntState -> IntState--addDefaultMethod tidcls (iMethod,iDefault) state@(IntState unique irps@(_,rps) st errors) =- case lookupIS state iMethod of- Just (InfoMethod u tid ie fix nt' annot iClass) ->- IntState unique irps - (addAT st fstOf iDefault - (InfoDMethod iDefault (mkQualD rps tid) nt' annot iClass)) - errors---getUnique :: a -> IntState -> (Id,IntState)--getUnique down state@(IntState unique rps st errors) =- (unique,IntState (unique+1) rps st errors)---addInstMethod :: TokenId -> TokenId -> TokenId -> NewType -> Id - -> a -> IntState -> (Int,IntState)--addInstMethod tidcls tidtyp tidMethod nt iMethod down state@(IntState unique rps st errors) =- case lookupIS state iMethod of- Just (InfoMethod u tid ie fix nt' (Just arity) iClass) -> - (unique,IntState (unique+1) rps (addAT st (error "adding twice!") unique (InfoIMethod unique (mkQual3 tidcls tidtyp tidMethod) nt (Just arity) iMethod)) errors)---- -====== State0--updInstMethodNT :: TokenId -> TokenId -> Int -> NewType -> Int - -> a -> IntState -> IntState--updInstMethodNT tidcls tidtyp i nt iMethod down state@(IntState unique rps st errors) =- case lookupAT st iMethod of- Just (InfoMethod _ _ _ _ _ annots _) ->- case lookupAT st i of- Just (InfoIMethod u tid' _ _ _) ->- let tid = mkQual3 tidcls tidtyp (dropM tid')- in IntState unique rps (addAT st fstOf i (InfoIMethod u tid nt annots iMethod)) errors---addInstance :: Int -> Int -> [Int] -> [(Int,Int)] -> a -> IntState -> IntState--addInstance cls con free ctxs down state@(IntState unique rps st errors) =- let st' = updateAT st cls (addInstanceI con free ctxs)- in IntState unique rps st' errors---addNewLetBound :: Int -> TokenId -> a -> IntState -> IntState--addNewLetBound i tid down state =- addIS i (InfoVar i tid IEnone (InfixDef,9) NoType Nothing) state---- -==== Reduce--{--Adds type of variable to symbol table of internal state.-Assumes that variable is already in symbol table.-Adds error message, if there exists already a type for the variable-in the symbol table or type is badly formed (duplicate predicates in context). --}-updVarNT :: Pos -> Int -> NewType -> Reduce IntState IntState--updVarNT pos i nt state@(IntState unique rps st errors) =- case lookupAT st i of- Just (InfoVar u tid exp fix NoType annots) ->- case checkNT pos (strIS state) nt of- Nothing -> IntState unique rps - (addAT st fstOf i (InfoVar u tid exp fix nt annots)) - errors- Just err -> IntState unique rps st (err :errors)- Just (InfoVar u tid exp fix nt' annots) ->- IntState unique rps st - (("New type signature for " ++ show tid ++ " at " ++ strPos pos)- : errors)---{--Adds arity of variable to symbol table of internal state -(any old arity is overwritten).-Assumes that variable is already in symbol table.--}-updVarArity :: Pos -> Int -> Int -> Reduce IntState IntState--updVarArity pos i arity state@(IntState unique rps st errors) =- case lookupAT st i of- Just (InfoVar u tid exp fix nt _) -> - -- Always update, might change arity for redefined import in Prelude- IntState unique rps - (addAT st fstOf i (InfoVar u tid exp fix nt (Just arity))) errors- _ -> state - -- Ignore arity for methods, methods instances and methods default----- -==== Stand alone--{- Add new info for identifier to the symbol table -}-addIS :: Int -> Info -> IntState -> IntState--addIS u info state@(IntState unique rps st errors) =- IntState unique rps (addAT st combInfo u info) errors---{- Lookup identifier in symbol table -} -lookupIS :: IntState -> Id -> Maybe Info--lookupIS (IntState unique rps st errors) i = lookupAT st i---{- Update info for identifier in symbol table -}-updateIS :: IntState -> Id -> (Info -> Info) -> IntState--updateIS (IntState unique rps st errors) i upd =- IntState unique rps (updateAT st i upd) errors---{- Obtain a new unique and hence also a new internal state -}-uniqueIS :: IntState -> (Id,IntState)--uniqueIS (IntState unique rps st errors) = (unique,IntState (unique+1) rps st errors)---{- Associate new uniques with given list of entities; hence also new internal-state -}-uniqueISs :: IntState -> [a] -> ([(a,Int)],IntState)--uniqueISs (IntState unique rps st errors) l =- (zip l [unique..],IntState (unique+(length l)) rps st errors)---{- Give printable string for identifier -}-strIS :: IntState -> Int -> String--strIS state i =- case lookupIS state i of- Just info -> show (tidI info)- Nothing -> 'v':show i---{- Give token of identifier -}-tidIS :: IntState -> Id -> TokenId--tidIS state i =- case lookupIS state i of- Just info -> tidI info--getErrors :: IntState -> (IntState,[String])-getErrors (IntState unique rps st errors) = (IntState unique rps st [], errors)--getErrorsIS :: IntState -> Either [String] IntState-getErrorsIS is@(IntState unique rps st errors)- | null errors = Right is- | otherwise = Left errors--addError :: IntState -> [Char] -> IntState-addError (IntState unique rps st errors) err = - IntState unique rps st (err:errors)--getSymbolTable :: IntState -> AssocTree Int Info-getSymbolTable (IntState unique rps st errors) = st--mrpsIS (IntState unique (i,rps) st errors) = rps-miIS (IntState unique (i,rps) st errors) = i--getIndDataIS state indDataI =- case constrsI indDataI of- (c:_) -> -- Can only be one constructor - case lookupIS state c of- (Just infoCon) ->- case ntI infoCon of- (NewType ctx free [] (NTcons con _ _:_)) -> con---globalIS :: IntState -> Id -> Bool--globalIS state i =- case lookupIS state i of- Nothing -> False- Just info -> globalI info- where- globalI (InfoData unique tid ie nt dk) = isExported ie- globalI (InfoClass unique tid ie nt ms ds insts) = isExported ie- globalI (InfoVar unique tid IEsel fix nt annot) = True- globalI (InfoVar unique tid ie fix nt annot) = isExported ie- globalI (InfoConstr unique tid ie fix nt fields iType) = - globalI' (lookupIS state iType) - globalI (InfoField unique tid ie icon_offs iData iSel) = - globalI' (lookupIS state iData) - globalI (InfoMethod unique tid ie fix nt annot iClass) = True- globalI (InfoIMethod unique tid nt annot iMethod) = True- globalI (InfoDMethod unique tid nt annot iClass) = True- globalI (InfoName unique tid arity ptid _) = False --PHtprof-- globalI' (Just (InfoData unique tid IEall nt dk)) = True- globalI' _ = False---arityIS :: IntState -> Id -> Int--- arity with context--arityIS state i =- case lookupIS state i of - Just (InfoIMethod unique tid (NewType _ [] ctxs [NTcons tcon _ _]) (Just arity) iMethod) ->- case lookupIS state iMethod of- Just (InfoMethod unique tid ie fix (NewType _ [] ictxs _) (Just iarity) iClass) ->- length ictxs + iarity + (length . snd . dropJust . lookupAT ((instancesI . dropJust . lookupIS state) iClass)) tcon---- length ctxs + arity + (length . snd . dropJust . lookupAT ((instancesI . dropJust . lookupIS state) iClass)) tcon--- length ictxs + length ctxs + arity - Just info@(InfoIMethod unique tid _ _ iMethod) -> error ("arityIS " ++ show info)- Just info -> arityI info- _ -> error ("arityIS in IntState.hs couldn't find " ++ show i)---{--Tests if context of type has duplicate predicates.-Second argument converts class identifier to string.-*** This module not a good place for this function.--}-checkNT :: Pos -> (Int -> String) -> NewType -> Maybe String--checkNT pos strFun (NewType free [] ctxs nts) =- case (filter ((1/=) . length) . group) ctxs of- [] -> Nothing- [x] -> Just ("Multiple occurences of " ++ (strFun . fst . head) x ++- " with identical type variable in context close to " ++ - strPos pos) - xs -> Just ("Multiple occurences of " - ++ mixCommaAnd (map (strFun . fst . head) xs) ++- " with identical type variables in context close to " ++ - strPos pos) --{- End Module IntState ------------------------------------------------------}
− compiler98/Lex.hs
@@ -1,231 +0,0 @@-module Lex(Lex(..),LexAnnot(..),TokenId) where--import Extra(strStr,strChr)-import TokenId(TokenId)-import Data.Ratio--data LexAnnot = LexArity TokenId Int- | LexPrimitive TokenId (String,String) -- id (opcode,strictness)--instance Show LexAnnot where- showsPrec d (LexArity fun a) = showString "{#- ARITY " . shows fun . showString " = " . shows a . showString "#-}"- showsPrec d (LexPrimitive fun s) = showString "{#- PRIMITIVE ". shows fun . showString " = " . shows s . showString "#-}"--data Lex = - L_EOF- | L_ERROR Char -- illegal character- | L_LPAR- | L_RPAR- | L_LANNOT- | L_RANNOT- | L_LCURL | L_LCURL'- | L_RCURL | L_RCURL'- | L_LBRACK- | L_RBRACK- | L_BACKTICK- | L_COMMA- | L_SEMI | L_SEMI'---- reserved ops- | L_DotDot- | L_ColonColon- | L_EqualGreater- | L_Equal- | L_At- | L_Lambda- | L_Pipe- | L_Tidle- | L_LessMinus- | L_MinusGreater- | L_Underscore-- | L_AVARID TokenId- | L_AVAROP TokenId- | L_ACONID TokenId- | L_ACONOP TokenId-- | L_INTEGER Integer- | L_RATIONAL Rational- | L_DOUBLE Double- | L_CHAR Char- | L_STRING [Char]---- reserved words- | L_case- | L_class- | L_data- | L_default- | L_deriving- | L_do- | L_else- | L_if- | L_import- | L_in- | L_infix- | L_infixl- | L_infixr- | L_instance- | L_let- | L_module- | L_newtype- | L_of- | L_then- | L_type- | L_where--- | L_as--- | L_hiding--- | L_prefix--- | L_primitive--- | L_interface--- | L_qualified--- | L_renaming--- | L_unboxed--- | L_with--instance Eq Lex where- L_EOF == L_EOF = True- (L_ERROR _) == (L_ERROR _) = True- L_LPAR == L_LPAR = True- L_RPAR == L_RPAR = True- L_LANNOT == L_LANNOT = True- L_RANNOT == L_RANNOT = True- L_LCURL == L_LCURL = True- L_LCURL' == L_LCURL' = True- L_RCURL == L_RCURL = True- L_RCURL' == L_RCURL' = True- L_LBRACK == L_LBRACK = True- L_RBRACK == L_RBRACK = True-- L_BACKTICK == L_BACKTICK = True- L_COMMA == L_COMMA = True- L_SEMI == L_SEMI = True- L_SEMI' == L_SEMI' = True- L_DotDot == L_DotDot = True- L_ColonColon == L_ColonColon = True- L_EqualGreater == L_EqualGreater = True- L_Equal == L_Equal = True- L_At == L_At = True- L_Lambda == L_Lambda = True- L_Pipe == L_Pipe = True- L_Tidle == L_Tidle = True- L_LessMinus == L_LessMinus = True- L_MinusGreater == L_MinusGreater = True- L_Underscore == L_Underscore = True-- (L_AVARID a) == (L_AVARID b) = a==b- (L_AVAROP a) == (L_AVAROP b) = a==b- (L_ACONID a) == (L_ACONID b) = a==b- (L_ACONOP a) == (L_ACONOP b) = a==b-- (L_INTEGER _) == (L_INTEGER _) = True- (L_RATIONAL _) == (L_RATIONAL _) = True- (L_DOUBLE _) == (L_DOUBLE _) = True- (L_CHAR _) == (L_CHAR _) = True- (L_STRING _) == (L_STRING _) = True-- L_case == L_case = True- L_class == L_class = True- L_data == L_data = True- L_default == L_default = True- L_deriving == L_deriving = True- L_do == L_do = True- L_else == L_else = True- L_if == L_if = True- L_import == L_import = True- L_in == L_in = True- L_infix == L_infix = True- L_infixl == L_infixl = True- L_infixr == L_infixr = True- L_instance == L_instance = True- L_let == L_let = True- L_module == L_module = True- L_newtype == L_newtype = True- L_of == L_of = True- L_then == L_then = True- L_type == L_type = True- L_where == L_where = True--- L_as == L_as = True--- L_hiding == L_hiding = True--- L_interface == L_interface = True--- L_prefix == L_prefix = True--- L_primitive == L_primitive = True--- L_qualified == L_qualified = True--- L_renaming == L_renaming = True--- L_unboxed == L_unboxed = True--- L_with == L_with = True- _ == _ = False--instance Show Lex where- -- Note: EOF really means end-of-file, but because error messages- -- saying "got blah but expected EOF" are less than helpful,- -- I have changed the string for EOF to indicate the likely cause- -- of the parse error.- showsPrec d (L_EOF) = showString "{-end-of-definition-or-EOF-}"- showsPrec d (L_ERROR c) = showString "{-ERROR " . showChar c . showString "-}"- showsPrec d (L_LPAR ) = showString "("- showsPrec d (L_RPAR ) = showString ")"- showsPrec d (L_LANNOT ) = showString "{-#"- showsPrec d (L_RANNOT ) = showString "#-}"- showsPrec d (L_LCURL ) = showString "{"- showsPrec d (L_RCURL ) = showString "}"- showsPrec d (L_LCURL' ) = showString "{-start-of-group-}"- showsPrec d (L_RCURL' ) = showString "{-end-of-group-}"- showsPrec d (L_LBRACK ) = showString "["- showsPrec d (L_RBRACK ) = showString "]"- showsPrec d (L_BACKTICK ) = showString "`"- showsPrec d (L_COMMA ) = showString ","- showsPrec d (L_SEMI ) = showString ";"- showsPrec d (L_SEMI' ) = showString "{-end-of-definition-}"-- showsPrec d (L_DotDot) = showString ".."- showsPrec d (L_ColonColon) = showString "::"- showsPrec d (L_EqualGreater) = showString "=>"- showsPrec d (L_Equal) = showString "="- showsPrec d (L_At) = showString "@"- showsPrec d (L_Lambda) = showString "\\"- showsPrec d (L_Pipe) = showString "|"- showsPrec d (L_Tidle) = showString "~"- showsPrec d (L_LessMinus) = showString "<-"- showsPrec d (L_MinusGreater) = showString "->"- showsPrec d (L_Underscore) = showString "_ " - showsPrec d (L_AVARID s) = shows s- showsPrec d (L_AVAROP s) = showChar '(' . shows s . showChar ')'- showsPrec d (L_ACONID s) = showsPrec d s- showsPrec d (L_ACONOP s) = showChar '(' . shows s . showChar ')'-- showsPrec d (L_INTEGER i) = shows i- showsPrec d (L_RATIONAL i) = shows i- showsPrec d (L_DOUBLE f) = shows f- showsPrec d (L_CHAR c) = showString (strChr c)- showsPrec d (L_STRING s) = showString (strStr s)-- showsPrec d (L_case ) = showString "_case_"- showsPrec d (L_class ) = showString "_class_"- showsPrec d (L_data ) = showString "_data_"- showsPrec d (L_default ) = showString "_default_"- showsPrec d (L_deriving ) = showString "_deriving_"- showsPrec d (L_do ) = showString "_do_"- showsPrec d (L_else ) = showString "_else_"- showsPrec d (L_if ) = showString "_if_"- showsPrec d (L_import ) = showString "_import_"- showsPrec d (L_in ) = showString "_in_"- showsPrec d (L_infix ) = showString "_infix_"- showsPrec d (L_infixl ) = showString "_infixl_"- showsPrec d (L_infixr ) = showString "_infixr_"- showsPrec d (L_instance ) = showString "_instance_"- showsPrec d (L_let ) = showString "_let_"- showsPrec d (L_module ) = showString "_module_"- showsPrec d (L_newtype) = showString "_newtype_"- showsPrec d (L_of ) = showString "_of_"- showsPrec d (L_then ) = showString "_then_"- showsPrec d (L_type ) = showString "_type_"- showsPrec d (L_where ) = showString "_where_"--- showsPrec d (L_as ) = showString "_as_"--- showsPrec d (L_hiding ) = showString "_hiding_"--- showsPrec d (L_interface ) = showString "_interface_"--- showsPrec d (L_prefix ) = showString "_prefix_"--- showsPrec d (L_primitive) = showString "_primitive_"--- showsPrec d (L_qualified) = showString "_qualified_"--- showsPrec d (L_renaming ) = showString "_renaming_"--- showsPrec d (L_unboxed) = showString "_unboxed_"--- showsPrec d (L_with ) = showString "_with_"
− compiler98/LexLow.hs
@@ -1,311 +0,0 @@-module LexLow(lexId,isLexId,isNhcId- ,lexNum,lexInteger- ) where--import Data.Ratio-import Data.Char(isAlpha,isUpper,isLower,isDigit)--import Lex-import SysDeps(isAlphaNum)-import TokenId(visible,qualify,t_List)-import Extra(isNhcOp)--data LEX_LOW = -- the trailing String is the rest of the input- LEX_ERROR Char String- | LEX_CONOP String String- | LEX_VAROP String String- | LEX_CONID String String- | LEX_VARID String Int Int String- -- varid, hash value, length, remainder of input- -- ( We calculate a hash value for every varid, and match it- -- against the keywords of the language. This gives a small- -- runtime speed up of 5%, compared to the previous- -- implementation which did explicit character matching on- -- every varid. With hashing, only some varids need to be- -- checked. )--isLexId x = isAlpha x || isNhcOp x--isLexId' ('_':x:xs) = isLexId x-isLexId' (x:xs) = isLexId x--lexId u r c xs =- case lexOne u xs of- LEX_ERROR ch xs -> (r, c, L_ERROR ch, xs)- LEX_CONOP op xs -> (r, c+length op, toConOp op, xs)- LEX_VAROP op xs -> (r, c+length op, toVarOp op, xs)- LEX_VARID var hash len xs ->- let toVar :: Int -> Lex- toVar key = case key of- 10 -> word "esac" L_case- 22 -> word "ssalc" L_class- 19 -> word "atad" L_data- 20 -> word "tluafed" L_default- 21 -> word "gnivired" L_deriving- 15 -> word "od" L_do- 4 -> word "esle" L_else- 2 -> word "fi" L_if- 7 -> word "tropmi" L_import- 6 -> word "ni" L_in- 18 -> word "xifni" L_infix- 16 -> word "lxifni" L_infixl- 17 -> word "rxifni" L_infixr- 8 -> word "ecnatsni" L_instance- 14 -> word "tel" L_let- 13 -> word "eludom" L_module- 11 -> word "epytwen" L_newtype- 3 -> word "fo" L_of- 9 -> word "neht" L_then- 5 -> word "epyt" L_type- 12 -> word "erehw" L_where- 1 -> word "_" L_Underscore- _ -> L_AVARID (visible var)- word :: String -> Lex -> Lex- word s tok = if var==s then tok else L_AVARID (visible var)- in- (r, c+len, toVar hash, xs)- LEX_CONID mod ('.':'[':']':xs) -> (r, c+length mod+3, L_ACONID t_List, xs)- -- !!! Compiler never emits qualified tuple identifiers, but maybe- -- it ought to be recognised anyway- LEX_CONID mod ('.':xs) | isLexId' xs ->- let loop mod c' xs = case lexOne u xs of- LEX_CONOP op xs -> (r,c'+length op,L_ACONOP (qualify mod op), xs)- LEX_VAROP op xs -> (r,c'+length op,L_AVAROP (qualify mod op), xs)- LEX_VARID var h len xs -> (r,c'+len,L_AVARID (qualify mod var), xs)- LEX_CONID con ('#':xs) -> (r,c'+1+length con,- L_ACONID (qualify mod ('#':con)), xs)- LEX_CONID con ('.':xs) | isLexId' xs ->- loop (con++'.':mod) (c'+length con+1) xs- LEX_CONID con xs -> (r,c'+length con,L_ACONID (qualify mod con), xs)- in loop mod (c+length mod+1) xs- LEX_CONID con ('#':xs) -> (r,c+1+length con,L_ACONID (visible ('#':con)),xs) - LEX_CONID con xs -> (r,c+length con,L_ACONID (visible con), xs) --------- Read one name---- first arg is whether underscores are treated as lowercase (=True)-lexOne False xs@('_':':':_) =- case splitWhile isNhcOp [] xs of- (op,xs) -> LEX_CONOP op xs-lexOne False xs@('_':x:_) =- if isNhcOp x- then case splitWhile isNhcOp [] xs of- (op,xs) -> LEX_VAROP op xs- else if isUpper x- then case splitWhile isNhcId [] xs of- (con,xs) -> LEX_CONID con xs- else if isLower x- then case splitWhile isNhcId [] xs of- (var,xs) -> LEX_VARID var 0 (length var) xs---else LEX_ERROR x xs -- maybe better to drop through to lowercase=True ?- else lexOne True xs--lexOne True xs@('_':_) =- case splitWhile isNhcId [] xs of- (var,xs) -> LEX_VARID var 0 (length var) xs--lexOne u xs@(':':_) =- case splitWhile isNhcOp [] xs of- (op,xs) -> LEX_CONOP op xs-lexOne u xs@(x:s) =- if isNhcOp x- then case splitWhile isNhcOp [] xs of- (op,xs) -> LEX_VAROP op xs- else if isUpper x- then case splitWhile isNhcId [] xs of- (con,xs) -> LEX_CONID con xs- else if isLower x- then splitWhileHash isNhcId 1 x [x] s- else LEX_ERROR x xs- -----isNhcId c = isAlphaNum c || c == '_' || c == '\'' -------- Check for keywords--toConOp "::" = L_ColonColon-toConOp rop = L_ACONOP (visible rop)--toVarOp rop =- case rop of- ".." -> L_DotDot- ">=" -> L_EqualGreater- "=" -> L_Equal- "@" -> L_At- "\\" -> L_Lambda- "|" -> L_Pipe- "~" -> L_Tidle- "-<" -> L_LessMinus- ">-" -> L_MinusGreater- _ -> L_AVAROP (visible rop)--{---- This version of toVar is no longer used - the local definition in--- lexId above is now used instead.-toVar rid@(i:d) =- if i == 'f' - then if d == "o" then L_of- else if d == "i" then L_if- else L_AVARID (visible rid)- else if i == 's' - then if d == "salc" then L_class--- else if d == "a" then L_as- else L_AVARID (visible rid)- else if i == 't' - then if d == "el" then L_let- else if d == "ropmi" then L_import- else if d == "luafed" then L_default- else L_AVARID (visible rid)- else if i == 'n' - then if d == "eht" then L_then- else if d == "i" then L_in- else L_AVARID (visible rid)- else if i == 'e' - then if d == "sle" then L_else- else if d == "sac" then L_case- else if d == "rehw" then L_where- else if d == "pyt" then L_type- else if d == "pytwen" then L_newtype--- else if d == "cafretni" then L_interface- else if d == "cnatsni" then L_instance--- else if d == "vitimirp" then L_primitive- else if d == "ludom" then L_module- else L_AVARID (visible rid)- else if i == 'o' - then if d == "d" then L_do- else L_AVARID (visible rid)- else if i == 'a' - then if d == "tad" then L_data- else L_AVARID (visible rid)- else if i == 'x' - then if d == "ifni" then L_infix--- else if d == "iferp" then L_prefix- else L_AVARID (visible rid)- else if i == 'l' - then if d == "xifni" then L_infixl- else L_AVARID (visible rid)- else if i == 'r' - then if d == "xifni" then L_infixr- else L_AVARID (visible rid)- else if i == 'g' - then if d == "nivired" then L_deriving--- else if d == "nidih" then L_hiding- else L_AVARID (visible rid)---else if i == 'd' ---then if d == "eifilauq" then L_qualified--- else if d == "exobnu" then L_unboxed--- else L_AVARID (visible rid)- else if i == '_' && null d- then L_Underscore-- else L_AVARID (visible rid)--}------ read number--lexNum :: Int -> Int -> String -> (Int, Int, Lex, String)-lexNum r c ('0':b:xs) =- if b == 'o' || b == 'O' then - case lexInteger 8 (c+2) xs of- (c',i,xs') -> (r,c', L_INTEGER i, xs')- else if b == 'x' || b == 'X' then - case lexInteger 16 (c+2) xs of- (c',i,xs') -> (r,c', L_INTEGER i, xs')- else- lexNum' r (c+1) (b:xs)-lexNum r c xs = lexNum' r c xs--lexNum' r c xs =- case lexInteger 10 c xs of- (c',i,'.':xs') | okNum xs' -> - (lexHelp i (lexFrac c' xs'))- (c',i,xs'@(e:_)) | e`elem`"eE" && okNum xs' ->- (lexHelp i (lexFrac c' xs'))- (c',i,xs') ->- (r,c', L_INTEGER i, xs')- where- okNum ('e':'-':x:_) = isDigit x- okNum ('e':'+':x:_) = isDigit x- okNum ('e':x:_) = isDigit x- okNum ('E':'-':x:_) = isDigit x- okNum ('E':'+':x:_) = isDigit x- okNum ('E':x:_) = isDigit x- okNum (x:_) = isDigit x- okNum _ = False-- lexHelp i (c'',s,m,e:xs'') | (e == 'e' || e == 'E') =- case lexExp c'' xs'' of- (c''',e,xs''') -> (r,c''',L_RATIONAL ((((i*s+m)%s)::Rational)*10^^e),xs''')---- (c''',e,xs''') -> (r,c''',L_RATIONAL ((((i*s+m)%s)::Rational){-*(fromInteger 10^^e)-}),xs''') --- GOFER ONLY !!!- lexHelp i (c'',s,m,xs'') =- (r,c'',L_RATIONAL ((i*s+m) % s),xs'')--- lexExp :: Int -> String -> (Int,Integer,String)- lexExp c ('-':xs) = case lexInteger 10 (c+1) xs of- (c',i,xs') -> (c',-i,xs')- lexExp c ('+':xs) = lexInteger 10 (c+1) xs- lexExp c xs = lexInteger 10 c xs-- lexFrac :: Int -> String -> (Int,Integer,Integer,String)- lexFrac c xs = pF c 1 0 xs-- pF :: Int -> Integer -> Integer -> String -> (Int,Integer,Integer,String)- pF c s a [] = (c,s,a,[])- pF c s a (xxs@(x:xs)) =- if dx < 10 then- pF (c+1) (s*10) (a*10 + dx) xs- else- (c,s,a,xxs)- where dx = digit x---lexInteger :: Integer -> Int -> String -> (Int,Integer,String)-lexInteger b c xs = pI b c 0 xs- where- pI :: Integer -> Int -> Integer -> String -> (Int,Integer,String)- pI b c a [] = (c,a,[])- pI b c a (xxs@(x:xs)) =- if dx < b then- pI b (c+1) (a*b+dx) xs- else- (c,a,xxs)- where dx = digit x------digit :: Char -> Integer-digit '0' = 0; digit '1' = 1; digit '2' = 2; digit '3' = 3; digit '4' = 4-digit '5' = 5; digit '6' = 6; digit '7' = 7; digit '8' = 8; digit '9' = 9-digit 'a' = 10; digit 'A' = 10; digit 'b' = 11; digit 'B' = 11-digit 'c' = 12; digit 'C' = 12; digit 'd' = 13; digit 'D' = 13-digit 'e' = 14; digit 'E' = 14; digit 'f' = 15; digit 'F' = 15-digit _ = 1000--splitWhile p a [] = (a,[])-splitWhile p a xxs@(x:xs) =- if p x- then splitWhile p (x:a) xs- else (a,xxs)--splitWhileHash :: (Char->Bool) -- predicate- -> Int -- accumulated length- -> Char -- first char- -> String -- accumulated (reversed) lexeme- -> String -- input string- -> LEX_LOW -- Always (LEX_VARID String Int Int String)- -- (lexeme, hash value, length, rest of input)-splitWhileHash p len h acc []- = LEX_VARID acc (hash h + hash (head acc) + len) len []-splitWhileHash p len h acc xxs@(x:xs)- | p x = splitWhileHash p (len+1) h (x:acc) xs- | otherwise = LEX_VARID acc (hash h + hash (head acc) + len) len xxs--hash :: Char -> Int-hash c = case c of { 's'-> 11; '_'-> 0; 'a'-> 3; 'g'-> 1; 'o'-> 1;- 'x'-> 13; 'r'-> 11; 'd'-> 12; 'f'-> 0; 'l'-> 10;- 'm'-> 7; 'w'-> 7; 'c'-> 6; 'n'-> 4; 't'-> 1;- 'i'-> 0; 'e'-> 0; _ -> 100 }
− compiler98/LexPre.hs
@@ -1,161 +0,0 @@-module LexPre(lexPre,PosTokenPre) where--import Data.Char(isSpace,isDigit,isAlpha)--import Lex-import LexLow-import LexStr -- includes: tab,lexChr-import SysDeps(PackedString,packString,isAlphaNum)-import TokenId(t_List,t_Arrow,t_Tuple)-import Extra(Pos,toPos)--type PosTokenPre = (PackedString,Pos,Int,Lex)- -- filename, position, column, lexem- -- column is that of position start- -- repeated here for easy access--lexPre :: Bool -> PackedString -> String -> [PosTokenPre]-lexPre u file l = iPreLex u file 1 1 l--------- local--iPreLex :: Bool -> PackedString -> Int -> Int -> String -> [PosTokenPre]- -- filename line column input-iPreLex u file r c [] = [(file,toPos r 0 r 0,0,L_EOF)]-iPreLex u file r c ('\n':xs) = iPreLex u file (r+1) 1 xs-iPreLex u file r c ('\^M':'\n':xs) = iPreLex u file (r+1) 1 xs -- DOS line-end-iPreLex u file r c ('\^M':xs) = iPreLex u file (r+1) 1 xs -- Mac line-end-iPreLex u file r c (' ':xs) = iPreLex u file r (c+1) xs-iPreLex u file r c ('\xa0':xs) = iPreLex u file r (c+1) xs -- -iPreLex u file r c ('\t':xs) = iPreLex u file r (tab c) xs-iPreLex u file r c ('-':'-':xs)- | null munch || isSpace nextchr || nextchr `elem` ",()[]{};\"'`"- || isAlphaNum nextchr = skipline (iPreLex u file (r+1) 1) xs- where- munch = dropWhile (=='-') xs- nextchr = head munch- skipline :: (String->[PosTokenPre]) -> String -> [PosTokenPre]- skipline cont [] = cont []- skipline cont ('\n':r) = cont r- skipline cont (_:r) = skipline cont r-iPreLex u file r c ('{':'-':'#':xs) =- case words xs of- ("LINE":lineno:newfile:"#-}":_) | all isDigit lineno ->- case lexInteger 10 0 lineno of- (_,newr,_) ->- iPreLex u (packString newfile)- (fromInteger newr) 1- (tail (dropWhile (/='\n') xs))- ("NEED":_) ->- (file,toPos r c r (c+2),c,L_LANNOT) - : iPreLex u file r (c+3) xs- ("#-}":_) ->- (file,toPos r c r (c+2),c,L_LANNOT) - : iPreLex u file r (c+3) xs- (name:_) | all isDigit name -> -- e.g. fn arity- (file,toPos r c r (c+2),c,L_LANNOT) - : iPreLex u file r (c+3) xs- _ -> skipcomment u file 0 r (c+3) xs-iPreLex u file r c ('#':'-':'}':xs) =- (file,toPos r c r (c+2),c,L_RANNOT): iPreLex u file r (c+3) xs--iPreLex u file r c ('{':'-':xs) = skipcomment u file 0 r (c+2) xs-iPreLex u file r c ('(':xs) | isTupleId xs =- case span (==',') xs of- (commas,')':xs) -> - case length commas of- -- unit ()- 0 -> (file,toPos r c r (c+2),c,L_ACONID (t_Tuple 0))- : iPreLex u file r (c+3) xs- -- (n+1)-tuple - n -> (file,toPos r c r (c+n+1),c,L_ACONID (t_Tuple (n+1)))- : iPreLex u file r (c+n+2) xs- where- isTupleId xs =- case dropWhile (==',') xs of- (')':_) -> True- _ -> False--iPreLex u file r c ('(':'-':'>':')':xs) = - (file,toPos r c r (c+3),c,L_ACONID t_Arrow) : iPreLex u file r (c+4) xs-iPreLex u file r c ('(':xs) = - (file,toPos r c r c,c,L_LPAR) : iPreLex u file r (c+1) xs-iPreLex u file r c (')':xs) = - (file,toPos r c r c,c,L_RPAR) : iPreLex u file r (c+1) xs-iPreLex u file r c (',':xs) = - (file,toPos r c r c,c,L_COMMA) : iPreLex u file r (c+1) xs-iPreLex u file r c ('{':xs) = - (file,toPos r c r c,c,L_LCURL) : iPreLex u file r (c+1) xs-iPreLex u file r c ('}':xs) = - (file,toPos r c r c,c,L_RCURL) : iPreLex u file r (c+1) xs-iPreLex u file r c ('[':']':xs) = - (file,toPos r c r (c+1),c,L_ACONID t_List) : iPreLex u file r (c+2) xs-iPreLex u file r c ('[':xs) = - (file,toPos r c r c,c,L_LBRACK) : iPreLex u file r (c+1) xs-iPreLex u file r c (']':xs) = - (file,toPos r c r c,c,L_RBRACK) : iPreLex u file r (c+1) xs-iPreLex u file r c ('`':xs) = - (file,toPos r c r c,c,L_BACKTICK) : iPreLex u file r (c+1) xs-iPreLex u file r c (';':xs) = - (file,toPos r c r c,c,L_SEMI) : iPreLex u file r (c+1) xs-iPreLex u file r c ('#':xs) | c == 1 =- case span ('\n' /=) xs of- (line,xs) ->- case words line of- ("line":line:file:_) | all isDigit line ->- case lexInteger 10 0 line of- (_,r,_) ->- iPreLex u (packString file) (fromInteger r) 1 (tail xs)- (line:file:_) | all isDigit line ->- case lexInteger 10 0 line of- (_,r,_) ->- iPreLex u (packString file) (fromInteger r) 1 (tail xs)- ("pragma":_) -> iPreLex u file r c xs -- skip verbiage- _ -> error ("Unknown preprocessor directive at line " ++ show r- ++ ( case show file of {- "\"\"" -> [];- file -> " in file " ++ file } )- ++ "\n" ++ line ++ "\n")--- both lexStr, lexChr, lexId etc return c' > 1 -iPreLex u file r c ('"':xs) = - (file,toPos r c r' (c'-1),c,L_STRING st) : iPreLex u file r' c' xs'- where (r',c',st,xs') = lexStr r (c+1) xs-iPreLex u file r c ('\'':xs)= - (file,toPos r c r' (c'-1),c,L_CHAR ch) : iPreLex u file r' c' xs'- where (r',c',ch,xs') = lexChr r (c+1) xs--iPreLex u file r c ('_':[]) = - (file,toPos r c r c,c,L_Underscore) : iPreLex u file r (c+1) []-iPreLex u file r c xxs@('_':xs@(x:_)) =- if isNhcId x- then case lexId u r c xxs of- (r,c',lex,xs) -> - (file,toPos r c r (c'-1),c,lex) : iPreLex u file r c' xs- else (file,toPos r c r c,c,L_Underscore) : iPreLex u file r (c+1) xs-iPreLex u file r c (xs@(x:s))=- if isLexId x- then case lexId u r c xs of- (r,c',lex,xs) -> - (file,toPos r c r (c'-1),c,lex) : iPreLex u file r c' xs- else if isDigit x- then case lexNum r c xs of- (r,c',lex,xs) -> - (file,toPos r c r (c'-1),c,lex) : iPreLex u file r c' xs- else (file,toPos r c r c,c,L_ERROR x) : iPreLex u file r c s------- Auxiliary used by more than one clause of iPreLex (originally a local defn)-skipcomment :: Bool -> PackedString ->Int ->Int ->Int ->String ->[PosTokenPre]-skipcomment u file n r c xs = skip n r c xs- where- skip :: Int -> Int -> Int -> String -> [PosTokenPre]- skip n r c [] = iPreLex u file r c []- skip n r c ('-':'}':xs) = if n > 0 - then skip (n-1) r (c+2) xs- else iPreLex u file r (c+2) xs- skip n r c ('{':'-':xs) = skip (n+1) r (c+2) xs- skip n r c ('\n':xs) = skip n (r+1) 1 xs- skip n r c ('\t':xs) = skip n r (tab c) xs- skip n r c (_:xs) = skip n r (c+1) xs
− compiler98/LexStr.hs
@@ -1,119 +0,0 @@-module LexStr(tab,lexStr,lexChr) where--import Data.Char--import Error(errorLC)-import LexLow--tab :: Int -> Int-tab l = (m*8+1) where m = (l+7)`div`8--lexStr :: Int->Int->[Char] -> (Int,Int,[Char],[Char])-lexStr r c xs = pS '"' (r,c) r c [] xs--lexChr :: Int->Int->[Char] -> (Int,Int,Char,[Char])-lexChr r c xs = case pS '\'' (r,c) r c [] xs of- (r',c',[ch],xs') -> (r',c',ch,xs')- (_,_,[] ,_) -> errorLC r c "Empty character literal."- (_,_,cs ,_) -> errorLC r c ("Character literal with length>1 '"- ++ cs ++ "'.")------ local---pS :: Char -> (Int,Int) -> Int -> Int -> [Char] -> [Char]- -> (Int,Int,[Char],[Char])-pS d (ro,co) r c a [] = errorLC ro co "Unterminated literal string/character."-pS d roco r c a ('\n':_) = errorLC r c ("Newline in literal string/char."- ++"\nUse \\n instead.")-pS d roco r c a ('\t':_) = errorLC r c ("Tab in literal string/char."- ++"\nUse \\t instead.")-pS d roco r c a ('\f':_) = errorLC r c ("Linefeed in literal string/char."- ++"\nUse \\f instead.")-pS d roco r c a ('\v':_) = errorLC r c ("Vertical tab in literal string/char"- ++".\nUse \\v instead.")-pS d roco r c a ('\\':'&':xs) = pS d roco r (c+2) a xs-pS d roco r c a ('\\':'a':xs) = pS d roco r (c+2) ('\a':a) xs-pS d roco r c a ('\\':'b':xs) = pS d roco r (c+2) ('\b':a) xs-pS d roco r c a ('\\':'f':xs) = pS d roco r (c+2) ('\f':a) xs-pS d roco r c a ('\\':'n':xs) = pS d roco r (c+2) ('\n':a) xs-pS d roco r c a ('\\':'r':xs) = pS d roco r (c+2) ('\r':a) xs-pS d roco r c a ('\\':'t':xs) = pS d roco r (c+2) ('\t':a) xs-pS d roco r c a ('\\':'v':xs) = pS d roco r (c+2) ('\v':a) xs-pS d roco r c a ('\\':'\\':xs) = pS d roco r (c+2) ('\\':a) xs-pS d roco r c a ('\\':'"':xs) = pS d roco r (c+2) ('"':a) xs-pS d roco r c a ('\\':'\'':xs)= pS d roco r (c+2) ('\'':a) xs-pS d roco r c a ('\\':'N':'U':'L':xs) = pS d roco r (c+4) ('\NUL':a) xs-pS d roco r c a ('\\':'S':'O':'H':xs) = pS d roco r (c+4) ('\SOH':a) xs-pS d roco r c a ('\\':'S':'T':'X':xs) = pS d roco r (c+4) ('\STX':a) xs-pS d roco r c a ('\\':'E':'T':'X':xs) = pS d roco r (c+4) ('\ETX':a) xs-pS d roco r c a ('\\':'E':'O':'T':xs) = pS d roco r (c+4) ('\EOT':a) xs-pS d roco r c a ('\\':'E':'N':'Q':xs) = pS d roco r (c+4) ('\ENQ':a) xs-pS d roco r c a ('\\':'A':'C':'K':xs) = pS d roco r (c+4) ('\ACK':a) xs-pS d roco r c a ('\\':'B':'E':'L':xs) = pS d roco r (c+4) ('\BEL':a) xs-pS d roco r c a ('\\':'B':'S':xs) = pS d roco r (c+3) ('\BS':a) xs-pS d roco r c a ('\\':'H':'T':xs) = pS d roco r (c+3) ('\HT':a) xs-pS d roco r c a ('\\':'L':'F':xs) = pS d roco r (c+3) ('\LF':a) xs-pS d roco r c a ('\\':'V':'T':xs) = pS d roco r (c+3) ('\VT':a) xs-pS d roco r c a ('\\':'F':'F':xs) = pS d roco r (c+3) ('\FF':a) xs-pS d roco r c a ('\\':'C':'R':xs) = pS d roco r (c+3) ('\CR':a) xs-pS d roco r c a ('\\':'S':'O':xs) = pS d roco r (c+3) ('\SO':a) xs-pS d roco r c a ('\\':'S':'I':xs) = pS d roco r (c+3) ('\SI':a) xs-pS d roco r c a ('\\':'D':'L':'E':xs) = pS d roco r (c+4) ('\DLE':a) xs-pS d roco r c a ('\\':'D':'C':'1':xs) = pS d roco r (c+4) ('\DC1':a) xs-pS d roco r c a ('\\':'D':'C':'2':xs) = pS d roco r (c+4) ('\DC2':a) xs-pS d roco r c a ('\\':'D':'C':'3':xs) = pS d roco r (c+4) ('\DC3':a) xs-pS d roco r c a ('\\':'D':'C':'4':xs) = pS d roco r (c+4) ('\DC4':a) xs-pS d roco r c a ('\\':'N':'A':'K':xs) = pS d roco r (c+4) ('\NAK':a) xs-pS d roco r c a ('\\':'S':'Y':'N':xs) = pS d roco r (c+4) ('\SYN':a) xs-pS d roco r c a ('\\':'E':'T':'B':xs) = pS d roco r (c+4) ('\ETB':a) xs-pS d roco r c a ('\\':'C':'A':'N':xs) = pS d roco r (c+4) ('\CAN':a) xs-pS d roco r c a ('\\':'E':'M':xs) = pS d roco r (c+3) ('\EM':a) xs-pS d roco r c a ('\\':'S':'U':'B':xs) = pS d roco r (c+4) ('\SUB':a) xs-pS d roco r c a ('\\':'E':'S':'C':xs) = pS d roco r (c+4) ('\ESC':a) xs-pS d roco r c a ('\\':'F':'S':xs) = pS d roco r (c+3) ('\FS':a) xs-pS d roco r c a ('\\':'G':'S':xs) = pS d roco r (c+3) ('\GS':a) xs-pS d roco r c a ('\\':'R':'S':xs) = pS d roco r (c+3) ('\RS':a) xs-pS d roco r c a ('\\':'U':'S':xs) = pS d roco r (c+3) ('\US':a) xs-pS d roco r c a ('\\':'S':'P':xs) = pS d roco r (c+3) ('\SP':a) xs-pS d roco r c a ('\\':'D':'E':'L':xs) = pS d roco r (c+4) ('\DEL':a) xs-pS d roco r c a ('\\':'^':x:xs) =- if ox >= 64 && ox <96 then -- Fusk ?- pS d roco r (c+3) (toEnum (ox-64):a) xs - else- errorLC r c ("Illegal control character '\\^" ++ [x]- ++ "' in string or character literal.")- where ox = fromEnum x-pS d roco r c a ('\\':'o':xs) = pS d roco r c' (toEnum (fromInteger n):a) xs'- where (c',n,xs') = lexInteger 8 (c+2) xs-pS d roco r c a ('\\':'x':xs) = pS d roco r c' (toEnum (fromInteger n):a) xs'- where (c',n,xs') = lexInteger (8+8) (c+2) xs-pS d roco r c a ('\\':' ':xs) = pS d roco r' c' a xs'- where (r',c',xs') = pW r (c+2) xs-pS d roco r c a ('\\':'\t':xs) = pS d roco r' c' a xs'- where (r',c',xs') = pW r (tab(c+1)) xs-pS d roco r c a ('\\':'\n':xs) = pS d roco r' c' a xs'- where (r',c',xs') = pW (r+1) 1 xs-pS d roco r c a ('\\':x:xs) =- if isDigit x then- case lexInteger 10 (c+1) (x:xs) of- (c',i,xs') -> pS d roco r c' (toEnum (fromInteger i):a) xs'- else- errorLC r c ("Illegal escape character '" ++ x: "'.")-pS d roco r c a (x:xs) =- if d == x then- (r,c+1,reverse a,xs)- else- pS d roco r (c+1) (x:a) xs--pW :: Int -> Int -> [Char] -> (Int,Int,[Char])-pW r c [] = errorLC r c "End of file in string gap."-pW r c ('\\':xs) = (r,c+1,xs)-pW r c (' ':xs) = pW r (c+1) xs-pW r c ('\t':xs) = pW r (tab c) xs-pW r c ('\n':xs) = pW (r+1) 1 xs-pW r c ('\f':xs) = pW (r+1) 1 xs-pW r c ('\v':xs) = pW (r+1) 1 xs-pW r c (x:xs) = errorLC r c ("Illegal character in string gap '" ++ x:"'.")--
− compiler98/Lexical.hs
@@ -1,95 +0,0 @@-{--Lexical analysis of a file.--}--module Lexical(lexical,lexicalCont,Lex- ,LexState,PosToken,PosTokenPre,Pos) where--import Extra(Pos,toPos,strPos,insertPos)-import Lex-import LexPre-import SysDeps(PackedString,packString,unpackPS)-import TokenId--type PosToken = (Pos,Lex, LexState, [PosTokenPre])-type LexState = [Int] -- stack of indentations of {} blocks---- 0 : no active indentation (explicit layout)--lexical :: Bool -> [Char] -> [Char] -> [PosToken]- -- with H'98 underscore -> filename -> file content -> tokens--- lexPre basically does the lexing, but afterwards iLex handles--- indentation for the layout rule-lexical u file l = iLex [0] 0 (beginning (lexPre u file' l))- where- file' = packString file- -- handle pragmas and start and missing "module" header- beginning :: [PosTokenPre] -> [PosTokenPre]- beginning toks =- case toks of- lp@((f,r,c,L_module):_) -> lp- lp@((f,r,c,L_AVARID t):_) | t==tinterface -> lp- (lp@(f,r,c,L_LANNOT):rest) -> lp: discard_pragma rest- lp -> ((file',toPos 1 0 0 0,0,L_module)- :(file',toPos 1 0 0 0,0,L_ACONID tMain)- :(file',toPos 1 0 0 0,0,L_where)- :lp)- discard_pragma (lp@(f,r,c,L_RANNOT):rest) = lp: beginning rest- discard_pragma (lp@(f,r,c,_):rest) = lp: discard_pragma rest--lexicalCont :: PosToken -> Either String [PosToken]-lexicalCont (p,t,(i:s@(i':_)),r) =- if i > 0- then -- Right ((p,t,s,r) : iLex s i' r) -- not correct?- case r of- ((f,_,_,_):_) -> Right (piLex f s i' p t r)- else Left "Layout }"-lexicalCont (p,t, [] ,r) = - Left "Layout }"----- local--iLex :: LexState -> Int -> [PosTokenPre] -> [PosToken]-iLex s i [] = []-iLex s i ((f,p,c,t):pt) = - seq p $- if c > i then- piLex f s i p t pt- else if c == i && i /= 0 && t /= L_in then- seq p' $ (p',L_SEMI',s,pt) : piLex f s i p t pt- else if c == 0 && i == 0 then- piLex f s i p t pt- else- seq p' $ (p',L_RCURL',s,pt) : iLex s' i' ((f,p,c,t):pt)- where- (_:s'@(i':_)) = s- p' = insertPos p--piLex :: PackedString -> LexState -> Int -> Pos -> Lex -> [PosTokenPre] - -> [PosToken]-piLex file s i p tok tr@((f,p',c,t'):pt)- | tok `elem` [L_let, L_where, L_of, L_do] =- (p,tok,s,tr)- : if t' == L_LCURL - then seq p' $ (p',L_LCURL, s,pt) : iLex (0:s) 0 pt - else- let p'' = insertPos p' in seq p'' $ (p'', L_LCURL',s,tr)- : if c > i then- seq p' $ piLex f (c:s) c p' t' pt- else- (p, L_RCURL',s,tr) : iLex s i tr-piLex file s i p L_LCURL pt =- (p,L_LCURL,s,pt)- : iLex (0:s) 0 pt-piLex file s i p L_RCURL pt = - if i == 0- then case s of - (_:s'@(i':_)) -> (p,L_RCURL,s,pt) : iLex s' i' pt- _ -> failPos file p "Unbalanced '}' (Stack empty)."- else failPos file p "Unbalanced '}' (No explicit '{' in scope)"-piLex file s i p t pt =- (p,t,s,pt)- : iLex s i pt---failPos file p msg = error ("Internal in " ++ unpackPS file ++ " at " ++ strPos p ++ ": " ++ msg ++ "\n")
− compiler98/MergeSort.hs
@@ -1,16 +0,0 @@-module MergeSort(group,unique) where--import Data.List(sort)--group l = groupSorted (sort l)--groupSorted [] = []-groupSorted (x:xs) = groupSorted' x [] xs- where- groupSorted' x a [] = [x:a]- groupSorted' x a (y:ys) =- if x == y- then groupSorted' x (y:a) ys- else (x:a) : groupSorted' y [] ys--unique xs = map head (group xs)
− compiler98/MkSyntax.hs
@@ -1,200 +0,0 @@-{- ----------------------------------------------------------------------------Make parts of Haskell syntax tree--}-module MkSyntax- ( mkAppExp, mkAppInst, mkCase, mkDeclClass- , mkDeclFun, mkDeclPat, mkDeclPatFun, mkEnumFrom- , mkEnumThenFrom, mkEnumToFrom, mkEnumToThenFrom- , mkLambda, mkLet, mkDo, mkFieldExp,mkExpList- , mkExpListComp, mkIf, mkInfixList- , mkInstList, mkInt, mkParExp, mkParInst, mkParType- , mkTypeList, mkPatNplusK, mkParLhs- ) where--import Extra(Pos,noPos,mergePos,mergePoss)-import TokenId-import Syntax-import SyntaxPos(HasPos(getPos))---mkParType :: Pos -> [Type TokenId] -> Type TokenId-mkParType p [t] = t-mkParType p ts = TypeCons p (t_Tuple (length ts)) ts---mkAppInst :: (Pos,a) -> [(Pos,a)] -> Type a-mkAppInst (p,c) ts = TypeCons p c (map (uncurry TypeVar) ts)---mkInfixList [e] = e-mkInfixList es = ExpInfixList (getPos es) es---mkParInst p [t] = error ("mkParInst on singleton list")-mkParInst p ts = TypeCons p (t_Tuple (length ts)) (map (uncurry TypeVar) ts)---mkInstList p id = TypeCons p t_List [TypeVar p id]---mkDeclPat :: (Pos,a) -> Exp a -> Exp a -> Rhs a -> Decls a -> Decl a-mkDeclPat (pv,var) op e@(ExpInfixList pos es) gdexps w =- DeclPat (Alt (ExpInfixList pos [ExpVar pv var,op,e]) gdexps w)-mkDeclPat (pv,var) op e gdexps w =- DeclPat (Alt (ExpInfixList pv [ExpVar pv var,op,e]) gdexps w)---mkDeclFun :: (Pos,a) -> [Pat a] -> Rhs a -> Decls a -> Decl a---mkDeclFun (pv,var) [] gdexps w =--- DeclPat (Alt (ExpVar pv var) gdexps w)-mkDeclFun (pv,var) pats gdexps w =- DeclFun (mergePoss [pv `min` getPos pats,getPos gdexps,getPos w]) - var [Fun pats gdexps w]---mkDeclPatFun :: Alt a -> Decl a-mkDeclPatFun (Alt (ExpVar pos fun) gdexps w) =- DeclFun (mergePoss [pos,getPos gdexps,getPos w]) fun [Fun [] gdexps w]--- DeclPat (Alt (ExpVar pos fun) gdexps w)-mkDeclPatFun (Alt (ExpInfixList _ [ExpVar pos fun]) gdexps w) =- DeclFun (mergePoss [pos,getPos gdexps,getPos w]) fun [Fun [] gdexps w]-mkDeclPatFun (Alt (ExpInfixList _ (ExpVar pos fun:qop:args)) gdexps w) - | notOp qop = DeclFun (mergePoss [pos,getPos gdexps,getPos w]) fun - [Fun (qop:args) gdexps w]-mkDeclPatFun alt = DeclPat alt--notOp (ExpConOp _ _) = False-notOp (ExpVarOp _ _) = False-notOp _ = True----mkRevTypeArrow p a b = TypeCons p t_Arrow [b,a]-mkTypeList p t = TypeCons p t_List [t]---- passes position of lambda-mkLambda pos pats e = - let p = mergePos pos (getPos e) in p `seq` ExpLambda p pats e---- passes position of let-mkLet pos decls e =- let p = mergePos pos (getPos e) in p `seq` ExpLet p decls e---- passes position of do-mkDo pos stmts =- let p = mergePos pos (getPos stmts) in p `seq` ExpDo p stmts---- passes position of if-mkIf pos e1 e2 e3 =- let p = mergePos pos (getPos e3) in p `seq` ExpIf p e1 e2 e3---- passes position of case-mkCase pos e alts =- let p = mergePos pos (getPos alts) in p `seq` ExpCase p e alts---mkEnumFrom pos eFrom =- ExpApplication pos [ExpVar pos tenumFrom,eFrom]-mkEnumToFrom pos eTo eFrom =- ExpApplication pos [ExpVar pos tenumFromTo,eFrom,eTo]-mkEnumThenFrom pos eThen eFrom =- ExpApplication pos [ExpVar pos tenumFromThen,eFrom,eThen]-mkEnumToThenFrom pos eTo eThen eFrom =- ExpApplication pos [ExpVar pos tenumFromThenTo,eFrom,eThen,eTo]---mkAppExp [] = error "mkAppExp"-mkAppExp [e] = e-mkAppExp es@[e1,e2] = - ExpApplication (mergePos (getPos e1) (getPos e2)) es-mkAppExp es@(e1:e2:es') =- ExpApplication (mergePos (min (getPos e1) (getPos e2)) (getPos (last es'))) - es- -- operator of infix expression is in front and first argument next---- passes positions of left and right parenthesis-mkParExp posl [ExpConOp pos' id] posr = ExpCon pos' id-mkParExp posl [ExpVarOp pos' id] posr = ExpVar pos' id-mkParExp posl [e] posr = e-mkParExp posl es posr = - let p = mergePos posl posr - in p `seq` ExpApplication p (ExpCon p (t_Tuple (length es)):es)--mkFieldExp pos ident exp =- let p = mergePos pos (getPos exp) in p `seq` FieldExp pos ident exp---- passes positions of left and right brackets-mkExpList posl exps posr =- let p = mergePos posl posr in p `seq` ExpList p exps--mkParLhs pos app args = ExpApplication pos (app:args)---- combineGroups (DeclsParse d1) (DeclsParse d2) = DeclsParse (d1++d2)--- --- mkDeclClass ctx (pos,cls) (_,arg) (csigns,valdefs) =--- DeclClass pos ctx cls arg (combineGroups csigns valdefs)---- changed in H98 to:-mkDeclClass ctx (pos,cls) posargs fundeps cdecls =- DeclClass pos ctx cls (map snd posargs) fundeps cdecls---mkExp_Colon :: Pos -> Exp TokenId-mkExp_Colon pos = ExpCon pos t_Colon--mkExp_filter :: Pos -> Exp TokenId-mkExp_filter pos = ExpVar pos t_filter--mkExp_foldr :: Pos -> Exp TokenId-mkExp_foldr pos = ExpVar pos t_foldr--mkExp_x :: Pos -> Exp TokenId-mkExp_x pos = ExpVar pos t_x-mkExp_y :: Pos -> Exp TokenId-mkExp_y pos = ExpVar pos t_y---mkExpListComp pos qs e = ExpApplication noPos [trans pos qs e,ExpList noPos []]- where- trans pos [] e =- ExpApplication pos- [mkExp_Colon pos- ,e- ]- trans pos (QualLet decls:qs) e =- ExpLet pos decls (trans pos qs e)- trans pos (QualExp exp:qs) e =- ExpApplication pos- [mkExp_filter pos- ,exp- ,trans pos qs e- ]- trans pos (QualPatExp pat exp:qs) e =- ExpApplication pos- [mkExp_foldr pos- ,ExpLambda pos- [mkExp_x noPos,mkExp_y pos]- (ExpCase noPos (mkExp_x pos)- [Alt pat- (Unguarded (ExpApplication pos [trans pos qs e,mkExp_y pos]))- (DeclsParse [])- ,Alt (PatWildcard pos)- (Unguarded (mkExp_y pos))- (DeclsParse [])- ]- )- ,exp- ]---mkInt pos i = ExpLit pos (LitInt Boxed i)--mkPatNplusK (pos,tid) (posi,integer) =- let p = mergePos pos posi in p `seq` - PatNplusK p tid undefined (ExpLit posi integer) undefined undefined--- While parsing (n+k), can't choose a unique replacement identifier n',--- so leave some fields to be filled in later.---- let k = ExpLit posi integer in--- PatNplusK pos tid undefined k (ExpApplication pos [t_lessequal,k])--- (ExpApplication pos [t_subtract,k])--{- End Module MkSyntax ------------------------------------------------------}
− compiler98/NT.hs
@@ -1,181 +0,0 @@-module NT ( NT(..), NewType(..), Kind(..)- , mkNTvar, mkNTexist, mkNTcons- , anyNT, consNT, freeNT, freshNT, polyNT, strTVar- , sndNTvar, strNT, strictNT, transCtxs, useNT- , contextNT, ntContext2Pair, stripNT, anyVarNT- ) where---import Id(Id)-import Extra(mixComma,mixSpace,mix)-import Data.Char--infixr 5 :->:-data Kind = Star | Kind :->: Kind deriving (Eq,Ord)---- Perhaps NewType is a type schema? It quantifies variables over--- an arrow of NTs.-data NewType = NoType- | NewType [Id] -- universally quantified type variables- [Id] -- existentially quantified type variables- [(Id,Id)] -- context (class, type variable)- [NT] -- simple types - -- ex.: [Int,Char,Bool] = Int->Char->Bool- deriving (Eq)--instance Show NewType where- showsPrec d (NoType) = showString " -- no type --"- showsPrec d (NewType free exist ctxs nts) = - showString (strTVarsCtxsNTs free ctxs nts)--data NT = NTany Id -- can be instantiated with unboxed - -- (needed during type checking)- | NTvar Id Kind- | NTexist Id Kind- | NTstrict NT- | NTapp NT NT- | NTcons Id Kind [NT] -- combines constructor + application- | NTcontext Id Id -- context (class, type variable)- -- purpose here completely unclear (used?)- deriving (Eq,Ord)--mkNTvar v = NTvar v Star -- simple tyvar-mkNTexist v = NTexist v Star -- simple tyvar--mkNTcons i nts = NTcons i kind nts- where kind = foldr (:->:) Star (map kindNT nts)--kindNT (NTany _) = Star-kindNT (NTvar _ k) = k-kindNT (NTexist _ k) = k-kindNT (NTapp nt1 nt2) = case (kindNT nt1) of (_:->:k) -> k-kindNT (NTcons _ k nts) = foldl (\(_:->:k') _ -> k') k nts-kindNT (NTcontext _ _) = Star--stripNT (NTany v) = v-stripNT (NTvar v _) = v-stripNT (NTexist v _) = v-stripNT (NTapp (NTvar v _) nt ) = v-stripNT nt = error ("stripNT on " ++ show nt)--strictNT (NTstrict _) = True-strictNT _ = False--ntContext2Pair (NTcontext c a) = (c,a)--contextNT (NTcontext _ _) = True-contextNT _ = False---{- Determine the type constructors that occur in the given type -}-consNT :: NT -> [Id]--consNT nt =- consNT' nt []- where- consNT' (NTstrict nt) r = consNT' nt r- consNT' (NTapp t1 t2) r = consNT' t1 (consNT' t2 r)- consNT' (NTcons c _ nts) r = c:foldr consNT' r nts- consNT' _ r = r--{- -Same as consNT except that constructor from NTcontext goes also into result.-used only in module Export --}-useNT :: NT -> [Id]--useNT (NTany a) = []-useNT (NTvar a _) = []-useNT (NTexist a _) = []-useNT (NTstrict t) = useNT t-useNT (NTapp t1 t2) = useNT t1 ++ useNT t2-useNT (NTcons a _ tas) = a:concatMap useNT tas-useNT (NTcontext c v) = [c]---{- Determine type variables that occur in given type. -}-freeNT :: NT -> [Id]--freeNT (NTany a) = [a]-freeNT (NTvar a _) = [a]-freeNT (NTexist a _) = [a]-freeNT (NTstrict t) = freeNT t-freeNT (NTapp t1 t2) = freeNT t1 ++ freeNT t2-freeNT (NTcons a _ tas) = concat (map freeNT tas)---{- -Exchange type variables according to given mapping in given type. -(not existentially quantified vars.--}-freshNT :: (Id -> Id) -> NT -> NT--freshNT tv (NTany a) = NTany (tv a)-freshNT tv (NTvar a k) = NTvar (tv a) k-freshNT tv t@(NTexist a _) = t-freshNT tv (NTstrict t) = {- NTstrict -} (freshNT tv t)-freshNT tv (NTapp t1 t2) = NTapp (freshNT tv t1) (freshNT tv t2)-freshNT tv (NTcons a k tas) = NTcons a k (map (freshNT tv) tas)-freshNT tv (NTcontext c v) = NTcontext c (tv v)--anyNT av t@(NTany a) = t-anyNT av t@(NTvar a _) = if a `elem` av then NTany a else t-anyNT av t@(NTexist a _) = t-anyNT av (NTstrict t) = NTstrict (anyNT av t)-anyNT av (NTapp t1 t2) = NTapp (anyNT av t1) (anyNT av t2)-anyNT av (NTcons a k tas) = NTcons a k (map (anyNT av) tas)--polyNT fv t@(NTany a) = if a `elem` fv then mkNTvar a else t-polyNT fv t@(NTvar a _) = t-polyNT fv t@(NTexist a _) = t-polyNT fv (NTstrict t) = NTstrict (polyNT fv t)-polyNT fv (NTapp t1 t2) = NTapp (polyNT fv t1) (polyNT fv t2)-polyNT fv (NTcons a k tas) = NTcons a k (map (polyNT fv) tas)--transCtxs tv tc ctxs = map (\(c,v) -> (tc c,tv v)) ctxs ----{- Show function for NT, parameterised by show functions for -constructors/class names and for type variables.--}-strNT :: (Int -> String) -> (Int -> String) -> NT -> String--strNT c p (NTany a) = p a++"#"-strNT c p (NTvar a _) = p a-strNT c p (NTexist a _) = p a++"?"-strNT c p (NTstrict t) = "!" ++ strNT c p t-strNT c p (NTapp t1 t2) = "(" ++ strNT c p t1 ++ " " ++ strNT c p t2 ++ ")"-strNT c p (NTcons a _ []) = c a-strNT c p (NTcons a _ tas) = "(" ++ c a ++ " " ++ mixSpace (map (strNT c p) tas) ++ ")"-strNT c p (NTcontext a v) = "(" ++ c a ++ " " ++ p a ++ ") => "--instance Show NT where- showsPrec d nt = ((strNT show (show ::(Int->String)) nt)++)--strTVar v = let cv = toEnum (v + fromEnum 'a')- in if 'a' <= cv && cv <= 'z'- then [cv]- else toEnum (v`mod`26 + fromEnum 'a'):'_':show (v`div`26)- -- else '_':show v---strCtxs :: [(Int,Int)] -> String-strCtxs [] = ""-strCtxs ctxs = "(" ++ mixComma (map ( \ (c,v) -> show c ++ ' ':strTVar v ) ctxs) ++ ") => "--strTVs [] = ""-strTVs tvs = "\\/ " ++ mixSpace (map strTVar tvs) ++ " . "--strTVarsCtxsNTs tvs ctxs [] = strTVs tvs ++ strCtxs ctxs ++ " -"-strTVarsCtxsNTs tvs ctxs nts = - strTVs tvs ++ strCtxs ctxs ++ mix " -> " (map (strNT show strTVar) nts)---sndNTvar (c,v) = (c,mkNTvar v) -- used for ctxs *** KIND??---anyVarNT :: NT -> Maybe Id-anyVarNT (NTany tvn) = Just tvn-anyVarNT (NTvar tvn _) = Just tvn-anyVarNT _ = Nothing
− compiler98/Nice.hs
@@ -1,130 +0,0 @@-{- ----------------------------------------------------------------------------Converts internal types (NewType) into a nice printable string--}-module Nice (fixTid, mkAL, mkALNT- , niceCtxs, niceField, niceInt, niceNT- , niceNewType, niceTid, showsOp, showsVar- ) where--import NT-import IntState-import Extra(dropJust,mixComma,mixSpace,assocDef)-import SysDeps(PackedString)-import TokenId-import Id(Id)--niceNT :: Maybe PackedString -- module qualifier- -> IntState -- symboltable needed for names of ids- -> [(Id,String)] -- renaming mapping for type variables- -> NT -- the type to be converted- -> String--niceNT _ state al (NTany a) = assocDef al ('?':show a ++ "?") a-niceNT _ state al (NTvar a _) = assocDef al ('?':show a ++ "?") a-niceNT _ state al (NTexist a _) = assocDef al ('?':show a ++ "?") a-niceNT m state al (NTstrict t) = "!" ++ niceNT m state al t-niceNT m state al (NTapp t1 t2) = - '(': niceNT m state al t1 ++ ' ': niceNT m state al t2 ++ ")"-niceNT m state al (NTcons a _ []) = niceInt m state a ""-niceNT m state al (NTcons a _ tas) =- case (tidI . dropJust . lookupIS state) a of- TupleId n | n > length tas -> '(':'(':replicate (n-1) ',' ++") "- ++mixSpace (map (niceNT m state al) tas)- ++ ")"- TupleId _ -> '(' : mixComma (map (niceNT m state al) tas) ++ ")"- v | v == t_Arrow ->- case tas of- [] -> "(->)"- [t1] -> "( (->) " ++ niceNT m state al t1 ++ ")"- [t1,t2] -> '(':niceNT m state al t1 ++ " -> " ++ niceNT m state al t2++")"- v | v == t_List -> "[" ++ (case tas of [] -> ""; [t] -> niceNT m state al t) ++ "]"- v -> '(': show (fixTid (mrpsIS state) v) ++ ' ': mixSpace (map (niceNT m state al) tas) ++ ")"-niceNT m state al (NTcontext c a) =- case (tidI . dropJust . lookupIS state) c of- TupleId _ -> '(' : niceNT m state al (mkNTvar a) ++ ")"- v -> '(': show (fixTid (mrpsIS state) v) ++ ' ': niceNT m state al (mkNTvar a) ++ ")"---niceCtxs :: Eq a - => Maybe PackedString - -> IntState - -> [(a,String)] - -> [(Id,a)] - -> String--niceCtxs mmrps state al [] = ""-niceCtxs mmrps state al ctxs = "(" ++ mixComma (map ( \ (c,v) -> niceInt mmrps state c (' ':assocDef al (error "niceCtx") v)) ctxs) ++ ") => "---niceInt :: Maybe PackedString -> IntState -> Id -> ShowS--niceInt Nothing state i = (niceInfo (mrpsIS state) . dropJust . lookupIS state) i-niceInt (Just mrps) state i = (niceInfo mrps . dropJust . lookupIS state) i---niceTid :: IntState -> TokenId -> ShowS--niceTid state tid = (showsVar . fixTid (mrpsIS state)) tid---niceInfo :: PackedString -> Info -> ShowS--niceInfo mrps info = (showsVar . fixTid mrps . tidI) info---{- removes module name from qualified token if it is the current module name -}-fixTid :: PackedString -- name of current module- -> TokenId - -> TokenId--fixTid mrps (Qualified tid n) | tid == mrps = Visible n-fixTid mrps v = v---{- produces renaming mapping for the free variables of given type -}-mkALNT :: NT -> [(Id,String)]--mkALNT = mkAL . freeNT---{- produces renaming mapping for given type ids -}-mkAL :: [a] -> [(a,String)]--mkAL tvs = - let tvars = map (:[]) ['a'..'z'] ++ map (++"'") tvars- in zip tvs tvars---niceNewType :: IntState -> NewType -> String--niceNewType state (NewType free exist ctx nts) =- let- al = mkAL free ++ zip (map snd ctx) (map (('_':).(:[])) ['a'..'z']) -- a-z is too short!- in niceCtxs Nothing state al ctx ++ mixSpace (map (niceNT Nothing state al) nts)---showsOp :: TokenId -> ShowS--showsOp tid =- if isTidOp tid - then shows tid- else showChar '`' . shows tid . showChar '`'---showsVar :: TokenId -> ShowS--showsVar tid =- if isTidOp tid - then showChar '(' . shows tid . showChar ')'- else shows tid---niceField :: IntState - -> [(Id,String)] -- renaming mapping for type variables- -> (Maybe Id,NT) -- (possible field id, its type)- -> String--niceField state al (Just i,nt) = (showChar '{' . shows (fixTid (mrpsIS state) (tidIS state i)) . showString " :: ")- (niceNT Nothing state al nt ++ "}")-niceField state al (Nothing,nt) =- niceNT Nothing state al nt
− compiler98/OsOnly.hs
@@ -1,121 +0,0 @@--- operating specific processing of filenames and paths-module OsOnly- (isPrelude- , fixImportNames, fixRootDir, fixDependFile, fixTypeFile, fixObjectFile- , fixHatAuxFile,fixHatTransDir,fixHatTransFile,fixHatFileBase- , hierarchical- ) where--import Data.Char (isUpper)--isPrelude str = {-take (7::Int)-} str == "Prelude"---- from complete filename determine path and pure filename without extension-fixRootDir :: Bool -> String -> (String,String)-fixRootDir isUnix s =- let rs = reverse s- in- if isUnix- then- case span (/='/') (stripUnix rs) of- (rf,rr) -> (reverse rr,reverse rf)- else- case span (/='.') rs of- (rf,rr) -> (reverse (stripRiscos rr),reverse rf)- where- stripUnix ('s':'h':'l':'.':r) = r- stripUnix ('s':'h': '.':r) = r- stripUnix r = r-- stripRiscos ('.':'s':'h':'l':rr) = rr- stripRiscos ('.':'s':'h': rr) = rr- stripRiscos rr = rr--fixImportNames :: Bool -> String -> String -> [String] -> [String]-fixImportNames isUnix suffix file rootdirs =- map (\dir-> fixDir isUnix dir ++ (fixFile isUnix file suffix)) rootdirs----- prepare path so that it can be concatenated with filename-fixDir :: Bool -> String -> String-fixDir isUnix dir- | isUnix = case (dir,last dir) of- ("",_) -> ""- (_,'/') -> dir- (_,_) -> dir ++ "/"- | otherwise = dir--fixTypeFile isUnix rootdir s = rootdir ++ fixFile isUnix s "hi"-fixObjectFile isUnix rootdir s = rootdir ++ fixFile isUnix s "hc"-fixDependFile isUnix rootdir s = rootdir ++ fixFile isUnix s "dep"-fixHatAuxFile isUnix rootdir s = rootdir ++ fixFile isUnix s "hx"-fixHatFileBase isUnix rootdir s = rootdir ++ s --fixHatTransDir isUnix rootdir =- if null rootdir then "Hat"- else if hierarchical rootdir then "Hat/"++init rootdir- else rootdir++"Hat"--fixHatTransFile isUnix rootdir s =- fixHatTransDir isUnix rootdir ++"/"++ fixFile isUnix s "hs"---- add extension to file-fixFile :: Bool -> String -> String -> String-fixFile isUnix file suf =-{-- let file = if isPrelude s- then case drop (7::Int) s of [] -> s ; r -> r- else s- in--}- if isUnix- then toUnixPath file ++ '.':suf- else suf ++ '.':maxTen file--toUnixPath :: String -> String-toUnixPath = map (\c-> if (c=='.') then '/' else c)--{- Does a directory name look like a hierarchical module namespace? -}-hierarchical :: String -> Bool-hierarchical dir =- let (a,b) = break (=='/') dir in- case b of- "" -> True- _ -> case a of- "" -> hierarchical (tail b)- "." -> False- ".." -> False- (x:_) -> isUpper x && hierarchical (tail b)---- obscure filename compression needed only for RiscOs:--maxTen file = let tolong = length file - 10- in if tolong <= 0 then file- else take (10::Int) (strip tolong file)--strip 0 xs = xs-strip n [] = []-strip n (x:xs) = if isVowel x then strip (n-1) xs else x: strip n xs--isVowel 'a' = True-isVowel 'e' = True-isVowel 'i' = True-isVowel 'o' = True-isVowel 'u' = True-isVowel 'y' = True-isVowel '\xe1' = True -- aa-isVowel '\xe0' = True -- ae-isVowel '\xf0' = True -- oe-isVowel 'A' = True-isVowel 'E' = True-isVowel 'I' = True-isVowel 'O' = True-isVowel 'U' = True-isVowel 'Y' = True-isVowel '\xc5' = True -- AA-isVowel '\xc4' = True -- AE-isVowel '\xd4' = True -- OE-isVowel _ = False---
− compiler98/Parse.hs
@@ -1,428 +0,0 @@-{- ----------------------------------------------------------------------------Parser for Haskell 98 Syntax--}-module Parse(parseProg) where--import Extra(pair,noPos,strace,strPos,mergePos)-import Lex-import Lexical(PosToken)-import Syntax-import MkSyntax ( mkAppExp, mkCase, mkDeclClass- , mkDeclFun, mkDeclPat, mkDeclPatFun, mkEnumFrom- , mkEnumThenFrom, mkEnumToFrom, mkEnumToThenFrom- , mkExpListComp, mkIf, mkInfixList, mkExpList- , mkLambda, mkLet, mkDo, mkFieldExp- , mkParExp, mkPatNplusK -- , mkParLhs- )-import Parse2-import ParseLib-import ParseLex-import SyntaxPos-import TokenId (t_nplusk,t_Arrow)--optSemi = () `parseChk` semi- `orelse`- parse ()---parseProg :: Parser (Module TokenId) [PosToken] a-parseProg = {- many parsePragma `revChk` -} (parseModule `chkCut` eof)---parseModule :: Parser (Module TokenId) [PosToken] a-parseModule =- (uncurry Module) `parseChk` lit L_module `apCut` bigModId `ap` parseExports- `chk` lit L_where `chk` lcurl- `apCut` parseImpDecls- `apCut` parseFixDecls- `apCut` parseTopDecls- `chk` optSemi `chk` rcurl---parseTopDecls :: Parser (Decls TokenId) [PosToken] a-parseTopDecls =- semi `revChk` parseTopDecls- `orelse`- DeclsParse `parseAp` manysSep semi parseTopDecl---parseTopDecl :: Parser (Decl TokenId) [PosToken] a-parseTopDecl =- cases [- (L_type, \pos -> DeclType `parseAp` parseSimple `chk` equal `ap` parseType),- (L_newtype, \pos -> - DeclData Nothing `parseAp` parseContexts `ap` parseSimple `chk` - equal `apCut` ( (:[]) `parseAp` parseConstr) `apCut` parseDeriving),- (L_data, \pos -> - (\ (pos,conid) size -> DeclDataPrim pos conid size) `parseChk` - k_primitive `ap` conid `chk` equal `apCut` intPrim- `orelse`- (DeclData . Just) `parseAp` unboxed `ap` parseContexts `ap` - parseSimple `chk` equal `apCut`- someSep pipe parseConstr `apCut` parseDeriving- `orelse`- (\ simpl -> DeclData (Just False) [] simpl [] []) `parseAp` parseSimple ),- (L_class, \pos -> - mkDeclClass `parseAp` parseContexts `ap` aconid `ap` some avarid `ap` - parseFunDeps `ap`- (id `parseChk` lit L_where `chk` lcurl `ap` parseCDecls `chk` rcurl- `orelse` - parse (DeclsParse [])- )), - (L_instance, \pos-> - (\ctx (pos',cls) -> DeclInstance pos' ctx cls) `parseAp` - parseContexts `ap` aconid `ap` some parseInst `ap` - (lit L_where `revChk` lcurl `revChk` parseValdefs `chk` rcurl- `orelse`- parse (DeclsParse [])- )),- (L_default, \pos -> - DeclDefault `parseChk` lpar `apCut` - manySep comma parseType `chk` rpar- `orelse`- (\x->DeclDefault [x]) `parseAp` parseType)- ]- (uncurry DeclPrimitive `parseAp` varid `chk` k_primitive `apCut` - intPrim `chk` coloncolon `ap` parseType- `orelse`- parseForeign- `orelse`- parseDecl)---parseFunDeps :: Parser [FunDep TokenId] [PosToken] a-parseFunDeps =- pipe `revChk` someSep comma parseFunDep- `orelse`- parse []--parseFunDep :: Parser (FunDep TokenId) [PosToken] a-parseFunDep =- (:->:) `parseAp` parseTyVars `chk` rarrow `ap` parseTyVars- where- parseTyVars :: Parser [TokenId] [PosToken] a- parseTyVars =- map snd `parseAp` some avarid- -- map snd `parseAp` (lpar `revChk` someSep comma avarid `chk` rpar)- -- `orelse`- -- ((:[]) . snd) `parseAp` varid--parseForeign :: Parser (Decl TokenId) [PosToken] a-parseForeign =- k_foreign `revAp`- ((k_import `revChk` - ((\(_,conv) (_,tf) (_,LitString _ str) (_,v) t p -> - DeclForeignImp (mergePos p (getPos t)) conv str v - (calcArity t) tf t v)- `parseAp` callconv `ap` safety `ap` entity `ap` varid `chk` - coloncolon `apCut` parseType))- `orelse`- (k_export `revChk`- ((\(_,conv) (_,LitString _ str) (_,v) t p-> - DeclForeignExp (mergePos p (getPos t)) conv str v t)- `parseAp` callconv `ap` entity `apCut` varid `chk` coloncolon - `ap` parseType))- `orelse`- (k_import `revChk` -- old syntax, will be removed in the future- ((\(_,conv) (_,LitString _ str) (_,tf) (_,v) t p -> - let p' = mergePos p (getPos t) in- strace ("Deprecated FFI syntax used at "++strPos p') $- DeclForeignImp p' conv str v (calcArity t) tf t v)- `parseAp` (callconv `orelse` is C) `ap` entity `ap`- safety `apCut` varid `chk` coloncolon `ap` parseType))- -- `orelse`- -- (k_cast `revChk` - -- ((\(p,v) t-> DeclForeignImp p Cast "" v (calcArity t) Safe t v)- -- `parseAp` varid `chk` coloncolon `ap` parseType))- )- where- callconv = (k_ccall `revChk` is C)- `orelse` - (k_cast `revChk` is Cast)- `orelse`- (k_noproto `revChk` is Noproto)- `orelse`- (k_haskellcall `revChk` is Haskell)- `orelse` - (k_stdcall `revChk` is (Other "stdcall"))- `orelse` - (k_cplusplus `revChk` is (Other "cplusplus"))- `orelse` - (k_dotnet `revChk` is (Other "dotnet"))- `orelse` - (k_jvm `revChk` is (Other "jvm"))- -- `orelse` - -- (is C) -- previously the default, now the name is mandatory- is v = parse (noPos,v)- entity = string `orelse` is (LitString UnBoxed "")- safety = (k_unsafe `revChk` is Unsafe)- `orelse`- (k_safe `revChk` is Safe)- `orelse`- (is Safe) -- default is Safe- calcArity (TypeCons p c ts) | c == t_Arrow = 1 + calcArity (ts!!1)- calcArity _ | otherwise = 0---parseVarsType :: Parser (Decl TokenId) [PosToken] a-parseVarsType =- DeclVarsType `parseAp` someSep comma varid `chk` coloncolon `ap` - parseContexts `ap` parseType--{--parseNewConstr =- (\ (pos,op) a -> [Constr pos op [(Nothing,a)]]) `parseAp` conid `ap` parseInst--}----- parseCSigns = DeclsParse `parseAp` manySep semi parseCSign--- parseCSign = parseVarsType--parseCDecls :: Parser (Decls TokenId) [PosToken] a -parseCDecls = DeclsParse `parseAp` (manysSep semi parseCDecl) -- H98 added--parseCDecl :: Parser (Decl TokenId) [PosToken] a-parseCDecl = parseVarsType `orelse` parseValdef- `orelse` (DeclFixity `parseAp` parseFixDecl)---parseValdefs :: Parser (Decls TokenId) [PosToken] a-parseValdefs =- semi `revChk` parseValdefs- `orelse`- DeclsParse `parseAp` manysSep semi parseValdef---parseValdef :: Parser (Decl TokenId) [PosToken] a-parseValdef =- mkDeclPat `parseAp` varid `ap` anyop `ap` parsePat `ap` - parseRhs equal `apCut` parseWhere- `orelse` - mkDeclFun `parseAp` varid `ap` parsePats `ap` parseRhs equal `apCut` - parseWhere- `orelse` - mkDeclPatFun `parseAp` parseAlt equal---parseWhere :: Parser (Decls TokenId) [PosToken] a-parseWhere =- lit L_where `revChk` lcurl `revChk` parseDecls `chk` rcurl- `orelse`- parse (DeclsParse [])---parseDecls = DeclsParse `parseAp` (manysSep semi parseDecl)--parseDecl =- parseVarsType- `orelse`- parseValdef- `orelse` -- added in H98- DeclFixity `parseAp` parseFixDecl -- added in H98- {- `orelse`- parsePragma -- added by MW, Sept 2000- -}---parseExp :: Parser (Exp TokenId) [PosToken] a-parseExp =- parseExp0 `revAp` parseExpType--parseExpType :: Parser (Exp TokenId -> Exp TokenId) [PosToken] a-parseExpType =- (\pos ctx t e-> ExpType (mergePos pos (getPos t)) e ctx t) - `parseAp` coloncolon `apCut`- parseContexts `ap` parseType- `orelse`- parse id--parseExp0 :: Parser (Exp TokenId) [PosToken] a-parseExp0 = mkInfixList `parseAp` some (anyop `orelse` parseExp10)--parseStmt =- (lit L_let `into` \_-> lcurl `into` \_-> parseDecls `into`- \decls-> rcurl `into` \_->- ((lit L_in `into` \_-> parseExp `into`- \exp-> parse (StmtExp (ExpLet - (mergePos (getPos decls) (getPos exp)) decls exp)))- `orelse`- parse (StmtLet decls)))- `orelse`- StmtBind `parseAp` parsePat `chk` larrow `apCut` parseExp- `orelse`- StmtExp `parseAp` parseExp--parseExp10 =- cases - [(L_Lambda,\pos -> (mkLambda pos) - `parseAp` parsePats `chk` rarrow `apCut` parseExp),- (L_let, \pos -> (mkLet pos)- `parseChk` lcurl `ap` parseDecls - `chk` optSemi `chk` rcurl- `chk` lit L_in `ap` parseExp),- (L_do, \pos -> (mkDo pos)- `parseChk` lcurl `ap` somesSep semi parseStmt- `chk` optSemi `chk` rcurl),- (L_if, \pos -> (mkIf pos) - `parseAp` parseExp - `chk` lit L_then `ap` parseExp- `chk` lit L_else `ap` parseExp),- (L_case, \pos -> (mkCase pos) - `parseAp` parseExp `chk` lit L_of- `chk` lcurl `ap` (somesSep semi (parseAlt rarrow)) - `chk` optSemi `chk` rcurl)]- parseFExp--parseFExp = mkAppExp `parseAp` some parseAExpR1--parseAExpR1 =- parseAExp `into` parseAExpR--parseAExpR exp = - (ExpRecord exp `parseChk` lcurl `ap` manySep comma parseFieldExp `chk` rcurl) `into` parseAExpR- `orelse`- parse exp--parseAExp = - aanyid- `orelse`- cases - [(L_LBRACK, \pos -> parseBrackExp0 pos),- (L_LPAR, \pos -> (mkParExp pos) `parseAp` manySep comma parseExp- `ap` rpar)]- (uncurry ExpLit `parseAp`- (integer `orelse` rational `orelse` char `orelse` string))---parseFieldExp =- varid `into` (\(pos,ident)-> (mkFieldExp pos ident `parseChk` equal- `ap` parseExp)- `orelse` -- H98 removes- parse (FieldPun pos ident) -- H98 removes- )--parseBrackExp0 pos = -- found '['- (mkExpList pos []) `parseAp` rbrack- `orelse`- parseExp `revAp` parseBrackExp1 pos--parseBrackExp1 pos = -- found '[e'- (\posr e -> mkExpList pos [e] posr) `parseAp` rbrack- `orelse`- mkEnumFrom pos `parseChk` dotdot `chk` rbrack- `orelse`- mkExpListComp pos `parseChk` pipe `ap` somesSep comma parseQual `chk` rbrack- `orelse`- mkEnumToFrom pos `parseChk` dotdot `ap` parseExp `chk` rbrack- `orelse`- comma `revChk` (parseExp `revAp` parseBrackExp2 pos)--parseBrackExp2 pos = -- found '[e,e'- (\posr e2 e1 -> mkExpList pos [e1,e2] posr) `parseAp` rbrack- `orelse`- mkEnumThenFrom pos `parseChk` dotdot `chk` rbrack- `orelse`- mkEnumToThenFrom pos `parseChk` dotdot `ap` parseExp `chk` rbrack- `orelse`- (\es posr e2 e1 -> mkExpList pos (e1:e2:es) posr) `parseChk` comma- `ap` manySep comma parseExp- `ap` rbrack--parseQual =- (lit L_let `into` \_-> lcurl `into` \_-> parseDecls `into`- \decls-> rcurl `into` \ _ ->- ((lit L_in `into` \_-> parseExp `into` \exp->- parse (QualExp (ExpLet (getPos decls) decls exp)))- `orelse`- parse (QualLet decls)))- `orelse`- QualPatExp `parseAp` parsePat `chk` larrow `apCut` parseExp- `orelse`- QualExp `parseAp` parseExp--parseAlt del =- Alt `parseAp` parsePat `ap` parseRhs del `apCut` parseWhere---parseRhs :: Parser Pos [PosToken] a -> Parser (Rhs TokenId) [PosToken] a-parseRhs del =- Unguarded `parseChk` del `apCut` parseExp- `orelse`- Guarded `parseAp` some (parseGdExp del)---parseGdExp :: Parser Pos [PosToken] a - -> Parser (Exp TokenId, Exp TokenId) [PosToken] a-parseGdExp del =- pair `parseChk` pipe `apCut` parseExp `chk` del `apCut` parseExp---parsePats = some parseAPat----- Pat can not contain cut! It brakes parseStmt if it does.--manySafe p = someSafe p `orelse` parse []-someSafe p = (:) `parseAp` p `ap` manySafe p--manySepSafe' s p = s `revChk` someSepSafe s p- `orelse`- parse []-manySepSafe s p = someSepSafe s p `orelse` parse []-someSepSafe s p = (:) `parseAp` p `apCut` manySepSafe' s p--parsePat =- mkPatNplusK `parseAp` varid `chk` literal (L_AVAROP t_nplusk) `ap` integer- `orelse`- parsePat0--parsePat0 = mkInfixList `parseAp` someSafe (parseOpPat `orelse` parseFPat)--parseOpPat = anyop--parseFPat =- (\(pos,c) args -> mkAppExp (ExpCon pos c:args))- `parseAp` conid `ap` some parseAPat- `orelse`- parseAPat--parseAPat = parseAPat2 `into` parseAPat1--parseFieldPat =- varid `into` (\(pos,ident)-> mkFieldExp pos ident `parseChk` equal- `ap` parsePat- `orelse` -- H98 removes- parse (FieldPun pos ident) -- H98 removes- )--parseAPat1 exp =- (ExpRecord exp `parseChk` lcurl `ap` manySepSafe comma parseFieldPat- `chk` rcurl) `into` parseAPat1- `orelse`- parse exp- --parseAPat2 =- varid `revAp` ((\e (pos,i) -> let p = mergePos pos (getPos e) - in p `seq` PatAs pos i e) - `parseChk` lit L_At `ap` parseAPat- `orelse`- parse (\ (pos,e) -> ExpVar pos e)- )- `orelse`- (\(pos,e) -> ExpCon pos e) `parseAp` aconid- `orelse`- PatWildcard `parseAp` lit L_Underscore- `orelse`- mkParExp `parseAp` lpar `ap` manySepSafe comma parsePat `ap` rpar- `orelse`- mkExpList `parseAp` lbrack `ap` manySepSafe comma parsePat `ap` rbrack- `orelse`- PatIrrefutable `parseAp` lit L_Tidle `ap` parseAPat- `orelse`- (uncurry ExpLit `parseAp`- (integer `orelse` rational `orelse` char `orelse` string))- -- `orelse`- -- mkParLhs `parseAp` lpar `ap` parsePat0 `chk` rpar `ap` someSafe parseAPat--{- End Module Parse ---------------------------------------------------------}
− compiler98/Parse2.hs
@@ -1,258 +0,0 @@-module Parse2- ( parseConstr, parseContexts, parseDeriving, parseFixDecls- , parseFixDecl, parseImpDecls, parseInst, parseSimple, parseType- , parseExports, parseStrict, parsePragma- , bigModId- ) where--import Extra(pair,triple)-import Lex hiding (TokenId)-import Syntax hiding (TokenId)-import Lexical (PosToken)-import MkSyntax-import ParseLib-import ParseLex-import SyntaxPos-import TokenId(t_Arrow,TokenId(..))-import SysDeps (packString,unpackPS)--parseExports =- Just `parseChk` lpar `apCut` manySep comma parseExport `chk` - optional comma `chk` rpar- `orelse`- parse Nothing `chk` (lit (L_ACONID (TupleId 0))- `orelse`- lit (L_ACONID (TupleId 2)))- `orelse`- parse (Just [])--parseExport =- (uncurry ExportModid) `parseChk` lit L_module `apCut` bigModId -- 1.3- `orelse`- -- (uncurry ExportModid) `parseAp` aconid `chk` dotdot -- 1.2- -- `orelse`- (\e -> ExportEntity (getPos e) e) `parseAp` parseEntity--parseImpDecls =- manysSep semi parseImpDecl--parseImpDecl =- Importas `parseChk` lit L_import `ap` bigModId- `chk` k_as `ap` bigModId `ap` parseImpSpec -- added in H98- `orelse`- importas `parseChk` lit L_import `ap` aconid `ap` parseImpSpec- `orelse`- ImportQas `parseChk` lit L_import `chk` k_qualified `ap` bigModId- `chk` k_as `ap` bigModId `ap` parseImpSpec- `orelse`- importQas `parseChk` lit L_import `chk` k_qualified- `ap` aconid `ap` parseImpSpec -- impSpec is FAKE- where- importas m@(p,Visible _) s = Import m s- importas m@(p,Qualified a b) s = Import (deQualify m) s- -- importas m@(p,Qualified a b) s = Importas (deQualify m) (p,Visible b) s- importQas m@(p,Visible _) s = ImportQ m s- importQas m@(p,Qualified a b) s = ImportQ (deQualify m) s- -- importQas m@(p,Qualified a b) s = ImportQas (deQualify m) (p,Visible b) s--bigModId = deQualify `parseAp` aconid--deQualify m@(pos,Visible _) = m-deQualify (pos,Qualified a b) = (pos, (Visible . packString . concat)- [unpackPS b,".",unpackPS a])---parseImpSpec =- (NoHiding []) `parseChk` (k_unit `orelse` lit (L_ACONID (TupleId 2)))- -- fix for import Module() and import Module (,)- `orelse`- NoHiding `parseChk` lpar `apCut` manySep comma parseEntity `chk` - optional comma `chk` rpar- `orelse`- Hiding `parseChk` k_hiding `chk` lpar `apCut`- manySep comma parseEntity `chk` optional comma `chk` rpar- `orelse`- (Hiding []) `parseChk` k_hiding `chk` (k_unit `orelse`- lit (L_ACONID (TupleId 2)))- -- fix for hiding () and hiding (,)- `orelse`- parse (Hiding [])--parseEntity =- (uncurry EntityConClsAll) `parseAp` aconid `chk`- lpar `chk` dotdot `chk` rpar- `orelse`- (\(pos,x) -> EntityConClsSome pos x []) `parseAp` aconid `chk` tuple0- `orelse`- (uncurry EntityConClsSome) `parseAp` aconid `chk`- lpar `ap` (manySep comma (conid `orelse` varid)) `chk` rpar- `orelse`- (uncurry EntityConClsSome) `parseAp` aconid `ap` (parse []) - `orelse`- (uncurry EntityVar) `parseAp` varid---parseFixDecls =- semi `revChk` parseFixDecls- `orelse`- manysSep semi parseFixDecl--defint d =- intPrim- `orelse`- parse d--parseInfix = InfixL `parseChk` lit L_infixl- `orelse`- InfixR `parseChk` lit L_infixr- `orelse`- Infix `parseChk` lit L_infix--parseFixDecl =- triple `parseAp` parseInfix `ap` defint 9 `ap` someSep comma parseFixId- `orelse`- k_prefix `into` \ _ -> varid `into` \ (p,v) -> defint 9 `into` \ l -> parseFixId `into` \ fid ->- parse (InfixPre v,l,[fid])--parseFixId = - (uncurry FixCon) `parseAp` conop- `orelse`- (uncurry FixVar) `parseAp` varop---parseType = - parseBType `into` parseCType- `into` \ t1 -> (- (\ pos t2 -> TypeCons pos t_Arrow [t1,t2]) `parseAp` rarrow `apCut` parseType- `orelse`- parse t1)--parseCType t1 = - parseAType `into` (\ t2 -> parseCType (TypeApp t1 t2))- `orelse`- parse t1--parseBType = - ( \ (pos,c) ts -> TypeCons pos c ts) `parseAp` conid `ap` some parseAType- `orelse`- parseAType--parseAType = - (uncurry TypeVar) `parseAp` varid- `orelse`- (\(pos,c) -> TypeCons pos c []) `parseAp` conid- `orelse`- mkParType `parseAp` lpar `apCut` manySep comma parseType `chk` rpar- `orelse`- mkTypeList `parseAp` lbrack `apCut` parseType `chk` rbrack- --parseContexts =- lpar `revChk` manySep comma parseContext `chk` rpar `chk` impl- `orelse`- (:[]) `parseAp` parseContext `chk` impl- `orelse`- parse [] `chk` tuple0 `chk` impl- `orelse`- parse []--parseContext = - (\ (pos,c) pt_t -> Context pos c pt_t) `parseAp` conid `ap` some varid--parseSimple :: Parser (Simple TokenId) [PosToken] c-parseSimple =- (uncurry Simple) `parseAp` conid `ap` many varid--parseConstr =- (k_forall `revChk` some varid `into` \ free -> k_dot `revChk` parseConstr' free)- `orelse`- parseConstr' []--parseConstr' free =- (\a (pos,op) b -> (if null free - then Constr pos op [a,b]- else ConstrCtx free [] pos op [a,b]))- `parseAp` parseOneFieldType `ap` conop `ap` parseOneFieldType- `orelse`- (\ctxs (pos,op) a ->- case ctxs of- [] -> (if null free - then Constr pos op (concat a)- else ConstrCtx free [] pos op (concat a))- _ -> ConstrCtx free ctxs pos op (concat a)) `parseAp` parseContexts - `ap` conid `ap` many parseManyFieldType--parseOneFieldType =- (\ field typ -> (Just [field],typ)) `parseChk` lcurl `apCut` varid `chk` coloncolon `ap` parseSBType `chk` rcurl - `orelse`- (pair Nothing) `parseAp` parseSBType---parseManyFieldType =- lcurl `into` (\ _ -> manySep comma parseManyFieldType' `chk` rcurl) -- { v1,...,v2::typeN , ... w1,...,wN::typeN } - `orelse`- ((:[]).pair Nothing) `parseAp` (parseStrict parseAType)--parseManyFieldType' =- (\ fields typ -> (Just fields,typ)) `parseAp` someSep comma varid `chk` coloncolon `ap` parseSBType -- v1,...,v2::typeN --parseSBType =- parseStrict parseType- `orelse`- parseType--parseStrict p =- TypeStrict `parseAp` bang `ap` p- `orelse`- p--parseDeriving :: Parser [(Pos, TokenId)] [PosToken] b-parseDeriving =- lit L_deriving `revChk` lpar `revChk` manySep comma conid `chk` rpar- `orelse`- parse [] `chk` lit L_deriving `chk` tuple0- `orelse`- (:[]) `parseChk` lit L_deriving `apCut` conid- `orelse`- parse []--{- The following code parses Haskell'98 instance heads.--- H'98 is much more restrictive about the possible types in an instance--- than MPTC with fundeps.-parseInst =- (\ (p,c) -> TypeCons p c []) `parseAp` conid -- type without arguments- `orelse`- lpar `revChk` parseInst' `chkCut` rpar -- type inside parenthesis- `orelse`- (\p (_,pat) -> mkInstList p pat) `parseAp` lbrack `apCut` varid- `chk` rbrack -- the list type--parseInst' =- lpar `revChk` parseInst' `chkCut` rpar -- useless extra parenthesis- `orelse`- varid `revAp` ((\pos (pa,a) (pb,b) ->- TypeCons pos t_Arrow [TypeVar pb b,TypeVar pa a])- `parseAp` rarrow `apCut` varid- `orelse`- (\a b@(p,_) -> mkParInst p (b:a)) `parseChk` comma- `apCut` someSep comma varid- )- `orelse`- mkAppInst `parseAp` conid `ap` many varid- `orelse`- (\pos-> TypeCons pos t_Arrow []) `parseAp` k_rarrow- `orelse`--- (TypeCons noPos (t_Tuple 0) []) `parseChk` lpar `chk` rpar--- `orelse`- parse (TypeCons noPos (t_Tuple 0) [])--}-parseInst = parseAType--parsePragma =- DeclIgnore "PRAGMA" `parseChk` lannot `chk`- many notRannot `chk` rannot--{- possible extension for when we want to use pragmas in nhc98 -}---parsePragma =--- DeclPragma `parseChk` lannot `ap` conid `chk`--- ("" `parseChk` many notRannot) `chk` rannot
− compiler98/ParseCore.hs
@@ -1,86 +0,0 @@-module ParseCore(Pos,ParseError,ParseResult,ParseBad,ParseGood,Parser- ,initError,initBad,initGood -- Start values for parseError,parseBad, parseGood- ,parseit -- entry for parsing- ,parse,ap,chk,orelse,into -- The core- ,token -- parse terminal- ,parseFail -- Failing parser- ,maxError -- Keep "best" error message- ) where--import Extra(noPos,Pos)--infixl 5 `ap`-infixl 5 `chk`-infixr 4 `orelse`---- #if defined(__HASKELL98__)--- #define EVAL(b)--- #else--- #define EVAL(b) (Eval b) =>--- #endif----- Define types--- parameters:--- i = input to be parsed--- a = resulting syntax tree--- c = other return value-type ParseError = (Pos,String,[String])-type ParseResult a i = Either ParseError (a,i,ParseError) -type ParseBad a i = ParseError -> ParseResult a i -type ParseGood a i c = a -> i -> ParseError -> ParseResult c i-type Parser a i c = ParseGood a i c -> ParseBad c i -> i -> ParseError -> ParseResult c i ----- start values-initError :: ParseError-initError = (noPos,"Hu?",["No error"])--initBad :: ParseBad a i-initBad = \err -> Left err--initGood :: ParseGood a i a-initGood = \res input err -> Right (res,input,err)--parseit :: Parser a i a -> i -> Either ParseError a--parseit p input = parseit' (p initGood initBad input initError)--parseit' (Left err) = Left err-parseit' (Right (a,_,_)) = Right a----- The core-parse :: a -> Parser a i b-parse x = \good bad -> good x--ap :: Parser (a->b) i c -> Parser a i c -> Parser b i c-ap x y = \good bad ->- x (\u -> y (\v -> let uv = u v in seq uv (good uv) ) bad)- bad--chk :: Parser b i c -> Parser a i c -> Parser b i c-chk x y = \good bad ->- x (\u -> y (\_ -> good u) bad)- bad--into :: Parser a i c -> (a->Parser b i c) -> Parser b i c-into x y = \good bad ->- x (\u -> y u good bad)- bad--orelse :: Parser a i b -> Parser a i b -> Parser a i b-x `orelse` y = \good bad input ->- x good (y good bad input) input--token :: (Show b) => (Pos -> b -> Either String d) -> Parser d [(Pos,b,e,f)] h-token p = \good bad ((pos,t,_,_):input) err ->- case p pos t of- Right tt' -> good tt' input err- Left f -> bad (maxError (pos,show t,[f]) err)--parseFail :: Parser a i b-parseFail = \good bad input err -> bad err---maxError (a@(pa,ta,ma)) (b@(pb,tb,mb)) =- if pa > pb then a- else if pb > pa then b- else (pa,ta,ma++mb)
− compiler98/ParseLex.hs
@@ -1,160 +0,0 @@-module ParseLex where--import Lex-import Lexical-import Syntax(Lit(..),Boxed(..),Exp(..))-import ParseLib-import TokenId(isUnit,t_Bang,tprefix,tas,tunboxed,tprimitive,t_Tuple- ,tforall,tdot,t_Arrow- ,t_foreign,t_export,t_ccall,t_haskell,t_unsafe,t_cast,t_noproto- ,t_stdcall,t_cplusplus,t_dotnet,t_jvm,t_safe- ,tinterface,thiding,tqualified)---lit a = literal (a::Lex)--eof :: Parser Pos [PosToken] c-eof = lit L_EOF--unboxed = - True `parseChk` k_unboxed - `orelse`- parse False- -lbrack :: Parser Pos [PosToken] c-lbrack = lit L_LBRACK-rbrack :: Parser Pos [PosToken] c-rbrack = lit L_RBRACK-lpar :: Parser Pos [PosToken] c-lpar = lit L_LPAR-rpar :: Parser Pos [PosToken] c-rpar = lit L_RPAR-lannot :: Parser Pos [PosToken] c-lannot = lit L_LANNOT-rannot :: Parser Pos [PosToken] c-rannot = lit L_RANNOT--notRannot :: Parser Pos [PosToken] c-notRannot = token (\pos t -> case t of L_RANNOT -> Left "/= #-}"; x -> Right pos )--bang :: Parser Pos [PosToken] c-bang = lvarop t_Bang "!"---- "special" identifiers which are *not* language keywords.-k_interface = lvarid tinterface "interface"-k_qualified = lvarid tqualified "qualified"-k_hiding = lvarid thiding "hiding"-k_as = lvarid tas "as"-k_unit = lconid (t_Tuple 0) "()"-k_primitive = lvarid tprimitive "primitive"-k_prefix = lvarid tprefix "prefix"-k_unboxed = lvarid tunboxed "unboxed"-k_forall = lvarid tforall "forall"-k_dot = lvarop tdot "dot"-k_rarrow = lvarop t_Arrow "->"---- "special" identifiers for FFI which are not (all) language keywords.-k_foreign = lvarid t_foreign "foreign"-k_import = lit L_import-k_export = lvarid t_export "export"-k_ccall = lvarid t_ccall "ccall"-k_stdcall = lvarid t_stdcall "stdcall"-k_cplusplus = lvarid t_cplusplus "cplusplus"-k_dotnet = lvarid t_dotnet "dotnet"-k_jvm = lvarid t_jvm "jvm"-k_haskellcall = lvarid t_haskell "haskell"-k_safe = lvarid t_safe "safe"-k_unsafe = lvarid t_unsafe "unsafe"-k_noproto = lvarid t_noproto "noproto"-k_cast = lvarid t_cast "cast"--lvarop :: TokenId -> String -> Parser Pos [PosToken] c-lvarop tid str = token (\pos t -> case t of L_AVAROP v | v == tid -> Right pos; x -> Left str)--lvarid :: TokenId -> String -> Parser Pos [PosToken] c-lvarid tid str = token (\pos t -> case t of L_AVARID v | v == tid -> Right pos; x -> Left str)--lconid :: TokenId -> String -> Parser Pos [PosToken] c-lconid tid str = token (\pos t -> case t of L_ACONID v | v == tid -> Right pos; x -> Left str)--lcurl :: Parser Pos [PosToken] c-lcurl = lit L_LCURL' `orelse` lit L_LCURL-larrow :: Parser Pos [PosToken] c-larrow = lit L_LessMinus-rarrow :: Parser Pos [PosToken] c-rarrow = lit L_MinusGreater-impl :: Parser Pos [PosToken] c-impl = lit L_EqualGreater-comma :: Parser Pos [PosToken] c-comma = lit L_COMMA-semi :: Parser Pos [PosToken] c-semi = lit L_SEMI' `orelse` lit L_SEMI-equal :: Parser Pos [PosToken] c-equal = lit L_Equal-pipe :: Parser Pos [PosToken] c-pipe = lit L_Pipe-dotdot :: Parser Pos [PosToken] c-dotdot = lit L_DotDot-coloncolon :: Parser Pos [PosToken] c-coloncolon = lit L_ColonColon-backtick :: Parser Pos [PosToken] c-backtick = lit L_BACKTICK--rational :: Parser (Pos,Lit Boxed) [PosToken] c-rational = token (\pos t -> case t of L_RATIONAL x -> Right (pos, LitRational Boxed x) ; _ -> Left "<rational>")-integer :: Parser (Pos,Lit Boxed) [PosToken] c-integer = token (\pos t -> case t of L_INTEGER x -> Right (pos, LitInteger Boxed x) ; _ -> Left "<integer>")-int :: Parser (Pos,Lit Boxed) [PosToken] c-int = token (\pos t -> case t of L_INTEGER x -> Right (pos, LitInt Boxed (fromInteger x)) ; _ -> Left "<int>")-intPrim = token (\pos t -> case t of L_INTEGER x -> Right ((fromInteger x) :: Int) ; _ -> Left "<intPrim>")---- double :: Parser (Pos,Lit Boxed) [PosToken] c--- double = token (\pos t -> case t of L_DOUBLE x -> Right (pos, LitDouble Boxed x) ; _ -> Left "<double>")-char :: Parser (Pos,Lit Boxed) [PosToken] c-char = token (\pos t -> case t of L_CHAR x -> Right (pos, LitChar Boxed x) ; _ -> Left "<char>")-string :: Parser (Pos,Lit Boxed) [PosToken] c-string = token (\pos t -> case t of L_STRING x -> Right (pos, LitString Boxed x) ; _ -> Left "<string>")--tuple0 = token (\pos t -> case t of L_ACONID x | isUnit x -> Right (pos,x) ; _ -> Left "()")--aconid = token (\pos t -> case t of L_ACONID x -> Right (pos,x) ; _ -> Left "<conid>")-aconop = token (\pos t -> case t of L_ACONOP x -> Right (pos,x) ; _ -> Left "<conop>")-avarid = token (\pos t -> case t of L_AVARID x -> Right (pos,x)--- L_primitive -> Right (pos,tprimitive) -- Not a Haskell 1.3 reserved word--- L_prefix -> Right (pos,tprefix) -- Not a Haskell 1.3 reserved word--- L_unboxed -> Right (pos,tunboxed) -- Not a Haskell 1.3 reserved word--- L_as -> Right (pos,tas) -- Not a Haskell 1.3 reserved word- _ -> Left "<varid>")-avarop = token (\pos t -> case t of L_AVAROP x -> Right (pos,x) ; _ -> Left "<varop>")--varid = avarid- `orelse`- lpar `revChk` avarop `chk` rpar-conid = aconid- `orelse`- lpar `revChk` aconop `chk` rpar--varop = avarop- `orelse`- backtick `revChk` avarid `chk` backtick---conop = aconop- `orelse`- backtick `revChk` aconid `chk` backtick--anyop = (uncurry ExpConOp) `parseAp` conop- `orelse`- (uncurry ExpVarOp) `parseAp` varop--anyid = (uncurry ExpCon) `parseAp` conid- `orelse`- (uncurry ExpVar) `parseAp` varid--aanyid = (uncurry ExpCon) `parseAp` aconid- `orelse`- (uncurry ExpVar) `parseAp` avarid--aanyop = (uncurry ExpConOp) `parseAp` aconop- `orelse`- (uncurry ExpVarOp) `parseAp` avarop
− compiler98/ParseLib.hs
@@ -1,165 +0,0 @@-module ParseLib(-- defined in ParseCore- Pos, ParseError, ParseResult- ,ParseBad, ParseGood, Parser- ,initError,initBad,initGood -- Start values for parseError,- -- parseBad, parseGood- ,parseit- ,parse, ap, chk, orelse, into -- The core- ,token -- parse terminal- ,parseFail -- Failing parser- -- defined in ParseLib- ,revAp -- Apply snd to fst- ,revChk -- Check fst- ,cases -- Muliple chk- ,parseAp, parseChk -- parse & (ap | chk)- ,apCut, chkCut, intoCut -- No return if fst succeed- ,literal -- Parse literal- ,optional, Maybe -- Zero or one item- ,many, some -- Zero/one or more items.- -- Cut after each item.- ,manySep, someSep -- Zero/one or more items with- -- separator. Cut after each- -- item.- ,manysSep, somesSep -- Zero/one or more items with- -- one or more separators. Cut- -- after each item.- ,rcurl -- Parse '}' and fix one if- -- needed and possible.- ,parseRest -- Always true, returns rest- -- of the input- ) where--import Lex-import Lexical(PosToken,lexicalCont)-import ParseCore--infixl 5 `parseAp`-infixl 5 `revAp`-infixl 5 `apCut`-infixl 5 `parseChk`-infixl 5 `revChk`-infixl 5 `chkCut`---- #if defined(__HASKELL98__)--- #define EVAL(b)--- #else--- #define EVAL(b) (Eval b) =>--- #endif---revAp :: Parser a i c -> Parser (a->b) i c -> Parser b i c-revAp x y = \good bad ->- x (\u -> y (\v -> let vu = v u in seq vu (good vu)) bad)- bad--revChk :: Parser a i c -> Parser b i c -> Parser b i c-revChk x y = \good bad ->- x (\_ -> y good bad)- bad---cases :: [(Lex,Pos -> Parser b [PosToken] c)]- -> Parser b [PosToken] c- -> Parser b [PosToken] c-cases tps dp = \good bad input@((pos,t,_,_):input') err@(pe,et,msg) ->- if pe > pos then- cases' pos t good input' (dp good bad input err) tps- else- cases'' pos t good input' (dp good bad input) pos (show t) (if pos > pe then [] else msg) tps- where-- cases' :: Pos -> Lex -> ParseGood b [PosToken] c- -> [PosToken]- -> ParseResult c [PosToken]- -> [(Lex,Pos -> Parser b [PosToken] c)]- -> ParseResult c [PosToken]- cases' pos t good input' dp [] =- dp- cases' pos t good input' dp ((t',p):tps) =- if t == t' then- p pos good initBad input' initError- else- cases' pos t good input' dp tps-- cases'' :: Pos -> Lex -> ParseGood b [PosToken] c- -> [PosToken]- -> (ParseError -> ParseResult c [PosToken])- -> Pos- -> String- -> [String]- -> [(Lex,Pos -> Parser b [PosToken] c)]- -> ParseResult c [PosToken]- cases'' pos t good input' dp ep et em [] =- dp (ep,et,em)- cases'' pos t good input' dp ep et em ((t',p):tps) =- if t == t' then- p pos good initBad input' initError- else- cases'' pos t good input' dp ep et (show t' : em) tps---parseAp :: (a->b) -> Parser a i c -> Parser b i c-parseAp x y = \good ->- y (\v -> let xv = x v in seq xv (good xv) )--parseChk :: b -> Parser a i c -> Parser b i c-parseChk x y = \good ->- y (\_ -> good x)--apCut :: Parser (a->b) i c -> Parser a i c -> Parser b i c-apCut x y = \good bad->- x (\u input' err' -> y (\v -> let uv = u v in seq uv (good uv)) initBad input' initError)- bad--chkCut :: Parser b i c -> Parser a i c -> Parser b i c-chkCut x y = \good bad ->- x (\u input' err' -> y (\_ -> good u) initBad input' initError )- bad--intoCut :: Parser a i c -> (a->Parser b i c) -> Parser b i c-intoCut x y = \good bad ->- x (\u input' err' -> y u good initBad input' initError)- bad----------- Next section doesn't care about the internal structure-literal t = token (\pos t' -> if t==t' then Right pos else Left (show t))--optional p = Just `parseAp` p- `orelse`- parse Nothing--many p = some p `orelse` parse []--some p = (:) `parseAp` p `apCut` many p--manySep' s p = s `revChk` someSep s p- `orelse`- parse []--manySep s p = someSep s p `orelse` parse []-someSep s p = (:) `parseAp` p `apCut` manySep' s p--manysSep' s p = many s `revChk` somesSep s p- `orelse`- parse []-manysSep s p = somesSep s p `orelse` parse []-somesSep s p = (:) `parseAp` p `apCut` manysSep' s p----- Really specialized --rcurl :: Parser Lex [PosToken] c -rcurl = \good bad (pt@(pos,t,_,_):input) err ->- case t of- L_RCURL -> good t input err- L_RCURL' -> good t input err- _ -> case lexicalCont pt of- Left m -> bad (maxError (pos, show t ,["}'"]) err)- Right input' -> good L_RCURL' input' err----- Accept the rest of the input-parseRest :: Parser [PosToken] [PosToken] c -parseRest = \good bad input err -> good input input err---
− compiler98/PrettyLib.hs
@@ -1,450 +0,0 @@-{--A simple pretty printer combinator library.--A pretty printer converts an inductively defined data structure (i.e. a tree)-into a text (i.e. a list of lines).-Indentation of lines reflects the tree form of the data structure.-However, to produce only a minimal number of lines substructures are put-on a single line as far as possible.--The combinators provided here enable simple definition of a pretty printer -for any tree structure.-The pretty printer requires time linear in the size of the data structure-and space linear in the desired maximal width of the output.-The interface of the library is based on:- Philip Wadler: A prettier printer, - http://cm.bell-labs.com/cm/cs/who/wadler/topics/recent.html-The implementation uses some ideas from- Derek C Oppen: Prettyprinting, TOPLAS volume 2 number 4, ACM, 1980, 465-483.-(Wadler's implementation performs some backtracking and hence may require time-linear in both the size of the data structure and the maximal width.)--}-module PrettyLib (nil,(<>),text,line,delimiter,fdelimiter,group,nest,groupNest- ,Doc- ,parens,brackets,braces,string- ,pretty,simple) where---{- Exported definitions ================================================== -}--- Core pretty printer combinators --------------------------------------------infixr 6 <>--nil :: Doc-nil = NIL--(<>) :: Doc -> Doc -> Doc-(<>) = (:<>)--text :: String -> Doc-text = TEXT--delimiter :: String -> Doc-delimiter = DELIMITER--{- -Fill line, that is, -only make newline if part up to next possible newline does not fit on line.--}-fdelimiter :: String -> Doc-fdelimiter = FDELIMITER--{--Force line break. The surrounding groups cannot fit on one line.--}-line :: Doc-line = LINE--group :: Doc -> Doc-group = GROUP--nest :: Int -> Doc -> Doc-nest = NEST---- Derived pretty printer combinators -----------------------------------------{--The often used combination of group and nest.--}-groupNest :: Int -> Doc -> Doc-groupNest indentation doc = group (nest indentation doc)--parens :: Doc -> Doc-parens doc = text "(" <> doc <> text ")"--brackets :: Doc -> Doc-brackets doc = text "[" <> doc <> text "]"--braces :: Doc -> Doc-braces doc = text "{" <> doc <> text "}"--string :: String -> Doc-string s = text ('\"' : s ++ "\"")--{- Optimally pretty print the document within the given line width. -}-pretty :: Int -> Doc -> String-pretty width = layout width . normalise . removeFDelimiter . flatten --{- Never turn a delimiter into a newline. -}--simple :: Doc -> String-simple = token2String . flatten---{- Implementation ========================================================= -}--data Doc = NIL | Doc :<> Doc - | TEXT String | DELIMITER String | FDELIMITER String | LINE - | GROUP Doc | NEST Int Doc- deriving Show---data Token = Text String Int - | Delimiter String Int Int | FDelimiter String Int Int | Line Int - | Open | Close- deriving Show---{- -Staightforward conversion of tokens into a string,-ignoring brackets and possiblity of turning delimiters into newlines.--}-token2String :: [Token] -> String--token2String [] = ""-token2String (Text s _ : tokens) = s ++ token2String tokens-token2String (Delimiter s _ _ : tokens) = s ++ token2String tokens-token2String (FDelimiter s _ _ : tokens) = s ++ token2String tokens-token2String (Line i : tokens) = '\n' : replicate i ' ' ++ token2String tokens-token2String (Open : tokens) = token2String tokens-token2String (Close : tokens) = token2String tokens- --{--Convert the tree structure of a document into a stream of tokens.-A group is repesented by an opening and a closing bracket.--}-flatten :: Doc -> [Token]--flatten doc = go 0 doc []- where- go :: Int -> Doc -> [Token] -> [Token]- {- use accumulator to perform flattening in linear time -}- go i NIL rest = rest- go i (d1 :<> d2) rest = go i d1 (go i d2 rest)- go i (TEXT s) rest = Text s (length s) : rest- go i (DELIMITER s) rest = Delimiter s (length s) i : rest- go i (FDELIMITER s) rest = FDelimiter s (length s) i : rest- go i LINE rest = Line i : rest- go i (GROUP doc) rest = Open : go i doc (Close : rest)- go i (NEST j doc) rest = go (i+j) doc rest---{--Replace FDelimiter s l i by Open, Delimiter s l i, ..., Close.-So that Close is in front of the next (F)Delimiter s l i of the-same group or the next Close or the end.--}-removeFDelimiter :: [Token] -> [Token]--removeFDelimiter = go 0 [] - where- {-- Invariants: elements of stack are strictly sorted, largest on top- nesting depth is greater or equal top element of stack (if ex.)- -}- go :: Int {- nesting depth of brackets; without new ones -}- -> [Int] {- stack for closing brackets that still have to be inserted -}- -> [Token] {- stream of tokens with FDelimiter -}- -> [Token] {- stream of tokens without FDelimiter -}- go _ [] [] = [] -- first argument should be 0- go _ _ [] = [Close] -- the stack can at most contain one entry- go d toClose (Open : tokens) = Open : go (d+1) toClose tokens- go d toClose (Close : tokens) = - possiblyClose (Close :) (subtract 1) id d toClose tokens- go d toClose (FDelimiter s l i : tokens) =- possiblyClose (\x -> Open : Delimiter s l i : x) id (d:) d toClose tokens- go d toClose (Delimiter s l i : tokens) =- possiblyClose (Delimiter s l i :) id id d toClose tokens- go d toClose (Line i : tokens) =- possiblyClose (Line i :) id id d toClose tokens- go d toClose (text : tokens) = text : go d toClose tokens-- possiblyClose :: ([Token] -> [Token]) -- what to put into output stream- -> (Int -> Int) -- how to change nesting depth- -> ([Int] -> [Int]) -- how to change stack- -> Int -- nesting depth- -> [Int] -- stack- -> [Token]- -> [Token]- possiblyClose modOut modDepth modStack d (close : toClose) tokens- | close == d = Close : modOut (go (modDepth d) (modStack toClose) tokens) - possiblyClose modOut modDepth modStack d toClose tokens =- modOut (go (modDepth d) (modStack toClose) tokens)- --{--Normalise a stream of tokens wrt the following rewriting rules-Open, Text s l ==> Text s l, Open-Close, Text s l ==> Text s l, Close-Then any block of brackets is followed by a Line s l i or the end of the stream--}-normalise :: [Token] -> [Token]--normalise tokens = go 0 0 tokens- where- go :: Int {- number of deferred closing brackets -} - -> Int {- number of deferred opening brackets -} - -> [Token] {- stream of tokens to normalise -}- -> [Token] {- normalised stream of tokens -}- go i _ [] = replicate i Close -- there should be no deferred opening brackets- go i j (Open : tokens) = go i (j+1) tokens- go i j (Close : tokens)- | j == 0 = go (i+1) j tokens- | otherwise = go i (j-1) tokens- go i j (deli@(Delimiter _ _ _) : tokens) =- replicate i Close ++ replicate j Open ++ deli : go 0 0 tokens- go i j (line@(Line _) : tokens) =- replicate i Close ++ replicate j Open ++ line : go 0 0 tokens- go i j (text : tokens) = text : go i j tokens- --{--The list of tokens is optimally pretty printed within the given width.-Precondition: between a `Close' and a `Text s l' is always a `Line s l i'.-For efficiency also better if no `Open' is directly followed by `Text s l'.-A normalised token list has this property.--}-layout :: Int {- width of layout -}- -> [Token] - -> String--layout width tokens = snd $ go width 1 empty1 0 tokens- where- go :: Int -- space remaining in current line (in characters)- -> Int -- current stream position (in characters)- -> Q1 Int -- queue of maximal streamposition for end of group to fit- -> Int -- how deep inside a fitting group (<= 0: not in fitting group)- -> [Token]- -> (Q2 Bool -- queue which states if groups fit- ,String) -- optimally layouted output- go _ _ groupsMaxEnd _ [] = (empty2, "")- go r p groupsMaxEnd fitDepth (Open : tokens) = (groupFits', string)- where- (groupsMaxEnd', fits', groupFits') = cons (r+p) groupsMaxEnd groupsFits- (groupsFits, string) = go r p groupsMaxEnd' fitDepth' tokens- fitDepth' = if fitDepth > 0 then succ fitDepth else if fits' then 1 else 0- go r p groupsMaxEnd fitDepth (Close : tokens) - | isEmpty1 groupsMaxEnd = go r p groupsMaxEnd (pred fitDepth) tokens- | otherwise = (groupFits', string)- where- (_, groupsMaxEnd', groupFits') = lview groupsMaxEnd True groupFits- (groupFits, string) = go r p groupsMaxEnd' (pred fitDepth) tokens- go r p groupsMaxEnd fitDepth (Delimiter s l i : tokens) = - (groupFits', output ++ string)- where- (output, newRemainingSpace) - | fitDepth > 0 = (s, r-l)- | otherwise = ('\n' : replicate i ' ', width-i)- (groupFits', string) = - checkGroupsMaxEnd newRemainingSpace (p+l) groupsMaxEnd fitDepth tokens - go r p groupsMaxEnd fitDepth (Line i : tokens) =- -- a compulsary newline makes all surrounding blocks not to fit- (map1To2 (\_ -> False) groupsMaxEnd, '\n' : replicate i ' ' ++ string)- where- (_, string) = go (width-i) p empty1 fitDepth tokens- go r p groupsMaxEnd fitDepth (Text s l : tokens) = (groupFits', s ++ string)- where- (groupFits', string) = - checkGroupsMaxEnd (r-l) (p+l) groupsMaxEnd fitDepth tokens --- checkGroupsMaxEnd :: Int -> Int -> Q1 Int -> Int -> [Token] - -> (Q2 Bool, String)- checkGroupsMaxEnd r p groupsMaxEnd fitDepth tokens - | isEmpty1 groupsMaxEnd || p <= maxEnd = - go r p groupsMaxEnd fitDepth tokens- | otherwise = (groupsFits', string)- where- (groupsMaxEnd', maxEnd, groupsFits') = rview groupsMaxEnd groupsFits False- (groupsFits, string) = checkGroupsMaxEnd r p groupsMaxEnd' fitDepth tokens---{- Special double ended queues -------------------------------------------- --Two related kinds of double ended queue types are defined.-A queue operation always operates on two queues, one of each kind.-Each operation performs an operation on one queue and exactly the inverse-operation on the other queue.-For example, an operation that splits one queue into its first element and-the remaining queue, also puts an element in front of the other queue to obtain-a longer queue.--The inverse operations are very lazy.-Let there be a sequence of queue operations such that the first queue -resulting from an operation is always the input first queue to the -*next* operation and the second queue resulting from an operation is always -the input second queue to the *preceding* operation.-Let the first operation `cons' an element to the front of the first queue -and the last operation remove exactly this element from the first queue -(either front or rear). Then the last operation adds another element to -the second queue and the first operation removes exactly this element.-The operations on the second queue are so lazy that for obtaining this -element the second queue which is input to the last operation is not-demanded, that is, does not need to be evaluated.--Note that the inverse operations only work correctly, if the two queues-are passed in such a sequence. The implementation does not only assume-that the two queues handled by an operation have the same number of elements,-but also that they have the same internal structure.--Using a monad to ascertain correct passing of queues is possible but -seems rather restrictive and hides the idea. However, maybe another-kind of sequencing interface would be good to ensure safe usage.-- element element- v ^- queue1 -> +----+ -> +---------+ -> -> +---------+ ->- |cons| |operation| ... |operation|- <- +----+ <- +---------+ <- <- +---------+ <- queue2- v ^- element' element'--Except for the additional lazy inverse operations the implementation agrees -with the Banker's queue given in:- Chris Okasaki: Purely Functional Data Structures, CUP, 1998, Section 8.4.2 --}--{--q12List (Q1 _ f _ r) = f ++ reverse r-Furthermore, the structure contains the lengths of the two lists-Q2 does not contain lengths--}--data Q1 a = Q1 !Int [a] !Int [a] deriving Show-data Q2 a = Q2 [a] [a] deriving Show---reverse1 :: Q1 a -> Q1 a-reverse1 (Q1 lenf f lenr r) = Q1 lenr r lenf f--reverse2 :: Q2 a -> Q2 a-reverse2 (Q2 f r) = Q2 r f---empty1 = Q1 0 [] 0 []-empty2 = Q2 [] []---isEmpty1 (Q1 lenf _ lenr _) = lenf + lenr == 0 ---map1To2 :: (a -> b) -> Q1 a -> Q2 b-map1To2 g (Q1 _ f _ r) = Q2 (map g f) (map g r)---{--Keep lenghts of the two lists in balance--}--check :: Int -> [a] -> Int -> [a] -> Q2 b -> (Q1 a, [b], [b])--check lenf f lenr r q2 =- if lenf > balanceConstant * lenr + 1 then- let- len = lenf + lenr- lenf' = len `div` 2- lenr' = len - lenf'- (f', rf') = splitAt lenf' f- (r2, rf2) = lsplitAt lenr r2'- in (Q1 lenf' f' lenr' (r ++ reverse rf')- ,lappend lenf' f2' (lreverse (lenr'-lenr) rf2)- ,r2)- else- (Q1 lenf f lenr r, f2', r2')- where- Q2 f2' r2' = q2- balanceConstant = 3 :: Int---{--Put an element in front of the first list.-Inversely, split second list into front element and tail queue.--}-cons :: a -> Q1 a -> Q2 b -> (Q1 a, b, Q2 b)--cons x (Q1 lenf f lenr r) q2' = (q', head f2, Q2 (tail f2) r2)- where- (q', f2, r2) = check (lenf+1) (x:f) lenr r q2'---{--Split first list into initial queue and rear element.-Inversely, add an element to rear of second list.--}-rview :: Q1 a -> Q2 b -> b -> (Q1 a, a, Q2 b)--rview (Q1 _ (x:_) _ []) q2' y = (empty1, x, Q2 [y] [])-rview (Q1 _ [] _ []) _ _ = error "empty queue"-rview (Q1 lenf f lenr (x:r)) q2' y = (q', x, Q2 f2 (y:r2))- where- (q', f2, r2) = check lenf f (lenr-1) r q2'---{--Split first list into first element and tail queue.-Inversely, add an element to the front of the second list.--}-lview :: Q1 a -> b -> Q2 b -> (a, Q1 a, Q2 b)--lview q1 y q2 = (x, reverse1 q1', reverse2 q2')- where- (q1', x, q2') = rview (reverse1 q1) (reverse2 q2) y---{--Some very lazy variants of standard list functions.-They get the length of the result or a list argument as first argument and -thus are able to construct the list structure of the result without demanding-evaluation of any of its other arguments.-Demanding some list element of the result will naturally lead to -more demand of the arguments.--}---{--The first argument gives the length of the argument/result list.--}-lreverse :: Int -> [a] -> [a]--lreverse n xs = lreverseAcc n xs []- where- lreverseAcc 0 _ acc = acc- lreverseAcc n xs acc = lreverseAcc (n-1) ys (y:acc)- where- y:ys = xs--{--The first argument gives the length of the first list argument.--}-lappend :: Int -> [a] -> [a] -> [a]--lappend 0 _ zs = zs-lappend n xs zs = y : lappend (n-1) ys zs- where- y:ys = xs---{--The first argument gives the position at which the input list shall be split.-The list must be at least that long.--}-lsplitAt :: Int -> [a] -> ([a], [a])- -lsplitAt 0 xs = ([],xs)-lsplitAt n ys = (x:xs',xs'') - where - x:xs = ys- (xs',xs'') = lsplitAt (n-1) xs--{- End PrettyLib ========================================================== -}
− compiler98/PrettySyntax.hs
@@ -1,796 +0,0 @@-{--Convert abstract syntax tree (or parts of it) into -a structured document for pretty printing.--}--module PrettySyntax- ( PPInfo(..)--- , prettyPrintSimple- , prettyPrintTokenId, prettyPrintId, simplePrintId- , ppModule, ppTopDecls, ppClassCodes- , ppType, ppContexts, ppSimple, ppDecl- ) where --import Extra(noPos)-import PrettyLib-import Syntax hiding (noDecls,TokenId)-import TokenId(TokenId(..),extractV,t_Arrow,t_List)-import Id(Id)-import IntState(IntState,strIS,lookupIS)-import Nice(niceInt,niceNT,mkAL)-import Info(Info(InfoData),tidI)-import NT(NewType(NewType))-import SysDeps (unpackPS,isAlphaNum)-import Data.Maybe(isJust,fromJust)-import Flags(Flags,sShowWidth,sShowQualified,sShowIndent)---{--prettyPrintSimple :: Int -> (PPInfo TokenId -> a -> Doc) -> a -> String-prettyPrintSimple width pp =- pretty width . - pp PPInfo{withPositions = False- ,indent = 4- ,id2str = show- ,tyVar2str = show- ,intState = error "prettyPrintTokenId: no intState"- ,isFunctionArrow = (== t_Arrow)- ,isList = (== t_List)- ,maybeTuple = maybeTupleTokenId}- where- maybeTupleTokenId t = case t of- TupleId n -> Just n- _ -> Nothing--}--prettyPrintTokenId :: Flags -> (PPInfo TokenId -> a -> Doc) -> a -> String-prettyPrintTokenId flags pp =- pretty (sShowWidth flags) . - pp PPInfo{withPositions = False- ,indent = sShowIndent flags- ,id2str = id2strTokenId- ,tyVar2str = show- ,intState = error "prettyPrintTokenId: no intState"- ,isFunctionArrow = (== t_Arrow)- ,isList = (== t_List)- ,maybeTuple = maybeTupleTokenId}- where- id2strTokenId = if sShowQualified flags- then show - else reverse . unpackPS . extractV - maybeTupleTokenId t = case t of- TupleId n -> Just n- _ -> Nothing---prettyPrintId :: Flags -> IntState -> (PPInfo Id -> a -> Doc) -> a -> String-prettyPrintId flags state pp =- pretty (sShowWidth flags) . - pp PPInfo{withPositions = False - ,indent = sShowIndent flags- ,id2str = if sShowQualified flags - then strIS state else strISunqualified state- ,tyVar2str = ('t' :) . show- ,intState = state- ,isFunctionArrow = isFunctionArrowId state- ,isList = isListId state - ,maybeTuple = maybeTupleId state}---simplePrintId :: IntState -> (PPInfo Id -> a -> Doc) -> a -> String-simplePrintId state pp =- simple . - pp PPInfo{withPositions = False - ,indent = 2 - ,id2str = strISunqualified state- ,tyVar2str = ('t' :) . show- ,intState = state- ,isFunctionArrow = isFunctionArrowId state- ,isList = isListId state - ,maybeTuple = maybeTupleId state}----- the following little functions should probably be defined in some other--- modules:--strISunqualified :: IntState -> Id -> String-strISunqualified state id = - case lookupIS state id of- Just info -> reverse . unpackPS . extractV . tidI $ info- Nothing -> 'v' : show id---isFunctionArrowId :: IntState -> Id -> Bool-isFunctionArrowId state id = - case lookupIS state id of- Just info -> tidI info == t_Arrow- Nothing -> False---isListId :: IntState -> Id -> Bool-isListId state id = - case lookupIS state id of- Just info -> tidI info == t_List - Nothing -> False---maybeTupleId :: IntState -> Id -> Maybe Int-maybeTupleId state id = - case lookupIS state id of- Just info -> case tidI info of- TupleId n -> Just n- _ -> Nothing - Nothing -> Nothing---{- -Information that is passed recursively unchanged -to all pretty printing functions.-If boolean argument true, then positions are inserted as comments -for most language constructs.-The function converts an identifier into a String.--}--data PPInfo a = PPInfo {withPositions :: Bool- ,indent :: Int -- indentation for nesting- ,id2str :: a -> String- ,tyVar2str :: a -> String- ,intState :: IntState -- still needed for niceNT- ,isFunctionArrow :: a -> Bool -- ->- ,isList :: a -> Bool -- []- ,maybeTuple :: a -> Maybe Int}---{- standard number of characters of indentation for every nesting -}--nestS :: PPInfo a -> Doc -> Doc-nestS = nest . indent--groupNestS :: PPInfo a -> Doc -> Doc-groupNestS = groupNest . indent---{- general formatting functions ------------------------------------------ -}--space :: Doc-space = text " "--dSpace :: Doc-dSpace = delimiter " "--fSpace :: Doc-fSpace = fdelimiter " "--fComma :: Doc-fComma = fdelimiter "" <> text ","--dSemiSpace :: Doc-dSemiSpace = delimiter "; "--sep :: Doc -> [Doc] -> Doc-sep delimiter [] = nil-sep delimiter docs = foldr1 (\l r -> l <> delimiter <> r) docs--term :: Doc -> [Doc] -> Doc-term delimiter = foldr (\l r -> l <> delimiter <> r) nil--encase :: Doc -> [Doc] -> Doc-encase delimiter docs = delimiter <> term delimiter docs--{- surround by paranthesis and separate by fComma, but not for 0 element -}-parensFComma1 :: PPInfo a -> [Doc] -> Doc-parensFComma1 info [] = nil-parensFComma1 info docs = - fSpace <> (groupNestS info $ parens $ sep fComma docs)---{- surround by paranthesis and separate by fComma, but not for 0 or 1 element --}-parensFComma2 :: PPInfo a -> [Doc] -> Doc-parensFComma2 info [] = nil-parensFComma2 info [doc] = doc-parensFComma2 info docs = groupNestS info $ parens $ sep fComma docs ---groupParens :: PPInfo a -> Doc -> Doc-groupParens info = groupNestS info . parens---{- the conversion functions for every abstract syntax construct ---------- -}--ppModule :: PPInfo a -> Module a -> Doc-ppModule info (Module pos id exports impdecls fixdecls topdecls) = - groupNestS info - (text "module " <> ppId info id <> - ppExports info exports <> text " where") <> line <> - ppImpDecls info impdecls <>- ppFixDecls info fixdecls <> - ppTopDecls info topdecls---ppExports :: PPInfo a -> Maybe [Export a] -> Doc-ppExports info Nothing = parens nil-ppExports info (Just []) = nil-ppExports info (Just exps) = parensFComma1 info (map (ppExport info) exps)---ppExport :: PPInfo a -> Export a -> Doc-ppExport info (ExportEntity pos entity) = ppEntity info entity-ppExport info (ExportModid pos id) = text "module " <> ppId info id ---ppEntity :: PPInfo a -> Entity a -> Doc-ppEntity info (EntityVar pos id) = ppIdAsVar info id-ppEntity info (EntityConClsAll pos id) = ppId info id <> text "(..)"-ppEntity info (EntityConClsSome pos id ids) = - nestS info $ - ppId info id <> (parens . sep fComma . map (ppIdAsVar info . snd) $ ids)---ppImpDecls :: PPInfo a -> [ImpDecl a] -> Doc-ppImpDecls info [] = nil-ppImpDecls info decls = - line <> (sep line . map (ppImpDecl info) $ decls) <> line---ppFixDecls :: PPInfo a -> [FixDecl a] -> Doc-ppFixDecls info [] = nil-ppFixDecls info decls = - line <> (sep line . map (ppFixDecl info) $ decls) <> line---ppInfixClass :: PPInfo a -> InfixClass a -> Doc-ppInfixClass info InfixDef = text "infixl{-def-} "-ppInfixClass info InfixL = text "infixl "-ppInfixClass info InfixR = text "infixr "-ppInfixClass info Infix = text "infix "-ppInfixClass info (InfixPre id) = - text "prefix " <> ppIdAsOperator info id <> space---ppFixDecl :: PPInfo a -> FixDecl a -> Doc-ppFixDecl info (infixclass, precedenceLevel, fixIds) =- groupNestS info $- ppInfixClass info infixclass <> text (show precedenceLevel) <> - fSpace <> sep fComma (map (ppIdAsOperator info . stripFixId) fixIds)---ppImpSpec :: PPInfo a -> ImpSpec a -> Doc-ppImpSpec info (NoHiding entities) =- fSpace <> (parens . sep fComma . map (ppEntity info) $ entities)-ppImpSpec info (Hiding []) = nil-ppImpSpec info (Hiding entities) =- fSpace <> text "hiding " <> - (parens . sep fComma . map (ppEntity info) $ entities)---ppImpDecl :: PPInfo a -> ImpDecl a -> Doc-ppImpDecl info (Import (pos,id) impspec) =- groupNestS info $ - text "import " <> ppId info id <> fSpace <> ppImpSpec info impspec-ppImpDecl info (ImportQ (pos1,id1) impspec) =- groupNestS info $- text "import qualified " <> ppId info id1 <> fSpace <> - ppImpSpec info impspec-ppImpDecl info (ImportQas (pos1,id1) (pos2,id2) impspec) =- groupNestS info $- text "import qualified " <> ppId info id1 <> fSpace <> text "as" <>- fSpace <> ppId info id2 <> fSpace <> ppImpSpec info impspec-ppImpDecl info (Importas (pos1,id1) (pos2,id2) impspec) =- groupNestS info $- text "import " <> ppId info id1 <> fSpace <> text "as" <>- fSpace <> ppId info id2 <> fSpace <> ppImpSpec info impspec----ppTopDecls :: PPInfo a -> Decls a -> Doc-ppTopDecls info (DeclsParse decls) = - line <> sep (line <> line) (map (ppDecl info) decls) <> line-ppTopDecls info (DeclsScc decls) = - line <> sep (line <> line) (map (ppDeclsDepend info) decls) <> line---ppDecls :: PPInfo a -> Decls a -> Doc-ppDecls info (DeclsParse decls) = - group $ sep dSemiSpace (map (ppDecl info) decls)-ppDecls info (DeclsScc decls) = - group $ sep dSemiSpace (map (ppDeclsDepend info) decls)---ppDeclsDepend :: PPInfo a -> DeclsDepend a -> Doc-ppDeclsDepend info (DeclsNoRec decl) =- text "-- not recursive" <> line <> - ppDecl info decl-ppDeclsDepend info (DeclsRec decls) =- text "-- recursive" <> line <> - sep line (map (ppDecl info) decls)---ppType :: PPInfo a -> Type a -> Doc-ppType info = ppTypePrec info False---ppTypePrec :: PPInfo a -> Bool {- with parens? -} -> Type a -> Doc-ppTypePrec info withPar (TypeCons pos t []) = ppId info t-ppTypePrec info withPar (TypeCons pos t ts) = - if isFunctionArrow info t - then case ts of- [] -> text "(->)"- [t1] -> parenExp info pos withPar $ - text "(->)" <> ppTypePrec info True t1- [t1,t2] -> parenExp info pos withPar $- ppTypePrec info True t1 <> fSpace <> text "->" <> fSpace <> - ppTypePrec info False t2- else if isList info t- then case ts of- [] -> text "([])"- [t] -> group $ brackets $ ppTypePrec info False t- else case maybeTuple info t of- Just n -> if n == length ts - then groupParens info . sep fComma . - map (ppTypePrec info False) $ ts- else parenExp info pos withPar $- (groupParens info . sep fComma . replicate n $ nil) <>- fSpace <> (sep fSpace . map (ppTypePrec info True) $ ts)- Nothing -> parenExp info pos withPar $ - sep fSpace (ppId info t : map (ppTypePrec info True) ts)-ppTypePrec info withPar (TypeApp t1 t2) = - parenExp info noPos withPar $- (ppTypePrec info False t1 <> fSpace <> ppTypePrec info True t2)-ppTypePrec info withPar (TypeVar pos id) = ppTyVar info id-ppTypePrec info withPar (TypeStrict pos typ) = - text "!" <> ppTypePrec info True typ---ppTypeWithContext :: PPInfo a -> [Context a] -> Type a -> Doc-ppTypeWithContext info ctxs ty =- group (ppContexts info ctxs <> ppType info ty)---ppSimple :: PPInfo a -> Simple a -> Doc-ppSimple info (Simple pos id ids) = - sep fSpace (ppId info id : map (ppId info . snd) ids) ---ppTypeSimple :: PPInfo a -> Simple a -> Doc-ppTypeSimple info (Simple pos id ids) = - sep fSpace (ppId info id : map (ppTyVar info . snd) ids) ---ppContexts :: PPInfo a -> [Context a] -> Doc-ppContexts info [] = nil-ppContexts info cxs = - parensFComma2 info (map (ppContext info) cxs) <> text " =>" <> fSpace---ppContext :: PPInfo a -> Context a -> Doc-ppContext info (Context pos c vars) =- ppId info c <> space <> sep fSpace (map (\(_,v)-> ppTyVar info v) vars)---ppDerivings :: PPInfo a -> [(Pos, a)] -> Doc-ppDerivings info [] = nil-ppDerivings info ds = - groupNestS info $- fSpace <> text "deriving" <>- fSpace <> parensFComma2 info (map (ppId info . snd) ds) ---ppConstr :: PPInfo a -> Constr a -> Doc-ppConstr info (Constr pos c cs) =- groupNestS info $- ppIdAsVar info c <> fSpace <> ppFieldsType info cs-ppConstr info (ConstrCtx forall ctxs pos c cs) =- groupNestS info $- ppForall <> ppContexts info ctxs <> - ppIdAsVar info c <> fSpace <> ppFieldsType info cs- where- ppForall | null forall = nil- | otherwise = groupNestS info (text "forall" <> fSpace <> - sep fSpace (map (ppTyVar info . snd) forall) <> - text ".") <> - fSpace---ppFieldsType :: PPInfo a -> [(Maybe [(Pos,a)],Type a)] -> Doc-ppFieldsType info args@((Just _,_):_) = - groupNestS info- (braces . sep fComma . map (ppFieldType info) $ args)-ppFieldsType info args =- group (sep fSpace . map (ppFieldType info) $ args)---ppFieldType :: PPInfo a -> (Maybe [(Pos, a)], Type a) -> Doc-ppFieldType info (Nothing,typ) = ppTypePrec info True typ-ppFieldType info (Just posidents,typ) = - group $- (sep fComma . map (ppIdAsVar info . snd) $ posidents) <> - dSpace <> - text ":: " <> ppType info typ---ppDecl :: PPInfo a -> Decl a -> Doc-ppDecl info (DeclType s t) =- groupNestS info $- text "type " <> ppTypeSimple info s <> text " =" <> dSpace <> ppType info t-ppDecl info (DeclTypeRenamed pos tyconid) =- groupNestS info $- text "type" <> fSpace <> - (group . sep fSpace . map text $ - (niceInt Nothing state tyconid "" : map snd al)) <>- text " =" <> dSpace <> text (niceNT Nothing state al nt)- where- Just (InfoData _ _ _ newType _) = lookupIS state tyconid- NewType univQuantTyVars _ _ [nt] = newType- al = mkAL univQuantTyVars- state = intState info-ppDecl info (DeclDataPrim pos conid size) =- groupNestS info $- text "data primitive" <> fSpace <> ppPos info pos <> - fSpace <> ppId info conid <> text " =" <> dSpace <> text (show size)-ppDecl info (DeclData dk ctxs s cs ds) =- groupNestS info $- text sort <> fSpace <> - groupNestS info (ppContexts info ctxs <> ppTypeSimple info s) <>- ppConstrs info cs <> ppDerivings info ds- where- sort = case dk of- Nothing -> "newtype"- Just False -> "data"- Just True -> "data unboxed"-ppDecl info (DeclConstrs pos did cs) =- groupNestS info $- text "-- data/dataprim [(field,selector)] =" <> dSpace <>- (groupNestS info $- ppIdAsVar info did <> - (brackets . sep fComma $ - map (\(ps,field,sel) -> - parens (ppIdAsVar info field <> space <> ppIdAsVar info sel)) - cs))-ppDecl info (DeclClass pos ctxs cls args fundeps decls) =- nestS info $- text "class" <> fSpace <>- groupNestS info (ppContexts info ctxs <> ppId info cls <> space <> - sep fSpace (map (ppTyVar info) args) <> ppFunDeps info fundeps)- <> ppWhere info decls-ppDecl info (DeclInstance pos ctxs tycls insts valdefs) =- nestS info $- text "instance" <> fSpace <>- groupNestS info (ppContexts info ctxs <> ppId info tycls <> space <>- sep fSpace (map (parens . ppTypePrec info True) insts))- <> ppWhere info valdefs -ppDecl info (DeclDefault ts) =- groupNestS info $- text "default" <> dSpace <> (parens . sep fComma . map (ppType info) $ ts)-ppDecl info (DeclPrimitive pos ident arity t) =- groupNestS info $- ppIdAsVar info ident <> fSpace <> text "primitive" <> fSpace - <> text (show arity) <> text " ::" <> fSpace <> ppType info t-ppDecl info (DeclForeignImp pos callConv str ident arity cast t _) =- groupNestS info $- text "foreign import" <> fSpace <> text (show callConv) <> - fSpace <> string str <> fSpace <>- text (show cast) <> fSpace <> ppIdAsVar info ident <> text " ::" <> - dSpace <> ppType info t-ppDecl info (DeclForeignExp pos callConv str ident t) =- groupNestS info $- text "foreign export" <> fSpace <> text (show callConv) <> fSpace <> - ppIdAsVar info ident <> text " ::" <> dSpace <> ppType info t-ppDecl info (DeclVarsType ids ctxs t) =- groupNestS info $- group (sep fComma (map (ppIdAsVar info . snd) ids)) <> text " ::" <>- dSpace <> ppTypeWithContext info ctxs t-ppDecl info (DeclPat alt) = group $ ppAlt info "=" alt-ppDecl info (DeclFun pos fun funs) =- group $- ppPos info pos <>- (sep line . map (ppFun info fun) $ funs) -ppDecl info (DeclIgnore s) =- text ("{- Ignoring " ++ s ++ " -}")-ppDecl info (DeclError s) =- text ("ERROR: " ++ s)-ppDecl info (DeclAnnot decl annots) =- groupNestS info $ ppDecl info decl <> line <> ppAnnots info annots-ppDecl info (DeclFixity f) =- ppFixDecl info f---ppAnnots :: PPInfo a -> [Annot a] -> Doc-ppAnnots info = sep line . map (ppAnnot info) ---ppAnnot :: PPInfo a -> Annot a -> Doc-ppAnnot info (AnnotArity (pos,ident) int) =- text "{-# ARITY " <> ppIdAsVar info ident <> text " = " <> - text (show int) <> text "#-}"-ppAnnot info (AnnotPrimitive (pos,ident) prim) = - text "{-# PRIMITIVE " <> ppIdAsVar info ident <> text " = " <> - text (unpackPS prim) <> text "#-}"-ppAnnot info (AnnotNeed posidents) =- text "{-# NEED " <> sep fSpace (map ppNeed posidents) <> text "#-}"- where - ppNeed [x] = ppIdAsVar info x- ppNeed xs = - group $ text "{" <> sep fSpace (map (ppIdAsVar info) xs) <> text "}"-ppAnnot info (AnnotUnknown) =- text "{-# ??? #-}"--ppFunDeps :: PPInfo a -> [FunDep a] -> Doc-ppFunDeps info [] = text ""-ppFunDeps info xs = text " | " <> sep (text ", ") (map (ppFunDep info) xs)--ppFunDep :: PPInfo a -> FunDep a -> Doc-ppFunDep info (as :->: bs) = ppTyVars as <> text "->" <> ppTyVars bs- where- --ppTyVars = parensFComma2 info . map (ppId info)- ppTyVars = sep fSpace . map (ppId info)---ppWhere :: PPInfo a -> Decls a -> Doc-ppWhere info decls - | noDecls decls = nil- | otherwise = line <> text "where" <> line <> ppTopDecls info decls---ppClassCodes :: PPInfo a -> [ClassCode b a] -> Doc-ppClassCodes info decls = sep line (map (ppClassCode info) decls)---ppClassCode :: PPInfo a -> ClassCode b a -> Doc-ppClassCode info (CodeClass pos cls) =- groupNestS info $ text "code class" <> dSpace <> ppId info cls-ppClassCode info (CodeInstance pos cls typ arg ecs methods) =- groupNestS info $ - text "code instance" <> fSpace <> ppId info cls <> fSpace <> - ppId info typ <> text " ? = ?" <> line <>- sep dSemiSpace (map (ppIdAsVar info) methods)---ppConstrs :: PPInfo a -> [Constr a] -> Doc-ppConstrs info [] = dSpace <> text "{- no constructors -}"-ppConstrs info cs = - text " =" <> fSpace <> - group (sep (fSpace <> text "| ") (map (ppConstr info) cs))---ppFun :: PPInfo a -> a -> Fun a -> Doc-ppFun info id (Fun pats rhs w) =- groupNestS info $- (group - (group $ sep fSpace $ - ppIdAsVar info id : map (ppExpPrec info True) pats) <>- ppRhs info "=" rhs) <>- ppWhere info w---ppStmts :: PPInfo a -> [Stmt a] -> Doc-ppStmts info stmts = sep line (map (ppStmt info) stmts)---ppStmt :: PPInfo a -> Stmt a -> Doc-ppStmt info (StmtExp exp) = ppExp info exp-ppStmt info (StmtBind pat exp) = - groupNestS info $- ppPat info pat <> dSpace <> text "<- " <> ppExp info exp-ppStmt info (StmtLet ds) = - groupNestS info $ text "let" <> dSpace <> ppDecls info ds ---ppPat :: PPInfo a -> Exp a -> Doc-ppPat = ppExp---ppPos :: PPInfo a -> Pos -> Doc -ppPos info pos = - if withPositions info then (braces . text . show $ pos) <> space else nil---parenExp :: PPInfo a -> Pos -> Bool -> Doc -> Doc-parenExp info pos withPar doc =- groupNestS info $ - ppPos info pos <> if withPar then parens doc else doc---ppExp :: PPInfo a -> Exp a -> Doc-ppExp info = ppExpPrec info False---ppExpPrec :: PPInfo a -> Bool -> Exp a -> Doc-ppExpPrec info withPar (ExpLambda pos pats e) =- parenExp info pos withPar $- text "\\ " <> sep fSpace (map (ppLambdaPat info) pats) <>- text " ->" <> dSpace <> ppExpPrec info False e-ppExpPrec info withPar (ExpDo pos stmts) =- parenExp info pos withPar $- text "do" <> dSpace <> ppStmts info stmts-ppExpPrec info withPar (ExpLet pos ds e) =- parenExp info pos withPar $- text "let" <> dSpace <> ppDecls info ds <> fSpace <> text "in" <> fSpace <>- parens (ppExpPrec info False e) -ppExpPrec info withPar (ExpCase pos e alts) =- parenExp info pos withPar $- group- (text "case" <> dSpace <> ppExpPrec info False e <> text " of")- <> dSpace <>- sep dSemiSpace (map (ppAlt info "->") alts)-ppExpPrec info _ (ExpFail) = text "fail"-ppExpPrec info withPar (ExpFatbar e1 e2) =- parenExp info noPos withPar $- text "fatbar" <> dSpace <> ppExpPrec info False e1 <> dSpace <> - text "-- " <> ppExpPrec info False e2 -ppExpPrec info withPar (ExpIf pos c e1 e2) =- parenExp info pos withPar $- text "if " <> ppExpPrec info False c <> dSpace <>- text "then " <> ppExpPrec info False e1 <> dSpace <>- text "else " <> ppExpPrec info False e2-ppExpPrec info withPar (ExpType pos e cxs t) =- parenExp info pos withPar $- ppExpPrec info False e <> dSpace <> - text ":: " <> ppTypeWithContext info cxs t-ppExpPrec info withPar (ExpRecord exp fields) =- parenExp info noPos withPar $- ppExpPrec info True exp <> dSpace <> - (braces . sep fComma . map (ppField info) $ fields)-ppExpPrec info withPar (ExpApplication pos (ExpCon _ id : args)) - | isJust tuple && n == length args =- ppPos info pos <> - (groupParens info . sep fComma . map (ppExpPrec info False) $ args)- where- tuple = maybeTuple info id- Just n = tuple-ppExpPrec info withPar (ExpApplication pos (op : args)) - | isJust maybeConOrVarId && idIsOperator info id =- case args of- -- assume application consists of at least two expressions- [arg1] -> groupParens info $- ppExpPrec info True arg1 <> dSpace <> ppIdAsOperator info id- [arg1,arg2] -> groupParens info $ - ppExpPrec info True arg1 <> dSpace <> - ppIdAsOperator info id <> dSpace <>- ppExpPrec info True arg2 - (arg1:arg2:args) -> ppExpPrec info withPar - (ExpApplication pos - ((ExpApplication noPos [op,arg1,arg2]) : args))- where- maybeConOrVarId = case op of- ExpCon _ id -> Just id- ExpVar _ id -> Just id- _ -> Nothing- id = fromJust maybeConOrVarId-ppExpPrec info withPar (ExpApplication pos exps) =- parenExp info pos withPar $- sep fSpace $ map (ppExpPrec info True) exps-ppExpPrec info withPar (ExpInfixList pos exps) =- parenExp info pos withPar $- sep fSpace $ map (ppExpPrec info True) exps-ppExpPrec info _ (ExpConOp pos id) = - ppPos info pos <> ppIdAsOperator info id-ppExpPrec info _ (ExpVarOp pos id) = - ppPos info pos <> ppIdAsOperator info id-ppExpPrec info _ (ExpCon pos id) = - ppPos info pos <> - case maybeTuple info id of- Just n -> groupParens info . sep fComma . replicate n $ nil- Nothing -> ppIdAsVar info id-ppExpPrec info _ (ExpVar pos id) = - ppPos info pos <> ppIdAsVar info id-ppExpPrec info withPar (ExpDict exp) = - parenExp info noPos withPar $- text "{d} " <> ppExpPrec info False exp-ppExpPrec info _ (ExpLit pos lit) = - ppPos info pos <> text (show lit)-ppExpPrec info _ (ExpList pos es) =- groupNestS info $- ppPos info pos <> (brackets $ sep fComma $ map (ppExpPrec info False) es)-ppExpPrec info _ (Exp2 pos id1 id2) = - ppPos info pos <> ppId info id1 <> text "." <> ppIdAsVar info id2-ppExpPrec info withPar (PatAs pos id pat) =- parenExp info pos withPar $- ppIdAsVar info id <> text "@" <> ppExpPrec info True pat-ppExpPrec info _ (PatWildcard pos) = - ppPos info pos <> text "_"-ppExpPrec info _ (PatIrrefutable pos pat) =- groupNestS info $ - ppPos info pos <> text "~" <> ppExpPrec info True pat-ppExpPrec info withPar (PatNplusK pos n n' k _ _) =- parenExp info pos withPar $- ppIdAsVar info n <> fSpace <> text "+" <> fSpace <> ppExpPrec info True k ---ppLambdaPat :: PPInfo a -> Exp a -> Doc-ppLambdaPat info pat@(ExpApplication _ _) = ppExpPrec info True pat-ppLambdaPat info pat = ppExpPrec info False pat---ppField :: PPInfo a -> Field a -> Doc-ppField info (FieldExp pos var exp) =- groupNestS info $- ppPos info pos <> ppIdAsVar info var <> dSpace <> text "= " <> - ppExp info exp-ppField info (FieldPun pos var) =- ppPos info pos <> ppIdAsVar info var---ppAlt :: PPInfo a -> String -> Alt a -> Doc-ppAlt info delimiter (Alt pat rhs w) =- groupNestS info $- group (ppPat info pat <> ppRhs info delimiter rhs) <>- ppWhere info w---ppRhs :: PPInfo a -> String -> Rhs a -> Doc-ppRhs info delimiter (Unguarded exp) =- space <> text delimiter <> dSpace <> ppExp info exp-ppRhs info delimiter (Guarded [gd]) =- dSpace <> ppGdPat info delimiter gd-ppRhs info delimiter (Guarded gds) =- encase line (map (ppGdPat info delimiter) gds)- --ppGdPat :: PPInfo a -> String -> (Exp a, Exp a) -> Doc-ppGdPat info deli (e1,e2) =- groupNestS info $- text "| " <> ppExp info e1 <> space <> text deli <> dSpace <>- ppExp info e2---{- various formatting functions for identifiers ---------------------------- -}--ppId :: PPInfo a -> a -> Doc-ppId info id = text (id2str info id)---{--If the identifier is an operator, then surround it by paranthesis.--}-ppIdAsVar :: PPInfo a -> a -> Doc-ppIdAsVar info id- | isOperator name = text ('(' : name ++ ")")- | otherwise = text name- where- name = id2str info id--{--if the identifier is a variable or constructor, then surround it by-backquotes.--}-ppIdAsOperator :: PPInfo a -> a -> Doc-ppIdAsOperator info id - | isOperator name = text name- | otherwise = text ('`' : name ++ "`")- where- name = id2str info id---{--Not nice: the unique of a type variable does not refer to a symbol table -entry. So it has to be handled specially.--}--ppTyVar :: PPInfo a -> a -> Doc-ppTyVar info = text . tyVar2str info---{- little helper functions ------------------------------------------------- -}--{- Test if declaration list empty -}-noDecls :: Decls id -> Bool-noDecls (DeclsParse decls) = null decls-noDecls (DeclsScc decls) = null decls---{- Test if id is an operator -}-idIsOperator :: PPInfo a -> a -> Bool-idIsOperator info id = isOperator (id2str info id)---{- Test if name is an operator -}-isOperator :: String -> Bool -isOperator = not . isVarChar . last- where- isVarChar c = isAlphaNum c || c == '_' || c == '\'' - || c == ']' -- empty list []- || c == '}' -- traceId---{- End PrettySyntax -------------------------------------------------------- -}
− compiler98/Reduce.hs
@@ -1,15 +0,0 @@-module Reduce where--infixl 5 >>> -- Using >>> instead of >> to avoid problems with 1.3 Prelude--type Reduce s s' = s -> s'--unitR :: Reduce s s-unitR = id--(>>>) :: Reduce s s' -> Reduce s' s'' -> Reduce s s''-f >>> g = g . f--mapR :: (a->Reduce s s) -> [a] -> Reduce s s-mapR f [] = unitR-mapR f (x:xs) = f x >>> mapR f xs
− compiler98/Syntax.hs
@@ -1,378 +0,0 @@-module Syntax(module Syntax, Pos, TokenId) where--import Extra(Pos,strChr,strStr)-import SysDeps(PackedString)-import TokenId(TokenId)-import Id(Id)-import Data.Ratio-import Data.Maybe(isNothing,fromJust)--{--Note that some syntactic constructs contain the syntactic construct -"Type". However, the rename pass replaces this representation by the internal-type representation "NewType" and "NT". So the syntactic constructs that-use "Type" are removed by the renaming pass or the type representation is only-half translated (TokenId -> Id). Are the latter still used later?--It probably would have been better if the whole syntax had been parameterised-with respect to the type representation; but such an additional parameter -would also be tiresome.--}--data Module id =--- module modid [export] where { impdecls; fixdecls; topdecls }- Module Pos id (Maybe [Export id]) [ImpDecl id] [FixDecl id] (Decls id)--data Export id =- ExportEntity Pos (Entity id) -- pos superfluous, same in entity?- | ExportModid Pos id--data ImpDecl id =--- import ?qualified? modid ?as modid? ?hiding? (import,..)?- Import (Pos,id) (ImpSpec id)- | ImportQ (Pos,id) (ImpSpec id)- | ImportQas (Pos,id) (Pos,id) (ImpSpec id)- | Importas (Pos,id) (Pos,id) (ImpSpec id)--importedModule :: ImpDecl a -> a-importedModule (Import (_,id) _) = id -importedModule (ImportQ (_,id) _) = id-importedModule (ImportQas (_,id) _ _) = id -importedModule (Importas (_,id) _ _) = id---data ImpSpec id =- NoHiding [Entity id]- | Hiding [Entity id]--data Entity id =- EntityVar Pos id -- varid- | EntityConClsAll Pos id -- TyCon(..) | TyCls(..)- | EntityConClsSome Pos id [(Pos,id)]- -- TyCon | TyCls | TyCon(conid,..,conid) | TyCls(varid,..,varid) --data InfixClass a =- InfixDef- | InfixL- | InfixR - | Infix- | InfixPre a--instance Eq (InfixClass a) where- InfixDef == InfixDef = True- InfixL == InfixL = True- InfixR == InfixR = True- Infix == Infix = True- (InfixPre _) == (InfixPre _) = True- _ == _ = False--instance (Show a) => Show (InfixClass a) where- showsPrec d InfixDef = showString "infixl{-def-} "- showsPrec d InfixL = showString "infixl "- showsPrec d InfixR = showString "infixr "- showsPrec d Infix = showString "infix "- showsPrec d (InfixPre a) = showString "prefix " . shows a . showChar ' '---type FixDecl id = (InfixClass id,Int,[FixId id])--data FixId a =- FixCon Pos a- | FixVar Pos a--stripFixId (FixCon _ a) = a-stripFixId (FixVar _ a) = a---data Decls id =- DeclsParse [Decl id]- | DeclsScc [DeclsDepend id]---- used very often:-noDecls :: Decls id-noDecls = DeclsParse []---data DeclsDepend id =- DeclsNoRec (Decl id)- | DeclsRec [Decl id]--data Decl id =- -- | for type synonym: type simple = type- DeclType (Simple id) (Type id)- -- | renamer replaces DeclType by this.- -- the type is in the symbol table, referenced by Id- | DeclTypeRenamed Pos Id -- intentionally not "id"-- -- | {Nothing = newtype, Just False = data, Just True = data unboxed}- -- context => simple = constrs - -- deriving (tycls)- | DeclData (Maybe Bool) [Context id] (Simple id) [Constr id] [(Pos,id)]- -- | data primitive conid size- | DeclDataPrim Pos id Int- -- | Introduced by Rename to mark that we might need - -- to generate selector functions- -- position data/dataprim [(field,selector)]- | DeclConstrs Pos id [(Pos,id,id)] - -- | class context => class where { signatures/valdefs; }- -- position, context, class, type variables, fundeps, method decls- | DeclClass Pos [Context id] id [id] [FunDep id] (Decls id)- -- | instance context => tycls inst where { valdefs }- | DeclInstance Pos [Context id] id [Instance id] (Decls id)- -- | default (type,..)- | DeclDefault [Type id]- -- | var primitive arity :: type- | DeclPrimitive Pos id Int (Type id)- -- | foreign import [callconv] [extfun] [unsafe|cast|noproto] var :: type- -- (final id part is wrapper-fn for IO)- -- callconv extfun intfun arity [u|c|n] ty wrapperId- | DeclForeignImp Pos CallConv String id Int Safety (Type id) id- -- | foreign export callconv [extfun] var :: type- | DeclForeignExp Pos CallConv String id (Type id)- -- | vars :: context => type- | DeclVarsType [(Pos,id)] [Context id] (Type id)- | DeclPat (Alt id)- | DeclFun Pos id [Fun id] -- "var = ..." is a DeclFun, not a DeclPat--- | DeclSelect id Int id - -- ^ introduced with pattern elimination (id = select Int id)--- Used for unimplemented things- | DeclIgnore String- | DeclError String- | DeclAnnot (Decl id) [Annot id]--- | DeclPragma String String- -- | infix[rl] int id,..,id- | DeclFixity (FixDecl id)---- for foreign imports/exports-data Safety = Unsafe | Safe-instance Show Safety where- showsPrec _ Unsafe = showString "unsafe"- showsPrec _ Safe = id---- supported foreign calling conventions-data CallConv = C | Cast | Noproto | Haskell | Other String deriving Eq-instance Show CallConv where- showsPrec _ C = showString "ccall"- showsPrec _ Cast = showString "cast"- showsPrec _ Noproto = showString "noproto"- showsPrec _ Haskell = showString "haskell"- showsPrec _ (Other s) = showString s---data ClassCode ctx id = -- introduced by RmClasses- CodeClass Pos id -- class id- | CodeInstance Pos id id [id] [ctx] [id] - -- class id, typ id, args, ctxs, method ids---- | We parse MPTC with functional dependencies, only for hat-trans.-data FunDep id = [id] :->: [id]---data Annot id = AnnotArity (Pos,id) Int- | AnnotPrimitive (Pos,id) PackedString- | AnnotNeed [[id]]- | AnnotUnknown---- lhs pats, guarded exprs, local defs-data Fun id = Fun [Pat id] (Rhs id) (Decls id)--funArity :: Fun id -> Int-funArity = length . \(Fun ps _ _) -> ps--data Alt id = Alt (Pat id) (Rhs id) (Decls id)--data Rhs id = Unguarded (Exp id)- | Guarded [(Exp id,Exp id)] -- the list has at least one element--data Type id =- TypeCons Pos id [Type id]- | TypeApp (Type id) (Type id)- | TypeVar Pos id- | TypeStrict Pos (Type id)--data Sig id = Sig [(Pos,id)] (Type id) -- for interface file?--data Simple id = Simple Pos id [(Pos,id)]--simpleToType :: Simple id -> Type id-simpleToType (Simple pos tcId pargs) = - TypeCons pos tcId (map (TypeVar pos . snd) pargs)--data Context id = Context Pos id [(Pos,id)]---{--Data constructor applied to type variables, possibly with field names.-As appearing on right hand side of data or newtype definition.--}--- ConstrCtx is always used if forall is specified--- the intention is to remove Constr completely when all of nhc13 --- have been updated -data Constr id = Constr - Pos -- position of data constructor- id -- data constructor- [(Maybe [(Pos,id)],Type id)]- -- argumentlist with field labels if any- -- (many field labels with same type possible)- -- the type admits impossible arguments:- -- either all arguments have field names or none- | ConstrCtx - [(Pos,id)] -- type variabes from forall- [Context id] -- context of data constructor- Pos - id - [(Maybe [(Pos,id)],Type id)]--getConstrId :: Constr id -> id-getConstrId (Constr _ id _) = id-getConstrId (ConstrCtx _ _ _ id _) = id--getConstrArgumentList :: Constr id -> [(Maybe [(Pos,id)],Type id)]-getConstrArgumentList (Constr _ _ xs) = xs-getConstrArgumentList (ConstrCtx _ _ _ _ xs) = xs--getConstrLabels :: Constr id -> [(Pos,id)]-getConstrLabels constr =- if null args || (isNothing . fst . head) args - then []- else concatMap (fromJust . fst) args- where- args = getConstrArgumentList constr--getConstrArgumentTypes :: Constr id -> [Type id]-getConstrArgumentTypes constr = - concat . map (\(l,t) -> replicate (times l) t) . getConstrArgumentList $ - constr- where- times Nothing = 1- times (Just labels) = length labels --constrArity :: Constr id -> Int-constrArity = length . getConstrArgumentTypes---type Instance id = Type id -- Not TypeVar---{--The following is ismorphic to the type constructor Qual.-Possibly Stmt should be removed and its usage replaced everywhere by Qual.--}-data Stmt id =- StmtExp (Exp id) -- exp- | StmtBind (Exp id) (Exp id) -- pat <- exp- | StmtLet (Decls id) -- let { decls ; }---type Pat id = Exp id--data Exp id = -- used both for expressions and patterns- ExpScc String (Exp id) - -- ^ never used! should probably be removed- | ExpDict (Exp id) -- hack to mark dictionary arguments- | ExpLambda Pos [(Pat id)] (Exp id) -- \ pat ... pat -> exp- | ExpLet Pos (Decls id) (Exp id) -- let { decls ; } in exp- | ExpDo Pos [Stmt id] -- do { stmts ; }- | ExpCase Pos (Exp id) [Alt id] -- case exp of { alts; }- | ExpFatbar (Exp id) (Exp id)- -- ^ never used! should probably be removed- | ExpFail- -- ^ never used! should probably be removed- | ExpIf Pos (Exp id) (Exp id) (Exp id) - -- if exp then exp else exp- | ExpType Pos (Exp id) [Context id] (Type id)- -- exp :: context => type---- Above only in expressions, not in patterns- | ExpRecord (Exp id) [Field id]- | ExpApplication Pos [Exp id] -- always at least two elements?- | ExpVar Pos id- | ExpCon Pos id- | ExpInfixList Pos [Exp id] -- Temporary, introduced by parser because- | ExpVarOp Pos id -- it does not know precedence and - | ExpConOp Pos id -- associativity; removed by rename- | ExpLit Pos (Lit Boxed)- | ExpList Pos [Exp id]---- after typechecker- | Exp2 Pos id id -- e.g. Ord.Eq or Eq.Int---- Below only in patterns- | PatAs Pos id (Pat id)- | PatWildcard Pos- | PatIrrefutable Pos (Pat id)--- idea: f (n+k) = exp[n]--- => f n' | k <= n' = exp[n]--- where n = n'-k --- (n+k) pattern - store: n n' k (k<=n') (n'-k)- | PatNplusK Pos id id (Exp id) (Exp id) (Exp id)--data Field id = FieldExp Pos id (Exp id)- | FieldPun Pos id -- H98 removes (retained for error msgs)--data Boxed = Boxed | UnBoxed--instance Eq Boxed where- Boxed == Boxed = True- UnBoxed == UnBoxed = True- _ == _ = False--instance Show Boxed where- showsPrec d Boxed = id- showsPrec d UnBoxed = showChar '#'---data Lit boxed =- LitInteger boxed Integer- | LitRational boxed Rational- | LitString boxed String- | LitInt boxed Int- | LitDouble boxed Double- | LitFloat boxed Float- | LitChar boxed Char--instance (Eq b) => Eq (Lit b) where- a == a' = litEqual a a' -- litEqual needed in Symbols to force correct type in gofer--litEqual (LitInteger b i) (LitInteger b' i') = i == i' && b == b'-litEqual (LitRational b i) (LitRational b' i') = i == i' && b == b'-litEqual (LitString b s) (LitString b' s') = s == s' && b == b'-litEqual (LitInt b i) (LitInt b' i') = i == i' && b == b'-litEqual (LitDouble b f) (LitDouble b' f') = f == f' && b == b'-litEqual (LitFloat b f) (LitFloat b' f') = f == f' && b == b'-litEqual (LitChar b c) (LitChar b' c') = c == c' && b == b'-litEqual _ _ = False--instance (Show b) => Show (Lit b) where- showsPrec d lit = litshowsPrec d lit -- litshowsPrec needed in Symbols to force correct type in gofer---litshowsPrec d (LitInteger b i) = showParen (i<0) (showsPrec d i) . shows b-litshowsPrec d (LitRational b i) = - -- this is a hack to show a rational in floating point representation- -- precision might be lost- -- therer is no library function to print a rational in full precision- -- in floating point representation- showParen (i<0) (showsPrec d ((fromRational i)::Double)) . shows b-litshowsPrec d (LitString b str)= showString (strStr str) . shows b-litshowsPrec d (LitInt b i) = showParen (i<0) (showsPrec d i) . shows b-litshowsPrec d (LitDouble b f) = showParen (f<0) (showsPrec d f) . shows b-litshowsPrec d (LitFloat b f) = showParen (f<0) (showsPrec d f) . shows b-litshowsPrec d (LitChar b chr)= showString (strChr chr). shows b--data Qual id =--- pat <- exp- QualPatExp (Pat id) (Exp id)--- pat- | QualExp (Exp id)--- let decls- | QualLet (Decls id)-------------------------data Interface id = --- interface modid where {iimpdecl; fixdecl; itopdecl }- Interface Pos id [IImpDecl id] [FixDecl id] (IDecls id)--type IImpDecl id = ImpDecl id -- No Hiding in ImpSpec--type IDecls id = Decls id -- No Valdef-
− compiler98/SyntaxPos.hs
@@ -1,121 +0,0 @@-module SyntaxPos(Pos,HasPos(..)) where--import Extra(Pos,noPos,mergePos,mergePoss)-import Syntax--class HasPos a where- getPos :: a -> Pos--instance HasPos (Decls a) where- getPos (DeclsParse decls) = getPos decls- getPos (DeclsScc decls) = getPos decls--instance HasPos (DeclsDepend a) where- getPos (DeclsNoRec decl) = getPos decl- getPos (DeclsRec decls) = getPos decls--instance HasPos (Decl a) where- getPos (DeclType simple ty) = mergePos (getPos simple) (getPos ty)- getPos (DeclDataPrim pos _ _) = pos- getPos (DeclData _ ctx simple constrs derives) = - mergePoss [getPos ctx,getPos simple,getPos constrs,getPosList derives]- getPos (DeclConstrs pos _ _) = pos- getPos (DeclClass pos _ _ _ _ _) = pos- getPos (DeclInstance pos _ _ _ _) = pos- getPos (DeclDefault tys) = getPos tys- getPos (DeclVarsType ((pos,_):_) _ ty) = mergePos pos (getPos ty)- getPos (DeclFun pos fun funs) = pos- getPos (DeclPrimitive pos fun a t) = pos- getPos (DeclForeignImp pos _ s fun a c t _) = pos- getPos (DeclForeignExp pos _ s fun t) = pos- getPos (DeclPat alt) = getPos alt- getPos (DeclIgnore str) = noPos- getPos (DeclError str) = noPos--instance HasPos (Entity a) where- getPos (EntityVar pos _) = pos- getPos (EntityConClsAll pos _) = pos- getPos (EntityConClsSome pos _ _) = pos--instance HasPos (Alt a) where- getPos (Alt pat rhs locals) = - mergePoss [getPos pat,getPos rhs,getPos locals]--instance HasPos (Fun a) where- getPos (Fun pats rhs locals) = - mergePoss [getPos pats,getPos rhs,getPos locals]--instance HasPos (Rhs a) where- getPos (Unguarded e) = getPos e- getPos (Guarded gdes) = - mergePos (getPos (fst (head gdes))) (getPos (snd (last gdes)))--instance HasPos (Stmt a) where- getPos (StmtExp exp) = getPos exp- getPos (StmtBind pat exp) = mergePos (getPos pat) (getPos exp)- getPos (StmtLet decls) = getPos decls--instance HasPos (Exp a) where- getPos (ExpDict exp) = getPos exp- getPos (ExpScc str exp) = getPos exp- getPos (ExpLambda pos _ _) = pos- getPos (ExpLet pos _ _) = pos- getPos (ExpDo pos _) = pos- getPos (ExpCase pos _ _) = pos- getPos (ExpFail) = error "No position for ExpFail"- getPos (ExpIf pos _ _ _) = pos- getPos (ExpType pos _ _ _) = pos- getPos (ExpRecord exp fdefs) = mergePos (getPos exp) (getPos fdefs)- getPos (ExpApplication pos _ ) = pos- getPos (ExpInfixList pos _) = pos- getPos (ExpVar pos _) = pos- getPos (ExpCon pos _) = pos- getPos (ExpVarOp pos _) = pos- getPos (ExpConOp pos _) = pos- getPos (ExpLit pos _) = pos- getPos (ExpList pos _) = pos- getPos (Exp2 pos i1 i2) = pos- getPos (PatAs pos _ _) = pos- getPos (PatWildcard pos) = pos- getPos (PatIrrefutable pos _) = pos- getPos (PatNplusK pos _ _ _ _ _) = pos---instance HasPos a => HasPos [a] where- -- assumes that first and last element have proper positions- getPos [] = noPos- getPos xs = mergePos (getPos (head xs)) (getPos (last xs))--instance (HasPos a,HasPos b) => HasPos (a,b) where -- used on GdExp- getPos (a,b) = mergePos (getPos a) (getPos b)--instance HasPos (Simple a) where- getPos (Simple pos _ _) = pos--instance HasPos (Type a) where- getPos (TypeApp t1 t2) = mergePos (getPos t1) (getPos t2)- -- pos is position of constructor, not whole type, which shall be returned- getPos (TypeCons pos _ (t:ts)) = mergePos (min pos (getPos t)) (getPos ts)- getPos (TypeCons pos _ ts) = mergePos pos (getPos ts)- getPos (TypeVar pos _) = pos- getPos (TypeStrict pos _) = pos--instance HasPos (Context a) where- getPos (Context pos _ _) = pos--instance HasPos (FixId a) where- getPos (FixCon pos a) = pos- getPos (FixVar pos a) = pos--instance HasPos (Field a) where- getPos (FieldExp pos _ _) = pos- getPos (FieldPun pos _) = pos--instance HasPos (Constr a) where- getPos (Constr pos _ _) = pos- getPos (ConstrCtx _ _ pos _ _) = pos---getPosList :: [(Pos,a)] -> Pos-getPosList [] = noPos-getPosList xs = mergePos (fst (head xs)) (fst (last xs))
− compiler98/SyntaxUtil.hs
@@ -1,47 +0,0 @@-module SyntaxUtil(dropPatAs, infixFun, isCon- , isExpInt, isExpIrr, isExpVar, isVar, isNK- , isTypeVar- ) where--import Syntax-import SyntaxPos---- CaseHelp--isVar (ExpVar _ _) = True-isVar (PatWildcard _) = True-isVar _ = False--isCon (ExpCon _ _) = True-isCon (ExpApplication _ (p:_)) = isCon p-isCon _ = False--isExpInt (ExpLit _ (LitInt _ _)) = True-isExpInt _ = False--isNK (PatNplusK _ _ _ _ _ _) = True-isNK _ = False--isExpIrr (PatIrrefutable _ _) = True-isExpIrr _ = False--dropPatAs (PatAs _ _ pat) = dropPatAs pat-dropPatAs pat = pat--isExpVar (ExpVar _ _) = True-isExpVar _ = False----- Rename--infixFun es =- case break isExpVarOp es of- (e1,ExpVarOp pos fun:e2) ->- Just (ExpInfixList (getPos e1) e1,pos,fun,ExpInfixList (getPos e2) e2)- _ -> Nothing--isExpVarOp (ExpVarOp _ _) = True-isExpVarOp _ = False--isTypeVar (TypeVar _ _ ) = True-isTypeVar _ = False
− compiler98/SysDeps.hs
@@ -1,40 +0,0 @@-module SysDeps (- PackedString, packString, unpackPS, trace, isAlphaNum-) where--import qualified Data.ByteString.Char8 as PackedString-import Debug.Trace(trace)-import Data.Char(isAlphaNum)--type PackedString = PackedString.ByteString--packString :: String -> PackedString-packString = PackedString.pack--unpackPS :: PackedString -> String-unpackPS = PackedString.unpack--{---#if __GLASGOW_HASKELL__ >= 502-import Data.PackedString as PackedString-#else-import PackedString-#endif--#if defined(__NHC__) || defined(__HBC__)-import NonStdTrace (trace)-#elif __GLASGOW_HASKELL__ >= 502-import Debug.Trace (trace)-#else-import IOExts (trace)-#endif--#if defined(__HASKELL98__)-import Char (isAlphaNum)-#else-import Data.Char (isAlphanum)--isAlphaNum :: Char -> Bool-isAlphaNum = isAlphanum-#endif---}
− compiler98/TokenId.hs
@@ -1,384 +0,0 @@-{- ----------------------------------------------------------------------------Defines data type TokenId for names of all kinds of identifiers.-Also defines tokenIds for identifiers that are hardcoded into the compiler.--}-module TokenId(module TokenId) where--import Data.Char(isUpper)-import Extra(isNhcOp,Pos,strPos)-import SysDeps(PackedString, unpackPS, packString)---visible rtoken = Visible (packString rtoken)-qualify rmodule rtoken = Qualified (packString rmodule) (packString rtoken)---data TokenId =- TupleId Int -- no distinction between the type and the value constructor?- | Visible PackedString -- unqualified name- | Qualified PackedString PackedString- -- token for qualified name: module name, variable name- | Qualified2 TokenId TokenId - -- token with: class token, type token for a dictionary?- | Qualified3 TokenId TokenId TokenId- -- token for method in instance: class token, type token, method token- deriving (Eq,Ord)---instance Show TokenId where- showsPrec d (TupleId s) = if s == 0- then showString "()"- else showString "Prelude." . shows s- showsPrec d (Visible n) = showString (reverse (unpackPS n))- showsPrec d (Qualified m n ) = - showString (reverse (unpackPS m)) . showChar '.' . - showString (reverse (unpackPS n))- showsPrec d (Qualified2 t1 t2) = shows t1 . showChar '.' . shows t2- showsPrec d (Qualified3 t1 t2 t3) = - shows t1 . showChar '.' . shows t2 . showChar '.' . shows t3--mkUnqualifiedTokenId :: String -> TokenId-mkUnqualifiedTokenId = visible . reverse--mkQualifiedTokenId :: String -> String -> TokenId-mkQualifiedTokenId mod name = qualify (reverse mod) (reverse name)--getUnqualified :: TokenId -> String-getUnqualified = reverse . unpackPS . extractV--isTidOp :: TokenId -> Bool-isTidOp (TupleId s) = False-isTidOp tid = - (isNhcOp . head . dropWhile (=='_') . reverse . unpackPS . extractV) tid--isTidCon :: TokenId -> Bool-isTidCon tid = isTupleId tid- || (let x@(s:_) = (reverse . unpackPS . extractV) tid in- isUpper s || s==':' || x=="[]")--isTupleId :: TokenId -> Bool-isTupleId (TupleId _) = True-isTupleId (Qualified2 _ t) = isTupleId t-isTupleId (Qualified3 _ _ t) = isTupleId t-isTupleId _ = False----notPrelude (Qualified tid n) = tid /= rpsDPrelude && tid /= rpsPrelude-notPrelude (Qualified tid n) = (tid /= rpsPrelude) -- && (tid /= rpsInternal)-notPrelude (Qualified2 t1 t2) = notPrelude t1 && notPrelude t2 -notPrelude (Qualified3 t1 t2 t3) = notPrelude t1 && notPrelude t2 -notPrelude (TupleId _) = False---{- construct Qualified2 token from given two tokens -}-mkQual2 :: TokenId -> TokenId -> TokenId-mkQual2 cls cls_typ = Qualified2 cls cls_typ---{- construct Qualified3 token from given three tokens -}-mkQual3 :: TokenId -> TokenId -> TokenId -> TokenId-mkQual3 cls typ met = Qualified3 cls typ (dropM met)---{- -}-mkQualD :: PackedString -> TokenId -> TokenId-mkQualD rps v@(Visible n) = Qualified3 (Visible rps) t_underscore v-mkQualD rps (Qualified m v) = Qualified3 (Visible m) t_underscore (Visible v)---{- if token is not qualified make it qualified with given module name -}-ensureM :: PackedString -> TokenId -> TokenId-ensureM tid (Visible n) = Qualified tid n-ensureM tid q = q---{- make token into qualified token with given module name -}-forceM :: PackedString -> TokenId -> TokenId-forceM m (Qualified _ n) = Qualified m n-forceM m (Visible n) = Qualified m n-forceM m tid = tid---{- drop all qualification (module names) from token -}-dropM :: TokenId -> TokenId-dropM (Qualified tid n) = Visible n-dropM (Qualified2 t1 t2) = t2-dropM (Qualified3 t1 t2 t3) = t3-dropM v = v--{- get module name from token, correct for Visible? -}-extractM :: TokenId -> PackedString-extractM (Qualified tid n) = tid-extractM (Qualified2 t1 t2) = extractM t1-extractM (Qualified3 t1 t2 t3) = extractM t1-extractM v = rpsPrelude---{- get identifier name from token, without qualification -}-extractV :: TokenId -> PackedString-extractV (TupleId n) = packString ('(' : foldr (:) ")" (replicate n ','))-extractV (Visible v) = v-extractV (Qualified m v) = v-extractV (Qualified2 t1 t2) = extractV t2-extractV (Qualified3 t1 t2 t3) = extractV t3---{- extend token by adding position to the identifier name -}-tidPos :: TokenId -> Pos -> TokenId-tidPos (TupleId s) pos = if s == 0 - then visImport ("():" ++ (strPos pos))- else visImport (shows s (':' : strPos pos))-tidPos (Visible n) pos = - Visible (packString (reverse (strPos pos) ++ ':' : unpackPS n))-tidPos (Qualified m n ) pos = - Qualified m (packString (reverse (strPos pos) ++ ':' : unpackPS n))-tidPos (Qualified2 t1 t2) pos =- Qualified2 t1 (tidPos t2 pos)-tidPos (Qualified3 t1 t2 t3) pos = - Qualified3 t1 t2 (tidPos t3 pos)---{- append given string to module name of qualified token -}-add2M :: String -> TokenId -> TokenId-add2M str (Qualified m v) = - Qualified (packString (reverse str ++ unpackPS m)) v--visImport = Visible . packString . reverse-qualImpPrel = Qualified rpsPrelude . packString . reverse-qualImpNHC = Qualified rpsInternal . packString . reverse-qualImpBin = Qualified rpsBinary . packString . reverse-qualImpRat = Qualified rpsRatio . packString . reverse-qualImpIx = Qualified rpsIx . packString . reverse-qualImpFFI = Qualified rpsFFI . packString . reverse-qualImpPS = Qualified rpsPS . packString . reverse-qualImpIOE = Qualified rpsIOE . packString . reverse--rpsPrelude = (packString . reverse ) "Prelude"-rpsInternal = (packString . reverse ) "NHC.Internal"-rpsRatio = (packString . reverse ) "Ratio"-rpsIx = (packString . reverse ) "Ix"-rpsFFI = (packString . reverse ) "NHC.FFI"-rpsPS = (packString . reverse ) "NHC.PackedString"-rpsIOE = (packString . reverse ) "NHC.IOExtras"-rpsBinary = (packString . reverse ) "NHC.Binary"-rpsHatHack = (packString . reverse ) "Hat.Hack"---isUnit (TupleId 0) = True-isUnit _ = False---{- make token for tuple of given size -}-t_Tuple :: Int -> TokenId-t_Tuple size = TupleId size---tmain = Qualified (packString (reverse "Main")) (packString (reverse "main"))--tPrelude = Visible rpsPrelude-tHatHack = Visible rpsHatHack-tNHCInternal = Visible rpsInternal-t_underscore = visImport "_"-t_Bang = visImport "!"-t_Assign = visImport ":="-tprefix = visImport "prefix"-tqualified = visImport "qualified"-thiding = visImport "hiding"-tas = visImport "as"-tinterface = visImport "interface"-tforall = visImport "forall"-tdot = visImport "." - -- an unqualified dot, used in types, e.g., "forall a . [a]"-tunboxed = visImport "unboxed"-tprimitive = visImport "primitive"-tMain = visImport "Main"-tUnknown u = visImport ("Unexported.Constr_"++show u)--t_gtgteq = qualImpPrel ">>="-t_gtgt = qualImpPrel ">>"-tfail = qualImpPrel "fail"-t_error = qualImpPrel "error"-t_undef = qualImpPrel "undefined"-tfromInteger = qualImpPrel "fromInteger"-tNum = qualImpPrel "Num"-tIntegral = qualImpPrel "Integral"-tInt = qualImpPrel "Int"-tIntHash = qualImpPrel "Int#"---t_flip = qualImpPrel "flip"-tminus = qualImpPrel "-"-t_minus = visImport "-"-tident = qualImpPrel "id"-tnegate = qualImpPrel "negate"-tTrue = qualImpPrel "True"-tFalse = qualImpPrel "False"-tunknown = visImport "Unknown.variable"-terror = qualImpPrel "error"-tIO = qualImpNHC "IO"-tBool = qualImpPrel "Bool"-tFloatHash = qualImpPrel "Float#"-tFloat = qualImpPrel "Float"-tChar = qualImpPrel "Char"-t_List = qualImpPrel "[]"-t_ListNQ = visImport "[]"-t_Arrow = qualImpPrel "->"-t_Pair = qualImpPrel "(,"-tString = qualImpPrel "String"-t_filter = qualImpPrel "_filter" -t_foldr = qualImpPrel "_foldr" -- be careful, non-standard signature -t_Colon = qualImpPrel ":"-t_ColonNQ = visImport ":"-t_x = visImport "_x"-t_y = visImport "_y"-t_equalstring = qualImpPrel "_equalstring"-t_guardstring = qualImpPrel "_guardstring"-t_fail = qualImpPrel "_fail"-t_fatbar = qualImpPrel "_fatbar"-t_select = qualImpPrel "_select"-t_patbindupdate = qualImpPrel "_patbindupdate"-t_callpatbindupdate = qualImpPrel "_callpatbindupdate"-tDialogue = qualImpPrel "Dialogue"-t_apply1 = qualImpNHC "_apply1"-t_apply2 = qualImpNHC "_apply2"-t_apply3 = qualImpNHC "_apply3"-t_apply4 = qualImpNHC "_apply4"-t_used = qualImpPrel "used!"-tInteger = qualImpPrel "Integer"-tDouble = qualImpPrel "Double"-tDoubleHash = qualImpPrel "Double#"-tfromRational = qualImpPrel "fromRational"-t_equalinteger = qualImpPrel "_equalinteger"-t_guardinteger = qualImpPrel "_guardinteger"-t_nopos = qualImpPrel "<no pos>"-t_fromEnum = qualImpPrel "_fromEnum"-t_toEnum = qualImpPrel "_toEnum"---tEval = qualImpPrel "Eval" -- Removed in Haskell 98-tEq = qualImpPrel "Eq"-tOrd = qualImpPrel "Ord"-tEnum = qualImpPrel "Enum"-tIx = qualImpIx "Ix"-tShow = qualImpPrel "Show"-tRead = qualImpPrel "Read"-t_andand = qualImpPrel "&&"-t_pipepipe = qualImpPrel "||"-tcompare = qualImpPrel "compare"-tLT = qualImpPrel "LT"-tEQ = qualImpPrel "EQ"-tGT = qualImpPrel "GT"-t_equalequal = qualImpPrel "=="-t_lessequal = qualImpPrel "<="-t_lessthan = qualImpPrel "<"-t_greater = qualImpPrel ">"-t_greaterequal = qualImpPrel ">="--tseq = qualImpPrel "seq"--trange = qualImpIx "range"-tindex = qualImpIx "index"-tinRange = qualImpIx "inRange"-t_tupleRange = qualImpIx "_tupleRange"-t_tupleIndex = qualImpIx "_tupleIndex"-t_enumRange = qualImpPrel "_enumRange"-t_enumIndex = qualImpPrel "_enumIndex"-t_enumInRange = qualImpPrel "_enumInRange"--tfromEnum = qualImpPrel "fromEnum"-ttoEnum = qualImpPrel "toEnum"-tenumFrom = qualImpPrel "enumFrom"-tenumFromTo = qualImpPrel "enumFromTo"-tenumFromThen = qualImpPrel "enumFromThen"-tenumFromThenTo = qualImpPrel "enumFromThenTo"-t_enumFromTo = qualImpPrel "_enumFromTo"-t_enumFromThenTo= qualImpPrel "_enumFromThenTo"--tBounded = qualImpPrel "Bounded"-tminBound = qualImpPrel "minBound"-tmaxBound = qualImpPrel "maxBound"--t_append = qualImpPrel "++"-t_readCon0 = qualImpPrel "_readCon0"-t_readConInfix = qualImpPrel "_readConInfix"-t_readCon = qualImpPrel "_readCon"-t_readConArg = qualImpPrel "_readConArg"-t_readField = qualImpPrel "_readField"-t_readFinal = qualImpPrel "_readFinal"--tshowsPrec = qualImpPrel "showsPrec"-tshowsType = qualImpPrel "showsType"-treadsPrec = qualImpPrel "readsPrec"-t_dot = qualImpPrel "."-tshowString = qualImpPrel "showString"-tshowChar = qualImpPrel "showChar"-tshowParen = qualImpPrel "showParen"-treadParen = qualImpPrel "readParen"-tFractional = qualImpPrel "Fractional"-tRational = qualImpRat "Rational" -- Changed in Haskell 98-tRatio = qualImpRat "Ratio" -- Changed in Haskell 98-tRatioCon = qualImpRat "%" -- Changed in Haskell 98-tPRIMITIVE = visImport "PRIMITIVE"-tNEED = visImport "NEED"-t_primitive = visImport "primitive"-t_Lambda = qualImpPrel "\\"-t_eqInteger = qualImpNHC "_eqInteger"-t_eqDouble = qualImpNHC "_eqDouble"-t_eqFloat = qualImpNHC "_eqFloat"-t_otherwise = tTrue--t_id = qualImpNHC "_id" - -- identity function that is not modified by the tracing transformation---{- Malcolm's additions from here on -}--{- class + instances of Binary -}-tBinary = qualImpBin "Binary"-t_put = qualImpBin "put"-t_get = qualImpBin "get"-t_getF = qualImpBin "getF"-t_sizeOf = qualImpBin "sizeOf"-t_putBits = qualImpBin "putBits"-t_getBits = qualImpBin "getBits"-t_getBitsF = qualImpBin "getBitsF"-t_ltlt = qualImpBin "<<"-t_return = qualImpPrel "return"-t_plus = qualImpPrel "+"--{- (N+K) patterns -}-t_nplusk = visImport "+"-t_subtract = qualImpPrel "subtract"--{- FFI -}-t_foreign = visImport "foreign"-t_export = visImport "export"-t_ccall = visImport "ccall"-t_stdcall = visImport "stdcall"-t_haskell = visImport "haskell"-t_noproto = visImport "noproto"-t_cplusplus = visImport "cplusplus"-t_dotnet = visImport "dotnet"-t_jvm = visImport "jvm"-t_cast = visImport "cast"-t_safe = visImport "safe"-t_unsafe = visImport "unsafe"-tAddr = qualImpFFI "Addr"-tPtr = qualImpFFI "Ptr"-tFunPtr = qualImpFFI "FunPtr"-tForeignObj = qualImpFFI "ForeignObj"-tForeignPtr = qualImpFFI "ForeignPtr"-tStablePtr = qualImpFFI "StablePtr"---tWord = qualImpFFI "Word"-tInt8 = qualImpFFI "Int8"-tInt16 = qualImpFFI "Int16"-tInt32 = qualImpFFI "Int32"-tInt64 = qualImpFFI "Int64"-tWord8 = qualImpFFI "Word8"-tWord16 = qualImpFFI "Word16"-tWord32 = qualImpFFI "Word32"-tWord64 = qualImpFFI "Word64"-tPackedString = qualImpPS "PackedString"-tunsafePerformIO= qualImpNHC "unsafePerformIO"--{- more FFI -}-t_mkIOok n = qualImpNHC ("_mkIOok"++show (n::Int))--{- End TokenId -------------------------------------------------------------}
− compiler98/Tree234.hs
@@ -1,95 +0,0 @@--- Red-Black trees.--- (was previously implemented as 2-3-4 trees, hence the module name.)-module Tree234-( Tree,- initTree,- treeAdd,- treeAddList,- treeFromList,- treeSearch,- treeUpdate,- treeMap,- treeMapList-) where--data Tree a- = R (Tree a) a (Tree a)- | B (Tree a) a (Tree a)- | E- deriving Show--initTree :: Tree a-initTree = E--treeAdd :: (a -> a -> a) -> (a -> a -> Ordering) -> a -> Tree a -> Tree a-treeAdd comb cmp a t = mkB (ins t)- where- mkB (R l a r) = B l a r- mkB t = t-- ins E = R E a E- ins (B l b r)- = case (cmp a b) of- LT -> lbal (ins l) b r- EQ -> B l (a `comb` b) r- GT -> rbal l b (ins r)- ins (R l b r)- = case (cmp a b) of- LT -> R (ins l) b r- EQ -> R l (a `comb` b) r- GT -> R l b (ins r)-- lbal :: Tree a -> a -> Tree a -> Tree a- lbal (R (R a x b) y c) z d = R (B a x b) y (B c z d)- lbal (R a x (R b y c)) z d = R (B a x b) y (B c z d)- lbal a x b = B a x b-- rbal :: Tree a -> a -> Tree a -> Tree a- rbal a x (R (R b y c) z d) = R (B a x b) y (B c z d)- rbal a x (R b y (R c z d)) = R (B a x b) y (B c z d)- rbal a x b = B a x b--treeAddList :: (a -> a -> a) -> (a -> a -> Ordering) -> [a] -> Tree a -> Tree a-treeAddList comb cmp xs t = foldr (treeAdd comb cmp) t xs--treeFromList :: (a -> a -> a) -> (a -> a -> Ordering) -> [a] -> Tree a-treeFromList comb cmp l = treeAddList comb cmp l E--treeSearch :: b -> (a -> b) -> (a -> Ordering) -> Tree a -> b-treeSearch fail cont p E = fail-treeSearch fail cont p (R l a r)- = case (p a) of- LT -> treeSearch fail cont p l- EQ -> cont a- GT -> treeSearch fail cont p r-treeSearch fail cont p (B l a r)- = case (p a) of- LT -> treeSearch fail cont p l- EQ -> cont a- GT -> treeSearch fail cont p r--treeUpdate :: (a -> a) -> (a -> Ordering) -> Tree a -> Tree a-treeUpdate update p E = E-treeUpdate update p (R l a r)- = case (p a) of- LT -> R (treeUpdate update p l) a r- EQ -> R l (update a) r- GT -> R l a (treeUpdate update p r)-treeUpdate update p (B l a r)- = case (p a) of- LT -> B (treeUpdate update p l) a r- EQ -> B l (update a) r- GT -> B l a (treeUpdate update p r)--treeMap :: (a -> b) -> Tree a -> Tree b-treeMap f E = E-treeMap f (B l a r) = B (treeMap f l) (f a) (treeMap f r)-treeMap f (R l a r) = R (treeMap f l) (f a) (treeMap f r)--treeMapList :: (a -> [b] -> [b]) -> Tree a -> [b]-treeMapList f t = treeFold f [] t--treeFold :: (a -> b -> b) -> b -> Tree a -> b-treeFold f c E = c-treeFold f c (B l a r) = treeFold f (a `f` treeFold f c r) l-treeFold f c (R l a r) = treeFold f (a `f` treeFold f c r) l
− compiler98/Unlit.hs
@@ -1,68 +0,0 @@-module Unlit(unlit) where---- Part of the following code is from--- "Report on the Programming Language Haskell",--- version 1.2, appendix C.--import Data.Char--data Classified = Program String | Blank | Comment- | Include Int String | Pre String--classify :: [String] -> [Classified]-classify [] = []-classify (('\\':x):xs) | x == "begin{code}" = Blank : allProg xs- where allProg [] = [] -- Should give an error message,- -- but I have no good position information.- allProg (('\\':x):xs) | x == "end{code}" = Blank : classify xs- allProg (x:xs) = Program x:allProg xs-classify (('>':x):xs) = Program (' ':x) : classify xs-classify (('#':x):xs) = (case words x of- (line:file:_) | all isDigit line- -> Include (read line) file- _ -> Pre x- ) : classify xs-classify (x:xs) | all isSpace x = Blank:classify xs-classify (x:xs) = Comment:classify xs--unclassify :: Classified -> String-unclassify (Program s) = s-unclassify (Pre s) = '#':s-unclassify (Include i f) = '#':' ':show i ++ ' ':f-unclassify Blank = ""-unclassify Comment = ""--unlit :: String -> String -> String-unlit file lhs = (unlines- . map unclassify- . adjecent file (0::Int) Blank- . classify) (inlines lhs)--adjecent :: String -> Int -> Classified -> [Classified] -> [Classified]-adjecent file 0 _ (x :xs) = x : adjecent file 1 x xs -- force evaluation of line number-adjecent file n y@(Program _) (x@Comment :xs) = error (message file n "program" "comment")-adjecent file n y@(Program _) (x@(Include i f):xs) = x: adjecent f i y xs-adjecent file n y@(Program _) (x@(Pre _) :xs) = x: adjecent file (n+1) y xs-adjecent file n y@Comment (x@(Program _) :xs) = error (message file n "comment" "program")-adjecent file n y@Comment (x@(Include i f):xs) = x: adjecent f i y xs-adjecent file n y@Comment (x@(Pre _) :xs) = x: adjecent file (n+1) y xs-adjecent file n y@Blank (x@(Include i f):xs) = x: adjecent f i y xs-adjecent file n y@Blank (x@(Pre _) :xs) = x: adjecent file (n+1) y xs-adjecent file n _ (x@next :xs) = x: adjecent file (n+1) x xs-adjecent file n _ [] = []--message "\"\"" n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n"-message [] n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n"-message file n p c = "In file " ++ file ++ " at line "++show n++": "++p++ " line before "++c++" line.\n"----- Re-implementation of 'lines', for better efficiency (but decreased laziness).--- Also, importantly, accepts non-standard DOS and Mac line ending characters.-inlines s = lines' s id- where- lines' [] acc = [acc []]- lines' ('\^M':'\n':s) acc = acc [] : lines' s id -- DOS- lines' ('\^M':s) acc = acc [] : lines' s id -- MacOS- lines' ('\n':s) acc = acc [] : lines' s id -- Unix- lines' (c:s) acc = lines' s (acc . (c:))-
hat.cabal view
@@ -1,6 +1,6 @@ name: hat-version: 2.7.0.12+version: 2.8.0.0 synopsis: The Haskell tracer, generating and viewing Haskell execution traces description: hat-trans transforms Module.hs into Hat/Module.hs such that when the program is@@ -8,14 +8,16 @@ Various tools (hat-trail, hat-observe, hat-explore ...) then allow viewing the trace file in different ways, to locate a bug or understand how a program works. - This is the first release of Hat under Cabal.+ Hat 2.8 uses the haskell-src-exts parser and other Hackage libraries to+ reduce its own size and simplify extensions. Module imports and exports have+ also been improved to handle nearly all kinds of renaming, hiding, etc. - It is the least possible update to make Hat work with Cabal.- Hat 2.07 works only with ghc for Haskell 98 (plus a few extensions) and+ Hat 2.8 works only with ghc for Haskell 98 (plus a few extensions) and the standard Haskell 98 libraries plus some Haskell 2010 libraries. Although it should build on any operating system, most viewing tools use ASCII console escape sequences and they open xterms; hence they will only work well under Unix and X11.+ Tested on MacOS X 10.8.4. Installation: @@ -39,12 +41,12 @@ > hat-trail / hat-observe / hat-explore /... MyProgram - There is documentation in the "docs" folder, but much of it is outdated.+ There is documentation in the "docs" folder, but it is partially outdated. There are a few small programs for exploring tracing in the "examples" folder.-homepage: http://olafchitil.github.com/hat/+homepage: http://projects.haskell.org/hat/ license: OtherLicense license-file: docs/copyright.html-copyright: (c) 2000-2012 Hat team+copyright: (c) 2000-2013 Hat team author: Hat team maintainer: oc@kent.ac.uk stability: provisional@@ -63,24 +65,24 @@ location: git://github.com/OlafChitil/hat.git library- exposed-modules: Hat.Array, Hat.Char, Hat.Complex, Hat.CPUTime, Hat.Directory, Hat.Hack, Hat.Hat, Hat.IO, Hat.Ix, Hat.List, Hat.Locale, Hat.Maybe, Hat.Monad, Hat.Numeric, Hat.Prelude, Hat.PreludeBasic, Hat.Random, Hat.Ratio, Hat.System, Hat.Time, Hat.Control.Monad, Hat.Data.Char, Hat.Data.Maybe, Hat.Data.List, Hat.System.Environment, Hat.System.Exit, Hat.System.IO+ exposed-modules: Hat.Array, Hat.Char, Hat.Complex, Hat.CPUTime, Hat.Directory, Hat.Hack, Hat.Hat, Hat.IO, Hat.Ix, Hat.List, Hat.Locale, Hat.Maybe, Hat.Monad, Hat.Numeric, Hat.Prelude, Hat.PreludeBasic, Hat.PreludeBuiltinTypes, Hat.Random, Hat.Ratio, Hat.System, Hat.Time, Hat.Control.Monad, Hat.Data.Char, Hat.Data.Maybe, Hat.Data.List, Hat.System.Environment, Hat.System.Exit, Hat.System.IO build-depends: base >=4.5 && < 5, directory >=1.1, random >=1.0, process >=1.1, old-time >=1.1, old-locale >=1.0- other-modules: Hat.DirectoryBuiltin, Hat.DirectoryBuiltinTypes, Hat.IOBuiltin, Hat.IOBuiltinTypes, Hat.PreludeBuiltin, Hat.PreludeBuiltinTypes, Hat.RandomBuiltin, Hat.SystemBuiltin, Hat.SystemBuiltinTypes, Hat.TimeBuiltin, Hat.TimeBuiltinTypes+ other-modules: Hat.DirectoryBuiltin, Hat.DirectoryBuiltinTypes, Hat.IOBuiltin, Hat.IOBuiltinTypes, Hat.PreludeBuiltin, Hat.RandomBuiltin, Hat.SystemBuiltin, Hat.SystemBuiltinTypes, Hat.TimeBuiltin, Hat.TimeBuiltinTypes extensions: ForeignFunctionInterface includes: hat-c.h, art.h, ntohl.h include-dirs: include, Hat c-sources: Hat/hat-c.c- cc-options: -DFILEVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" executable hat-trans main-is: HatTrans.hs- hs-source-dirs: trans, compiler98- other-modules: TraceTrans, TraceDerive, AuxLabelAST, AuxFixity, AuxFile, AuxTypes, TraceId, Flags, PrettyTraceId, HatTrans, Wrapper, AssocTree, Error, Extra, HbcOnly, Id, IdKind, Info, IntState, Lex, LexLow, LexPre, LexStr, Lexical, MergeSort, MkSyntax, NT, Nice, OsOnly, Parse, Parse2, ParseCore, ParseLex, ParseLib, PrettyLib, PrettySyntax, Reduce, Syntax, SyntaxPos, SyntaxUtil, SysDeps, TokenId, Tree234, Unlit, Paths_hat- build-depends: base >=4.5, bytestring >=0.9, directory >=1.1+ hs-source-dirs: trans+ other-modules: Wired, SynHelp, Relation, Wrap, Flags, Environment, AuxFile, Derive, TraceTrans, HatTrans+ build-depends: base >=4.5, bytestring >=0.9, directory >=1.1, haskell-src-exts >= 1.13, containers >= 0.5.2, filepath >= 1.3 includes: hat-c.h, art.h, ntohl.h include-dirs: include, Hat c-sources: Hat/hat-c.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-trail main-is: HatTrail.hs@@ -91,7 +93,7 @@ includes: art.h include-dirs: include c-sources: tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-observe main-is: HatObserve.hs@@ -102,7 +104,7 @@ includes: art.h include-dirs: include c-sources: tools/pathutils.c, tools/artutils.c, tools/finitemap.c, tools/hat-names.c, tools/observeutils.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-stack main-is: HatStackText.hs@@ -113,7 +115,7 @@ includes: art.h include-dirs: include c-sources: tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-explore main-is: HatExplore.hs@@ -124,7 +126,7 @@ includes: art.h include-dirs: include c-sources: tools/parentset.c, tools/detectutils.c, tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-detect -- currently just calls hat-delta; was a separate tool@@ -136,7 +138,7 @@ includes: art.h, ntohl.h include-dirs: include c-sources: tools/detectutils.c, tools/parentset.c, tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-check main-is: HatCheck.hs@@ -146,7 +148,7 @@ includes: art.h, ntohl.h include-dirs: include c-sources: tools/hat-check.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-view main-is: SrcRefViewer.hs@@ -167,7 +169,7 @@ includes: art.h, ntohl.h include-dirs: include c-sources: tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable black-hat main-is: BlackHat.hs@@ -178,7 +180,7 @@ includes: art.h, ntohl.h include-dirs: include c-sources: tools/nontermutils.c, tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-nonterm main-is: HatNonTerm.hs@@ -189,7 +191,7 @@ includes: art.h, ntohl.h include-dirs: include c-sources: tools/nontermutils.c, tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-anim main-is: HatAnim.hs@@ -200,7 +202,7 @@ includes: art.h, ntohl.h include-dirs: include c-sources: tools/detectutils.c, tools/parentset.c, tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable pretty-hat main-is: PrettyHat.hs@@ -211,7 +213,7 @@ includes: art.h, ntohl.h include-dirs: include c-sources: tools/detectutils.c, tools/parentset.c, tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-delta main-is: HatDelta.hs@@ -222,7 +224,7 @@ includes: art.h, ntohl.h include-dirs: include c-sources: tools/detectutils.c, tools/parentset.c, tools/pathutils.c, tools/artutils.c, tools/finitemap.c- cc-options: -DFILEVERSION="2.07" -DVERSION="2.07"+ cc-options: -DFILEVERSION="2.08" -DVERSION="2.08" executable hat-make main-is: HatMake.hs
libraries/Array.hs view
@@ -2,7 +2,8 @@ module Array ( module Ix, -- export all of Ix Array, array, listArray, (!), bounds, indices, elems, assocs, - accumArray, (//), accum, ixmap ) where+ accumArray, (//), accum, ixmap + ) where import Ix import List( (\\) )@@ -11,6 +12,7 @@ data Array a b = MkArray (a,a) (a -> b) deriving () -- no (Ix a) in 2010 + array :: (Ix a) => (a,a) -> [(a,b)] -> Array a b array b ivs = if and [inRange b i | (i,_) <- ivs]@@ -20,14 +22,18 @@ [] -> error "Array.!: \ \undefined array element" _ -> error "Array.!: \- \multiply defined array element")+ \multiply defined array element"+ ) else error "Array.array: out-of-range array association" + listArray :: (Ix a) => (a,a) -> [b] -> Array a b listArray b vs = array b (zipWith (\ a b -> (a,b)) (range b) vs) + (!) :: (Ix a) => Array a b -> a -> b (!) (MkArray _ f) = f+ bounds :: (Ix a) => Array a b -> (a,a) bounds (MkArray b _) = b
libraries/Array.hx view
@@ -10,13 +10,9 @@ (Var "indices",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "ixmap",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "listArray",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ix" "(7:8-7:9,Ix).inRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ix" "(7:8-7:9,Ix).index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ix" "(7:8-7:9,Ix).range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ix" "(7:8-7:9,Ix).rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Ix" "inRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Ix" "index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Ix" "range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Ix" "rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(TypeClass "Array",TyCls (Ty [] []))-(TypeClass "Ix",TyCls (Cls ["range","index","inRange","rangeSize"]))+(TypeClass "Array",TyCls (Ty ["MkArray"] []))+(TypeClass "Ix",TyCls (Cls ["inRange","index","range","rangeSize"]))
libraries/CPUTime.hs view
@@ -3,8 +3,8 @@ import PreludeBuiltinTypes import qualified NotHat.System.CPUTime as NotHat.CPUTime -foreign import haskell "CPUTime.getCPUTime"+foreign import ccall "NotHat.CPUTime.getCPUTime" getCPUTime :: IO Integer -foreign import haskell "CPUTime.cpuTimePrecision"+foreign import ccall "NotHat.CPUTime.cpuTimePrecision" cpuTimePrecision :: Integer
libraries/Char.hx view
@@ -21,4 +21,4 @@ (Var "toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "Char",TyCls (Ty [] []))-(TypeClass "String",TyCls (Ty [] []))+(TypeClass "String",TyCls (Syn 0 THelper))
libraries/Control/Monad.hx view
@@ -29,13 +29,13 @@ (Var "when",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "zipWithM",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "zipWithM_",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False}) (Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False}) (Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "MonadPlus" "mplus",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "MonadPlus" "mzero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "Functor",TyCls (Cls ["fmap"]))-(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))-(TypeClass "MonadPlus",TyCls (Cls ["mzero","mplus"]))+(TypeClass "Monad",TyCls (Cls [">>",">>=","fail","return"]))+(TypeClass "MonadPlus",TyCls (Cls ["mplus","mzero"]))
libraries/Data/Char.hs view
@@ -42,27 +42,27 @@ import PreludeBasic import Ix-import PreludeBuiltinTypes -- (fromBool)+import PreludeBuiltinTypes as NotHat.T -- (fromBool) import qualified NotHat.Data.Char -- not to be transformed -foreign import haskell "Data.Char.isLetter"+foreign import ccall "NotHat.Data.Char.isLetter" isLetter :: Char -> Bool-foreign import haskell "Data.Char.isMark"+foreign import ccall "NotHat.Data.Char.isMark" isMark :: Char -> Bool-foreign import haskell "Data.Char.isNumber"+foreign import ccall "NotHat.Data.Char.isNumber" isNumber :: Char -> Bool-foreign import haskell "Data.Char.isPunctuation"+foreign import ccall "NotHat.Data.Char.isPunctuation" isPunctuation :: Char -> Bool-foreign import haskell "Data.Char.isSymbol"+foreign import ccall "NotHat.Data.Char.isSymbol" isSymbol :: Char -> Bool-foreign import haskell "Data.Char.isSeparator"+foreign import ccall "NotHat.Data.Char.isSeparator" isSeparator :: Char -> Bool-foreign import haskell "Data.Char.isAsciiUpper"+foreign import ccall "NotHat.Data.Char.isAsciiUpper" isAsciiUpper :: Char -> Bool-foreign import haskell "Data.Char.isAsciiLower"+foreign import ccall "NotHat.Data.Char.isAsciiLower" isAsciiLower :: Char -> Bool -foreign import haskell "Data.Char.toTitle"+foreign import ccall "NotHat.Data.Char.toTitle" toTitle :: Char -> Char data GeneralCategory@@ -98,8 +98,8 @@ | NotAssigned -- ^ Cn: Other, Not Assigned deriving (Eq, Ord, Enum, Read, Show, Bounded, Ix) -foreign import haskell - "(\\_ i -> Prelude.fromEnum (Data.Char.generalCategory (Prelude.toEnum i))) Prelude.True"+foreign import ccall + "NotHat.(\\_ i -> Prelude.fromEnum (Data.Char.generalCategory (Prelude.toEnum i))) Prelude.True" genCat :: Int -> Int generalCategory :: Char -> GeneralCategory
libraries/Data/Char.hx view
@@ -62,4 +62,4 @@ (Con Data "GeneralCategory" "UppercaseLetter",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "Char",TyCls (Ty [] [])) (TypeClass "GeneralCategory",TyCls (Ty ["UppercaseLetter","LowercaseLetter","TitlecaseLetter","ModifierLetter","OtherLetter","NonSpacingMark","SpacingCombiningMark","EnclosingMark","DecimalNumber","LetterNumber","OtherNumber","ConnectorPunctuation","DashPunctuation","OpenPunctuation","ClosePunctuation","InitialQuote","FinalQuote","OtherPunctuation","MathSymbol","CurrencySymbol","ModifierSymbol","OtherSymbol","Space","LineSeparator","ParagraphSeparator","Control","Format","Surrogate","PrivateUse","NotAssigned"] []))-(TypeClass "String",TyCls (Ty [] []))+(TypeClass "String",TyCls (Syn 0 THelper))
libraries/Directory.hs view
@@ -10,10 +10,10 @@ ) where -- import Time ( ClockTime )-import PreludeBuiltinTypes-import DirectoryBuiltinTypes-import DirectoryBuiltin-import TimeBuiltin+import PreludeBuiltinTypes as NotHat.T+import DirectoryBuiltinTypes as NotHat.T+import DirectoryBuiltin as NotHat.T+import TimeBuiltin as NotHat.T import qualified NotHat.System.Directory as NotHat.Directory instance Eq Permissions where @@ -29,50 +29,50 @@ instance Show Permissions where showsPrec = primPermissionsShowsPrec -foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primPermissionsEq :: Permissions -> Permissions -> Bool -foreign import haskell "Prelude.compare"+foreign import ccall "NotHat.Prelude.compare" primPermissionsCompare :: Permissions -> Permissions -> Ordering -foreign import haskell "Prelude.<="+foreign import ccall "NotHat.Prelude.<=" primPermissionsLeEq :: Permissions -> Permissions -> Bool -foreign import haskell "Prelude.readsPrec"+foreign import ccall "NotHat.Prelude.readsPrec" primPermissionsReadsPrec :: Int -> String -> [(Permissions,String)] -foreign import haskell "Prelude.showsPrec"+foreign import ccall "NotHat.Prelude.showsPrec" primPermissionsShowsPrec :: Int -> Permissions -> String -> String -foreign import haskell "Directory.createDirectory"+foreign import ccall "NotHat.Directory.createDirectory" createDirectory :: String -> IO ()-foreign import haskell "Directory.removeDirectory"+foreign import ccall "NotHat.Directory.removeDirectory" removeDirectory :: String -> IO ()-foreign import haskell "Directory.removeFile"+foreign import ccall "NotHat.Directory.removeFile" removeFile :: String -> IO ()-foreign import haskell "Directory.renameDirectory"+foreign import ccall "NotHat.Directory.renameDirectory" renameDirectory :: String -> String -> IO ()-foreign import haskell "Directory.renameFile"+foreign import ccall "NotHat.Directory.renameFile" renameFile :: String -> String -> IO () -foreign import haskell "Directory.getDirectoryContents"+foreign import ccall "NotHat.Directory.getDirectoryContents" getDirectoryContents :: String -> IO [String]-foreign import haskell "Directory.getCurrentDirectory"+foreign import ccall "NotHat.Directory.getCurrentDirectory" getCurrentDirectory :: IO String-foreign import haskell "Directory.setCurrentDirectory"+foreign import ccall "NotHat.Directory.setCurrentDirectory" setCurrentDirectory :: String -> IO () -foreign import haskell "Directory.doesFileExist"+foreign import ccall "NotHat.Directory.doesFileExist" doesFileExist :: String -> IO Bool-foreign import haskell "Directory.doesDirectoryExist"+foreign import ccall "NotHat.Directory.doesDirectoryExist" doesDirectoryExist :: String -> IO Bool -foreign import haskell "Directory.getPermissions"+foreign import ccall "NotHat.Directory.getPermissions" getPermissions :: String -> IO Permissions-foreign import haskell "Directory.setPermissions"+foreign import ccall "NotHat.Directory.setPermissions" setPermissions :: String -> Permissions -> IO () -- Removed, because in base-4.6 this function has a different type.--- foreign import haskell "Directory.getModificationTime"+-- foreign import ccall "NotHat.Directory.getModificationTime" -- getModificationTime :: String -> IO ClockTime
libraries/IO.hs view
@@ -23,20 +23,20 @@ ) where import Ix(Ix(range, index, inRange))-import PreludeBuiltinTypes+import PreludeBuiltinTypes as NotHat.T import NotHat.System.IO(Handle,HandlePosn) import qualified NotHat.System.IO as NotHat.IO import qualified NotHat.System.IO.Error as NotHat.Error import IOBuiltinTypes-import IOBuiltin+import IOBuiltin as NotHat.T -- data Handle = ... -- implementation-dependent -foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primHandleEq :: Handle -> Handle -> Bool -foreign import haskell "Prelude.showsPrec"+foreign import ccall "NotHat.Prelude.showsPrec" primHandleShowsPrec :: Int -> Handle -> String -> String instance Eq Handle where @@ -47,14 +47,14 @@ -- data HandlePosn = ... -- implementation-dependent -foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primHandlePosnEq :: HandlePosn -> HandlePosn -> Bool instance Eq HandlePosn where (==) = primHandlePosnEq {- not implemented in GHC 5.02-foreign import haskell "Prelude.showsPrec"+foreign import ccall "NotHat.Prelude.showsPrec" primHandlePosnShowsPrec :: Int -> HandlePosn -> String -> String instance Show HandlePosn where@@ -62,56 +62,56 @@ -} -foreign import haskell "IO.stdin"+foreign import ccall "NotHat.IO.stdin" stdin :: Handle-foreign import haskell "IO.stdout"+foreign import ccall "NotHat.IO.stdout" stdout :: Handle-foreign import haskell "IO.stderr"+foreign import ccall "NotHat.IO.stderr" stderr :: Handle -foreign import haskell "IO.openFile"+foreign import ccall "NotHat.IO.openFile" openFile :: String -> IOMode -> IO Handle-foreign import haskell "IO.hClose"+foreign import ccall "NotHat.IO.hClose" hClose :: Handle -> IO () -foreign import haskell "IO.hFileSize"+foreign import ccall "NotHat.IO.hFileSize" hFileSize :: Handle -> IO Integer-foreign import haskell "IO.hIsEOF"+foreign import ccall "NotHat.IO.hIsEOF" hIsEOF :: Handle -> IO Bool isEOF :: IO Bool isEOF = hIsEOF stdin -foreign import haskell "IO.hSetBuffering"+foreign import ccall "NotHat.IO.hSetBuffering" hSetBuffering :: Handle -> BufferMode -> IO ()-foreign import haskell "IO.hGetBuffering"+foreign import ccall "NotHat.IO.hGetBuffering" hGetBuffering :: Handle -> IO BufferMode-foreign import haskell "IO.hFlush"+foreign import ccall "NotHat.IO.hFlush" hFlush :: Handle -> IO () -foreign import haskell "IO.hGetPosn"+foreign import ccall "NotHat.IO.hGetPosn" hGetPosn :: Handle -> IO HandlePosn-foreign import haskell "IO.hSetPosn"+foreign import ccall "NotHat.IO.hSetPosn" hSetPosn :: HandlePosn -> IO () -foreign import haskell "IO.hSeek"+foreign import ccall "NotHat.IO.hSeek" hSeek :: Handle -> SeekMode -> Integer -> IO () -foreign import haskell "IO.hWaitForInput"+foreign import ccall "NotHat.IO.hWaitForInput" hWaitForInput :: Handle -> Int -> IO Bool hReady :: Handle -> IO Bool hReady h = hWaitForInput h 0 -foreign import haskell "IO.hGetChar"+foreign import ccall "NotHat.IO.hGetChar" hGetChar :: Handle -> IO Char-foreign import haskell "IO.hGetLine"+foreign import ccall "NotHat.IO.hGetLine" hGetLine :: Handle -> IO String-foreign import haskell "IO.hLookAhead"+foreign import ccall "NotHat.IO.hLookAhead" hLookAhead :: Handle -> IO Char-foreign import haskell "IO.hGetContents"+foreign import ccall "NotHat.IO.hGetContents" hGetContents :: Handle -> IO String-foreign import haskell "(\\_ h c -> T.outputTrace khPutChar [c] Prelude.>> IO.hPutChar h c) Prelude.True"+foreign import ccall "NotHat.(\\_ h c -> T.outputTrace khPutChar [c] Prelude.>> IO.hPutChar h c) Prelude.True" hPutChar :: Handle -> Char -> IO ()-foreign import haskell "(\\_ h s -> T.outputTrace khPutStr s Prelude.>> IO.hPutStr h s) Prelude.True"+foreign import ccall "NotHat.(\\_ h s -> T.outputTrace khPutStr s Prelude.>> IO.hPutStr h s) Prelude.True" hPutStr :: Handle -> String -> IO () hPutStrLn :: Handle -> String -> IO ()@@ -121,40 +121,40 @@ hPrint :: Show a => Handle -> a -> IO () hPrint h x = hPutStrLn h (show x) -foreign import haskell "IO.hIsOpen"+foreign import ccall "NotHat.IO.hIsOpen" hIsOpen :: Handle -> IO Bool-foreign import haskell "IO.hIsClosed"+foreign import ccall "NotHat.IO.hIsClosed" hIsClosed :: Handle -> IO Bool-foreign import haskell "IO.hIsReadable"+foreign import ccall "NotHat.IO.hIsReadable" hIsReadable :: Handle -> IO Bool-foreign import haskell "IO.hIsWritable"+foreign import ccall "NotHat.IO.hIsWritable" hIsWritable :: Handle -> IO Bool-foreign import haskell "IO.hIsSeekable"+foreign import ccall "NotHat.IO.hIsSeekable" hIsSeekable :: Handle -> IO Bool -foreign import haskell "Error.isAlreadyExistsError"+foreign import ccall "NotHat.Error.isAlreadyExistsError" isAlreadyExistsError :: IOError -> Bool-foreign import haskell "Error.isDoesNotExistError"+foreign import ccall "NotHat.Error.isDoesNotExistError" isDoesNotExistError :: IOError -> Bool -foreign import haskell "Error.isAlreadyInUseError"+foreign import ccall "NotHat.Error.isAlreadyInUseError" isAlreadyInUseError :: IOError -> Bool-foreign import haskell "Error.isFullError"+foreign import ccall "NotHat.Error.isFullError" isFullError :: IOError -> Bool-foreign import haskell "Error.isEOFError"+foreign import ccall "NotHat.Error.isEOFError" isEOFError :: IOError -> Bool-foreign import haskell "Error.isIllegalOperation"+foreign import ccall "NotHat.Error.isIllegalOperation" isIllegalOperation :: IOError -> Bool-foreign import haskell "Error.isPermissionError"+foreign import ccall "NotHat.Error.isPermissionError" isPermissionError :: IOError -> Bool-foreign import haskell "Error.isUserError"+foreign import ccall "NotHat.Error.isUserError" isUserError :: IOError -> Bool -foreign import haskell "Error.ioeGetErrorString"+foreign import ccall "NotHat.Error.ioeGetErrorString" ioeGetErrorString :: IOError -> String-foreign import haskell "Error.ioeGetHandle"+foreign import ccall "NotHat.Error.ioeGetHandle" ioeGetHandle :: IOError -> Maybe Handle -foreign import haskell "Error.ioeGetFileName"+foreign import ccall "NotHat.Error.ioeGetFileName" ioeGetFileName :: IOError -> Maybe String -- Just provide an implementation of the system-indendent
libraries/IO.hx view
@@ -58,21 +58,21 @@ (Var "try",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "SeekMode" "AbsoluteSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "IOMode" "AppendMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "BufferMode" "BlockBuffering",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "BufferMode" "LineBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "BufferMode" "NoBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "IOMode" "AppendMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "IOMode" "ReadMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "IOMode" "ReadWriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "IOMode" "WriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "SeekMode" "AbsoluteSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "SeekMode" "RelativeSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "SeekMode" "SeekFromEnd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "IOMode" "WriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "BufferMode",TyCls (Ty ["NoBuffering","LineBuffering","BlockBuffering"] []))-(TypeClass "FilePath",TyCls (Syn 0 THelper)) (TypeClass "Handle",TyCls (Ty [] [])) (TypeClass "HandlePosn",TyCls (Ty [] [])) (TypeClass "IO",TyCls (Ty [] [])) (TypeClass "IOError",TyCls (Ty [] [])) (TypeClass "IOMode",TyCls (Ty ["ReadMode","WriteMode","AppendMode","ReadWriteMode"] [])) (TypeClass "SeekMode",TyCls (Ty ["AbsoluteSeek","RelativeSeek","SeekFromEnd"] []))+(TypeClass "FilePath",TyCls (Syn 0 THelper))
libraries/IOBuiltinTypes.hx view
@@ -1,14 +1,14 @@ module IOBuiltinTypes+(Con Data "SeekMode" "AbsoluteSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "IOMode" "AppendMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "BufferMode" "BlockBuffering",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "BufferMode" "LineBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "BufferMode" "NoBuffering",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "IOMode" "AppendMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "IOMode" "ReadMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "IOMode" "ReadWriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "IOMode" "WriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "SeekMode" "AbsoluteSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "SeekMode" "RelativeSeek",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "SeekMode" "SeekFromEnd",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "IOMode" "WriteMode",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "BufferMode",TyCls (Ty ["NoBuffering","LineBuffering","BlockBuffering"] [])) (TypeClass "IOMode",TyCls (Ty ["ReadMode","WriteMode","AppendMode","ReadWriteMode"] [])) (TypeClass "SeekMode",TyCls (Ty ["AbsoluteSeek","RelativeSeek","SeekFromEnd"] []))
libraries/Ix.hx view
@@ -3,4 +3,4 @@ (Method "Ix" "index",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Ix" "range",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Ix" "rangeSize",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(TypeClass "Ix",TyCls (Cls ["range","index","inRange","rangeSize"]))+(TypeClass "Ix",TyCls (Cls ["inRange","index","range","rangeSize"]))
libraries/Monad.hx view
@@ -20,13 +20,13 @@ (Var "when",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "zipWithM",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "zipWithM_",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False}) (Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False}) (Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "MonadPlus" "mplus",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "MonadPlus" "mzero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "Functor",TyCls (Cls ["fmap"]))-(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))-(TypeClass "MonadPlus",TyCls (Cls ["mzero","mplus"]))+(TypeClass "Monad",TyCls (Cls [">>",">>=","fail","return"]))+(TypeClass "MonadPlus",TyCls (Cls ["mplus","mzero"]))
libraries/Prelude.hx view
@@ -113,161 +113,127 @@ (Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "||",Value {args = 2, fixity = R, priority = 2, letBound = True, traced = False})-(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Ordering" "GT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Ordering" "LT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})-(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})+(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})+(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})+(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})+(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False}) (Method "Eq" "/=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})+(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})+(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False}) (Method "Eq" "==",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})+(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})+(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})+(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})+(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})+(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "acos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "acosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "asin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "asinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "atan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "atanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "cos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "cosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Integral" "div",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False}) (Method "Integral" "divMod",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})-(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})-(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})-(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})-(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "encodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "exponent",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "floatDigits",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "floatRadix",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "floatRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isDenormalized",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isIEEE",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isInfinite",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isNaN",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isNegativeZero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})+(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFrac" "properFraction",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})+(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFrac" "round",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Show" "show",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Show" "showList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Show" "showsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(TypeClass "()",TyCls (Ty ["()"] []))-(TypeClass "->",TyCls (Ty [] []))+(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "Bool",TyCls (Ty ["False","True"] []))-(TypeClass "Bounded",TyCls (Cls ["minBound","maxBound"])) (TypeClass "Char",TyCls (Ty [] [])) (TypeClass "Double",TyCls (Ty [] [])) (TypeClass "Either",TyCls (Ty ["Left","Right"] []))-(TypeClass "Enum",TyCls (Cls ["succ","pred","toEnum","fromEnum","enumFrom","enumFromThen","enumFromTo","enumFromThenTo"]))-(TypeClass "Eq",TyCls (Cls ["==","/="]))-(TypeClass "FilePath",TyCls (Syn 0 THelper)) (TypeClass "Float",TyCls (Ty [] []))-(TypeClass "Floating",TyCls (Cls ["pi","exp","log","sqrt","**","logBase","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh"]))-(TypeClass "Fractional",TyCls (Cls ["/","recip","fromRational"]))-(TypeClass "Functor",TyCls (Cls ["fmap"])) (TypeClass "IO",TyCls (Ty [] [])) (TypeClass "IOError",TyCls (Ty [] [])) (TypeClass "Int",TyCls (Ty [] [])) (TypeClass "Integer",TyCls (Ty [] []))-(TypeClass "Integral",TyCls (Cls ["quot","rem","div","mod","quotRem","divMod","toInteger"])) (TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))-(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))-(TypeClass "Num",TyCls (Cls ["+","-","*","negate","abs","signum","fromInteger"]))-(TypeClass "Ord",TyCls (Cls ["compare","<","<=",">=",">","max","min"])) (TypeClass "Ordering",TyCls (Ty ["LT","EQ","GT"] []))-(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))-(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))-(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))-(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))-(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))-(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))-(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))-(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))-(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))-(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))-(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))-(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))-(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))-(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] []))+(TypeClass "FilePath",TyCls (Syn 0 THelper)) (TypeClass "Rational",TyCls (Syn 0 THelper))-(TypeClass "Read",TyCls (Cls ["readsPrec","readList"])) (TypeClass "ReadS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))-(TypeClass "Real",TyCls (Cls ["toRational"]))-(TypeClass "RealFloat",TyCls (Cls ["floatRadix","floatDigits","floatRange","decodeFloat","encodeFloat","exponent","significand","scaleFloat","isNaN","isInfinite","isDenormalized","isNegativeZero","isIEEE","atan2"]))-(TypeClass "RealFrac",TyCls (Cls ["properFraction","truncate","round","ceiling","floor"]))-(TypeClass "Show",TyCls (Cls ["showsPrec","show","showList"])) (TypeClass "ShowS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))-(TypeClass "String",TyCls (Ty [] []))-(TypeClass "[]",TyCls (Ty ["[]",":"] []))+(TypeClass "String",TyCls (Syn 0 THelper))+(TypeClass "Bounded",TyCls (Cls ["maxBound","minBound"]))+(TypeClass "Enum",TyCls (Cls ["enumFrom","enumFromThen","enumFromThenTo","enumFromTo","fromEnum","pred","succ","toEnum"]))+(TypeClass "Eq",TyCls (Cls ["/=","=="]))+(TypeClass "Floating",TyCls (Cls ["**","acos","acosh","asin","asinh","atan","atanh","cos","cosh","exp","log","logBase","pi","sin","sinh","sqrt","tan","tanh"]))+(TypeClass "Fractional",TyCls (Cls ["/","fromRational","recip"]))+(TypeClass "Functor",TyCls (Cls ["fmap"]))+(TypeClass "Integral",TyCls (Cls ["div","divMod","mod","quot","quotRem","rem","toInteger"]))+(TypeClass "Monad",TyCls (Cls [">>",">>=","fail","return"]))+(TypeClass "Num",TyCls (Cls ["*","+","-","abs","fromInteger","negate","signum"]))+(TypeClass "Ord",TyCls (Cls ["<","<=",">",">=","compare","max","min"]))+(TypeClass "Read",TyCls (Cls ["readList","readsPrec"]))+(TypeClass "Real",TyCls (Cls ["toRational"]))+(TypeClass "RealFloat",TyCls (Cls ["atan2","decodeFloat","encodeFloat","exponent","floatDigits","floatRadix","floatRange","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","scaleFloat","significand"]))+(TypeClass "RealFrac",TyCls (Cls ["ceiling","floor","properFraction","round","truncate"]))+(TypeClass "Show",TyCls (Cls ["show","showList","showsPrec"]))
libraries/PreludeBasic.hs view
@@ -6,7 +6,7 @@ (module PreludeBasic, module PreludeBuiltin) where --- import PreludeBuiltin -- Contains all `prim' values+-- import PreludeBuiltin -- Contains all `prim' values -- import PreludeList -- import PreludeText -- import PreludeIO@@ -14,6 +14,7 @@ import PreludeBuiltinTypes import PreludeBuiltin+import PreludeBuiltin as PreludeBasic -- for PreludeBasic.undefined infixr 9 . infixr 8 ^, ^^, **@@ -50,6 +51,11 @@ alt :: ReadS a -> ReadS a -> ReadS a alt f g r = f r ++ g r++-- For desugaring list comprehensions:++guard :: Bool -> [()]+guard p = if p then [()] else [] -- Standard types, classes, instances and related functions
libraries/PreludeBasic.hx view
@@ -4,135 +4,6 @@ (Var "$!",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False}) (Var "%",Value {args = 2, fixity = L, priority = 7, letBound = True, traced = False}) (Var "&&",Value {args = 2, fixity = R, priority = 3, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).appendFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).catch",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).error",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).ioError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isAlpha",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isAlphaNum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isAscii",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isControl",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isHexDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isLatin1",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isOctDigit",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isPrint",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isSpace",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).isUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primCharToInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDecodeDouble",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDecodeFloat",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoublePi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primDoubleTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primEncodeDouble",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primEncodeFloat",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatAcos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatAsin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatAtan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatCos",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatDigits",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatDiv",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatExp",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsDenormalized",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsIEEE",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsInfinite",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsNaN",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatIsNegativeZero",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatLog",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatPi",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatRadix",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatRange",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatSin",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatSqrt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primFloatTan",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIOBind",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIOErrorShow",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIOReturn",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntAbs",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntFromInteger",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntMinBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntMinus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntNegate",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntPlus",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntSignum",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntTimes",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntToChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerAdd",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerEq",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerFromInt",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerGe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerGt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerLe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerLt",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerMul",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerNe",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerNeg",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerQuot",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerQuotRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerRem",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primIntegerSub",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).primUnicodeMaxBound",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).putChar",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).readFile",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).seq",Value {args = 2, fixity = R, priority = 0, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).toLower",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).toUpper",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Var "(19:8-19:21,PreludeBuiltin).writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "++",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False}) (Var ".",Value {args = 3, fixity = R, priority = 9, letBound = True, traced = False}) (Var "=<<",Value {args = 2, fixity = R, priority = 1, letBound = True, traced = False})@@ -182,6 +53,7 @@ (Var "getChar",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "getContents",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "getLine",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Var "guard",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "head",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "id",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "init",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})@@ -412,186 +284,133 @@ (Var "zipWith",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "zipWith3",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "||",Value {args = 2, fixity = R, priority = 2, letBound = True, traced = False})-(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "()" "(19:8-19:21,PreludeBuiltin).()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Bool" "(19:8-19:21,PreludeBuiltin).False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Bool" "(19:8-19:21,PreludeBuiltin).True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Ratio" ":%",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "FFFormat" "FFExponent",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "FFFormat" "FFFixed",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "FFFormat" "FFGeneric",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Ordering" "EQ",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Ordering" "GT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Maybe" "Just",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Ordering" "LT",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.10" "(19:8-19:21,PreludeBuiltin).Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.11" "(19:8-19:21,PreludeBuiltin).Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.12" "(19:8-19:21,PreludeBuiltin).Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.13" "(19:8-19:21,PreludeBuiltin).Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.14" "(19:8-19:21,PreludeBuiltin).Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.15" "(19:8-19:21,PreludeBuiltin).Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.2" "(19:8-19:21,PreludeBuiltin).Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.3" "(19:8-19:21,PreludeBuiltin).Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.4" "(19:8-19:21,PreludeBuiltin).Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.5" "(19:8-19:21,PreludeBuiltin).Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.6" "(19:8-19:21,PreludeBuiltin).Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.7" "(19:8-19:21,PreludeBuiltin).Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.8" "(19:8-19:21,PreludeBuiltin).Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.9" "(19:8-19:21,PreludeBuiltin).Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Ratio" ":%",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "[]" "(19:8-19:21,PreludeBuiltin).:",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})-(Con Data "[]" "(19:8-19:21,PreludeBuiltin).[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})-(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Either" "Left",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Maybe" "Nothing",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Either" "Right",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})+(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})+(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})+(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})+(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False}) (Method "Eq" "/=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})+(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})+(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False}) (Method "Eq" "==",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Floating" "**",Value {args = -1, fixity = R, priority = 8, letBound = True, traced = False})+(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})+(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})+(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})+(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})+(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "acos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "acosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "asin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "asinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "atan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "atanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "cos",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Floating" "cosh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Fractional" "/",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Integral" "div",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False}) (Method "Integral" "divMod",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Monad" ">>",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})-(Method "Monad" ">>=",Value {args = -1, fixity = L, priority = 1, letBound = True, traced = False})-(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Num" "*",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})-(Method "Num" "+",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})-(Method "Num" "-",Value {args = -1, fixity = L, priority = 6, letBound = True, traced = False})-(Method "Num" "abs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ord" "<",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Ord" "<=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Ord" ">",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Ord" ">=",Value {args = -1, fixity = None, priority = 4, letBound = True, traced = False})-(Method "Ord" "compare",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFloat" "atan2",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFloat" "decodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "encodeFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "enumFrom",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "enumFromThen",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "enumFromThenTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "enumFromTo",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "exp",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "exponent",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Monad" "fail",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "floatDigits",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "floatRadix",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "floatRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Functor" "fmap",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "fromEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Num" "fromInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Fractional" "fromRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isDenormalized",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isIEEE",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isInfinite",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isNaN",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFloat" "isNegativeZero",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFrac" "ceiling",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFrac" "floor",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "log",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "logBase",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Ord" "max",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Bounded" "maxBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Ord" "min",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Bounded" "minBound",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Integral" "mod",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})+(Method "Num" "negate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "pi",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "pred",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFrac" "properFraction",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Integral" "quot",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})+(Method "Integral" "quotRem",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Read" "readList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Read" "readsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Fractional" "recip",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Integral" "rem",Value {args = -1, fixity = L, priority = 7, letBound = True, traced = False})+(Method "Monad" "return",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RealFrac" "round",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFloat" "scaleFloat",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Show" "show",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Show" "showList",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Show" "showsPrec",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(TypeClass "()",TyCls (Ty ["()"] []))-(TypeClass "->",TyCls (Ty [] []))+(Method "RealFloat" "significand",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Num" "signum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "sin",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "sinh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "sqrt",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "succ",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "tan",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Floating" "tanh",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Enum" "toEnum",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Integral" "toInteger",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "Real" "toRational",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RealFrac" "truncate",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "Bool",TyCls (Ty ["False","True"] []))-(TypeClass "Bounded",TyCls (Cls ["minBound","maxBound"])) (TypeClass "Char",TyCls (Ty [] [])) (TypeClass "Double",TyCls (Ty [] [])) (TypeClass "Either",TyCls (Ty ["Left","Right"] []))-(TypeClass "Enum",TyCls (Cls ["succ","pred","toEnum","fromEnum","enumFrom","enumFromThen","enumFromTo","enumFromThenTo"]))-(TypeClass "Eq",TyCls (Cls ["==","/="])) (TypeClass "FFFormat",TyCls (Ty ["FFExponent","FFFixed","FFGeneric"] []))-(TypeClass "FilePath",TyCls (Syn 0 THelper)) (TypeClass "Float",TyCls (Ty [] []))-(TypeClass "Floating",TyCls (Cls ["pi","exp","log","sqrt","**","logBase","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh"]))-(TypeClass "Fractional",TyCls (Cls ["/","recip","fromRational"]))-(TypeClass "Functor",TyCls (Cls ["fmap"])) (TypeClass "IO",TyCls (Ty [] [])) (TypeClass "IOError",TyCls (Ty [] [])) (TypeClass "Int",TyCls (Ty [] [])) (TypeClass "Integer",TyCls (Ty [] []))-(TypeClass "Integral",TyCls (Cls ["quot","rem","div","mod","quotRem","divMod","toInteger"])) (TypeClass "Maybe",TyCls (Ty ["Nothing","Just"] []))-(TypeClass "Monad",TyCls (Cls [">>=",">>","return","fail"]))-(TypeClass "Num",TyCls (Cls ["+","-","*","negate","abs","signum","fromInteger"]))-(TypeClass "Ord",TyCls (Cls ["compare","<","<=",">=",">","max","min"])) (TypeClass "Ordering",TyCls (Ty ["LT","EQ","GT"] []))-(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))-(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))-(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))-(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))-(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))-(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))-(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))-(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))-(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))-(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))-(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))-(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))-(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))-(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] [])) (TypeClass "Ratio",TyCls (Ty [":%"] []))+(TypeClass "FilePath",TyCls (Syn 0 THelper)) (TypeClass "Rational",TyCls (Syn 0 THelper))-(TypeClass "Read",TyCls (Cls ["readsPrec","readList"])) (TypeClass "ReadS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))-(TypeClass "Real",TyCls (Cls ["toRational"]))-(TypeClass "RealFloat",TyCls (Cls ["floatRadix","floatDigits","floatRange","decodeFloat","encodeFloat","exponent","significand","scaleFloat","isNaN","isInfinite","isDenormalized","isNegativeZero","isIEEE","atan2"]))-(TypeClass "RealFrac",TyCls (Cls ["properFraction","truncate","round","ceiling","floor"]))-(TypeClass "Show",TyCls (Cls ["showsPrec","show","showList"])) (TypeClass "ShowS",TyCls (Syn 2 (TApp (TApp TFun THelper) THelper)))-(TypeClass "String",TyCls (Ty [] []))-(TypeClass "[]",TyCls (Ty ["[]",":"] []))+(TypeClass "String",TyCls (Syn 0 THelper))+(TypeClass "Bounded",TyCls (Cls ["maxBound","minBound"]))+(TypeClass "Enum",TyCls (Cls ["enumFrom","enumFromThen","enumFromThenTo","enumFromTo","fromEnum","pred","succ","toEnum"]))+(TypeClass "Eq",TyCls (Cls ["/=","=="]))+(TypeClass "Floating",TyCls (Cls ["**","acos","acosh","asin","asinh","atan","atanh","cos","cosh","exp","log","logBase","pi","sin","sinh","sqrt","tan","tanh"]))+(TypeClass "Fractional",TyCls (Cls ["/","fromRational","recip"]))+(TypeClass "Functor",TyCls (Cls ["fmap"]))+(TypeClass "Integral",TyCls (Cls ["div","divMod","mod","quot","quotRem","rem","toInteger"]))+(TypeClass "Monad",TyCls (Cls [">>",">>=","fail","return"]))+(TypeClass "Num",TyCls (Cls ["*","+","-","abs","fromInteger","negate","signum"]))+(TypeClass "Ord",TyCls (Cls ["<","<=",">",">=","compare","max","min"]))+(TypeClass "Read",TyCls (Cls ["readList","readsPrec"]))+(TypeClass "Real",TyCls (Cls ["toRational"]))+(TypeClass "RealFloat",TyCls (Cls ["atan2","decodeFloat","encodeFloat","exponent","floatDigits","floatRadix","floatRange","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","scaleFloat","significand"]))+(TypeClass "RealFrac",TyCls (Cls ["ceiling","floor","properFraction","round","truncate"]))+(TypeClass "Show",TyCls (Cls ["show","showList","showsPrec"]))
libraries/PreludeBuiltin.hs view
@@ -2,14 +2,15 @@ -- not (portably) definable in Haskell. module PreludeBuiltin ( -- reexport from module PreludeBuiltinTypes - (->),Bool(True,False),Char,Int,Integer,Float,Double,IOError - ,[]((:),[]),IO- ,()(())- ,(,)((,)), (,,)((,,)),(,,,)((,,,)),(,,,,)((,,,,)),(,,,,,)((,,,,,))- ,(,,,,,,)((,,,,,,)),(,,,,,,,)((,,,,,,,)),(,,,,,,,,)((,,,,,,,,))- ,(,,,,,,,,,)((,,,,,,,,,)),(,,,,,,,,,,)((,,,,,,,,,,))- ,(,,,,,,,,,,,)((,,,,,,,,,,,)),(,,,,,,,,,,,,)((,,,,,,,,,,,,))- ,(,,,,,,,,,,,,,)((,,,,,,,,,,,,,)),(,,,,,,,,,,,,,,)((,,,,,,,,,,,,,,))+ -- (->)+ Bool(True,False),Char,Int,Integer,Float,Double,IOError,IO+ -- ,[]((:),[])+ -- ,()(())+ -- ,(,)((,)), (,,)((,,)),(,,,)((,,,)),(,,,,)((,,,,)),(,,,,,)((,,,,,))+ -- ,(,,,,,,)((,,,,,,)),(,,,,,,,)((,,,,,,,)),(,,,,,,,,)((,,,,,,,,))+ -- ,(,,,,,,,,,)((,,,,,,,,,)),(,,,,,,,,,,)((,,,,,,,,,,))+ -- ,(,,,,,,,,,,,)((,,,,,,,,,,,)),(,,,,,,,,,,,,)((,,,,,,,,,,,,))+ -- ,(,,,,,,,,,,,,,)((,,,,,,,,,,,,,)),(,,,,,,,,,,,,,,)((,,,,,,,,,,,,,,)) ,String,error,undefined -- general (->) ,seq@@ -52,7 +53,7 @@ ,appendFile,primIOErrorShow{- ,primIOErrorEq -} ) where -import PreludeBuiltinTypes+import PreludeBuiltinTypes as NotHat.T import NotHat.Hat.Hat -- for some primitive types import qualified NotHat.Prelude -- not to be transformed import qualified NotHat.System.IO.Error -- for catch@@ -65,300 +66,300 @@ infixr 0 `seq` -foreign import haskell "Prelude.seq"+foreign import ccall "NotHat.Prelude.seq" seq :: a -> b -> b -foreign import haskell "Char.isAscii"+foreign import ccall "NotHat.Char.isAscii" isAscii :: Char -> Bool-foreign import haskell "Char.isLatin1"+foreign import ccall "NotHat.Char.isLatin1" isLatin1 :: Char -> Bool-foreign import haskell "Char.isControl"+foreign import ccall "NotHat.Char.isControl" isControl :: Char -> Bool-foreign import haskell "Char.isPrint"+foreign import ccall "NotHat.Char.isPrint" isPrint :: Char -> Bool-foreign import haskell "Char.isSpace"+foreign import ccall "NotHat.Char.isSpace" isSpace :: Char -> Bool-foreign import haskell "Char.isUpper"+foreign import ccall "NotHat.Char.isUpper" isUpper :: Char -> Bool-foreign import haskell "Char.isLower"+foreign import ccall "NotHat.Char.isLower" isLower :: Char -> Bool-foreign import haskell "Char.isAlpha"+foreign import ccall "NotHat.Char.isAlpha" isAlpha :: Char -> Bool-foreign import haskell "Char.isDigit"+foreign import ccall "NotHat.Char.isDigit" isDigit :: Char -> Bool-foreign import haskell "Char.isOctDigit"+foreign import ccall "NotHat.Char.isOctDigit" isOctDigit :: Char -> Bool-foreign import haskell "Char.isHexDigit"+foreign import ccall "NotHat.Char.isHexDigit" isHexDigit :: Char -> Bool-foreign import haskell "Char.isAlphaNum"+foreign import ccall "NotHat.Char.isAlphaNum" isAlphaNum :: Char -> Bool -foreign import haskell "Char.toUpper"+foreign import ccall "NotHat.Char.toUpper" toUpper :: Char -> Char-foreign import haskell "Char.toLower"+foreign import ccall "NotHat.Char.toLower" toLower :: Char -> Char -- Character code functions-foreign import haskell "Char.ord"+foreign import ccall "NotHat.Char.ord" primCharToInt :: Char -> Int-foreign import haskell "Char.chr"+foreign import ccall "NotHat.Char.chr" primIntToChar :: Int -> Char -foreign import haskell "Prelude.maxBound"+foreign import ccall "NotHat.Prelude.maxBound" primUnicodeMaxBound :: Char -- Numerics -- system dependent-foreign import haskell "Prelude.minBound"+foreign import ccall "NotHat.Prelude.minBound" primIntMinBound :: Int-foreign import haskell "Prelude.maxBound"+foreign import ccall "NotHat.Prelude.maxBound" primIntMaxBound :: Int -foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primIntEq :: Int -> Int -> Bool-foreign import haskell "Prelude./="+foreign import ccall "NotHat.Prelude./=" primIntNe :: Int -> Int -> Bool-foreign import haskell "Prelude.<"+foreign import ccall "NotHat.Prelude.<" primIntLt :: Int -> Int -> Bool-foreign import haskell "Prelude.<="+foreign import ccall "NotHat.Prelude.<=" primIntLe :: Int -> Int -> Bool-foreign import haskell "Prelude.>"+foreign import ccall "NotHat.Prelude.>" primIntGt :: Int -> Int -> Bool-foreign import haskell "Prelude.>="+foreign import ccall "NotHat.Prelude.>=" primIntGe :: Int -> Int -> Bool-foreign import haskell "Prelude.quot"+foreign import ccall "NotHat.Prelude.quot" primIntQuot :: Int -> Int -> Int-foreign import haskell "Prelude.rem"+foreign import ccall "NotHat.Prelude.rem" primIntRem :: Int -> Int -> Int-foreign import haskell "Prelude.+"+foreign import ccall "NotHat.Prelude.+" primIntPlus :: Int -> Int -> Int-foreign import haskell "Prelude.-"+foreign import ccall "NotHat.Prelude.-" primIntMinus :: Int -> Int -> Int-foreign import haskell "Prelude.*"+foreign import ccall "NotHat.Prelude.*" primIntTimes :: Int -> Int -> Int-foreign import haskell "Prelude.negate"+foreign import ccall "NotHat.Prelude.negate" primIntNegate :: Int -> Int-foreign import haskell "Prelude.abs"+foreign import ccall "NotHat.Prelude.abs" primIntAbs :: Int -> Int-foreign import haskell "Prelude.signum"+foreign import ccall "NotHat.Prelude.signum" primIntSignum :: Int -> Int -foreign import haskell "Prelude.toInteger"+foreign import ccall "NotHat.Prelude.toInteger" primIntegerFromInt :: Int -> Integer-foreign import haskell "Prelude.fromInteger"+foreign import ccall "NotHat.Prelude.fromInteger" primIntFromInteger :: Integer -> Int -foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primIntegerEq :: Integer -> Integer -> Bool-foreign import haskell "Prelude./="+foreign import ccall "NotHat.Prelude./=" primIntegerNe :: Integer -> Integer -> Bool-foreign import haskell "Prelude.<"+foreign import ccall "NotHat.Prelude.<" primIntegerLt :: Integer -> Integer -> Bool-foreign import haskell "Prelude.<="+foreign import ccall "NotHat.Prelude.<=" primIntegerLe :: Integer -> Integer -> Bool-foreign import haskell "Prelude.>"+foreign import ccall "NotHat.Prelude.>" primIntegerGt :: Integer -> Integer -> Bool-foreign import haskell "Prelude.>="+foreign import ccall "NotHat.Prelude.>=" primIntegerGe :: Integer -> Integer -> Bool-foreign import haskell "Prelude.quot"+foreign import ccall "NotHat.Prelude.quot" primIntegerQuot :: Integer -> Integer -> Integer-foreign import haskell "Prelude.rem"+foreign import ccall "NotHat.Prelude.rem" primIntegerRem :: Integer -> Integer -> Integer-foreign import haskell "Prelude.quotRem"+foreign import ccall "NotHat.Prelude.quotRem" primIntegerQuotRem :: Integer -> Integer -> (Integer,Integer)-foreign import haskell "Prelude.+"+foreign import ccall "NotHat.Prelude.+" primIntegerAdd :: Integer -> Integer -> Integer-foreign import haskell "Prelude.-"+foreign import ccall "NotHat.Prelude.-" primIntegerSub :: Integer -> Integer -> Integer-foreign import haskell "Prelude.*"+foreign import ccall "NotHat.Prelude.*" primIntegerMul :: Integer -> Integer -> Integer-foreign import haskell "Prelude.negate"+foreign import ccall "NotHat.Prelude.negate" primIntegerNeg :: Integer -> Integer -foreign import haskell "Prelude.fromInteger"+foreign import ccall "NotHat.Prelude.fromInteger" primFloatFromInteger :: Integer -> Float-foreign import haskell "Prelude.floatRadix"+foreign import ccall "NotHat.Prelude.floatRadix" primFloatRadix :: Float -> Integer-foreign import haskell "Prelude.floatDigits"+foreign import ccall "NotHat.Prelude.floatDigits" primFloatDigits :: Float -> Int-foreign import haskell "Prelude.floatRange"+foreign import ccall "NotHat.Prelude.floatRange" primFloatRange :: Float -> (Int,Int) -foreign import haskell "Prelude.decodeFloat"+foreign import ccall "NotHat.Prelude.decodeFloat" primDecodeFloat :: Float -> (Integer,Int)-foreign import haskell "Prelude.encodeFloat"+foreign import ccall "NotHat.Prelude.encodeFloat" primEncodeFloat :: Integer -> Int -> Float-foreign import haskell "Prelude.isNaN"+foreign import ccall "NotHat.Prelude.isNaN" primFloatIsNaN :: Float -> Bool-foreign import haskell "Prelude.isInfinite"+foreign import ccall "NotHat.Prelude.isInfinite" primFloatIsInfinite :: Float -> Bool-foreign import haskell "Prelude.isDenormalized"+foreign import ccall "NotHat.Prelude.isDenormalized" primFloatIsDenormalized :: Float -> Bool-foreign import haskell "Prelude.isNegativeZero"+foreign import ccall "NotHat.Prelude.isNegativeZero" primFloatIsNegativeZero :: Float -> Bool-foreign import haskell "Prelude.isIEEE"+foreign import ccall "NotHat.Prelude.isIEEE" primFloatIsIEEE :: Float -> Bool -foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primFloatEq :: Float -> Float -> Bool-foreign import haskell "Prelude./="+foreign import ccall "NotHat.Prelude./=" primFloatNe :: Float -> Float -> Bool-foreign import haskell "Prelude.<"+foreign import ccall "NotHat.Prelude.<" primFloatLt :: Float -> Float -> Bool-foreign import haskell "Prelude.<="+foreign import ccall "NotHat.Prelude.<=" primFloatLe :: Float -> Float -> Bool-foreign import haskell "Prelude.>"+foreign import ccall "NotHat.Prelude.>" primFloatGt :: Float -> Float -> Bool-foreign import haskell "Prelude.>="+foreign import ccall "NotHat.Prelude.>=" primFloatGe :: Float -> Float -> Bool-foreign import haskell "Prelude.pi"+foreign import ccall "NotHat.Prelude.pi" primFloatPi :: Float-foreign import haskell "Prelude.exp"+foreign import ccall "NotHat.Prelude.exp" primFloatExp :: Float -> Float-foreign import haskell "Prelude.log"+foreign import ccall "NotHat.Prelude.log" primFloatLog :: Float -> Float-foreign import haskell "Prelude.sqrt"+foreign import ccall "NotHat.Prelude.sqrt" primFloatSqrt :: Float -> Float-foreign import haskell "Prelude.sin"+foreign import ccall "NotHat.Prelude.sin" primFloatSin :: Float -> Float-foreign import haskell "Prelude.cos"+foreign import ccall "NotHat.Prelude.cos" primFloatCos :: Float -> Float-foreign import haskell "Prelude.tan"+foreign import ccall "NotHat.Prelude.tan" primFloatTan :: Float -> Float-foreign import haskell "Prelude.asin"+foreign import ccall "NotHat.Prelude.asin" primFloatAsin :: Float -> Float-foreign import haskell "Prelude.acos"+foreign import ccall "NotHat.Prelude.acos" primFloatAcos :: Float -> Float-foreign import haskell "Prelude.atan"+foreign import ccall "NotHat.Prelude.atan" primFloatAtan :: Float -> Float-foreign import haskell "Prelude./"+foreign import ccall "NotHat.Prelude./" primFloatDiv :: Float -> Float -> Float-foreign import haskell "Prelude.+"+foreign import ccall "NotHat.Prelude.+" primFloatAdd :: Float -> Float -> Float-foreign import haskell "Prelude.-"+foreign import ccall "NotHat.Prelude.-" primFloatSub :: Float -> Float -> Float-foreign import haskell "Prelude.*"+foreign import ccall "NotHat.Prelude.*" primFloatMul :: Float -> Float -> Float-foreign import haskell "Prelude.abs"+foreign import ccall "NotHat.Prelude.abs" primFloatAbs :: Float -> Float-foreign import haskell "Prelude.signum"+foreign import ccall "NotHat.Prelude.signum" primFloatSignum :: Float -> Float -foreign import haskell "Prelude.fromInteger"+foreign import ccall "NotHat.Prelude.fromInteger" primDoubleFromInteger :: Integer -> Double-foreign import haskell "Prelude.floatRadix"+foreign import ccall "NotHat.Prelude.floatRadix" primDoubleRadix :: Double -> Integer-foreign import haskell "Prelude.floatDigits"+foreign import ccall "NotHat.Prelude.floatDigits" primDoubleDigits :: Double -> Int-foreign import haskell "Prelude.floatRange"+foreign import ccall "NotHat.Prelude.floatRange" primDoubleRange :: Double -> (Int,Int)-foreign import haskell "Prelude.decodeFloat"+foreign import ccall "NotHat.Prelude.decodeFloat" primDecodeDouble :: Double -> (Integer,Int)-foreign import haskell "Prelude.encodeFloat"+foreign import ccall "NotHat.Prelude.encodeFloat" primEncodeDouble :: Integer -> Int -> Double-foreign import haskell "Prelude.isNaN"+foreign import ccall "NotHat.Prelude.isNaN" primDoubleIsNaN :: Double -> Bool-foreign import haskell "Prelude.isInfinite"+foreign import ccall "NotHat.Prelude.isInfinite" primDoubleIsInfinite :: Double -> Bool-foreign import haskell "Prelude.isDenormalized"+foreign import ccall "NotHat.Prelude.isDenormalized" primDoubleIsDenormalized :: Double -> Bool-foreign import haskell "Prelude.isNegativeZero"+foreign import ccall "NotHat.Prelude.isNegativeZero" primDoubleIsNegativeZero :: Double -> Bool-foreign import haskell "Prelude.isIEEE"+foreign import ccall "NotHat.Prelude.isIEEE" primDoubleIsIEEE :: Double -> Bool -foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primDoubleEq :: Double -> Double -> Bool-foreign import haskell "Prelude./="+foreign import ccall "NotHat.Prelude./=" primDoubleNe :: Double -> Double -> Bool-foreign import haskell "Prelude.<"+foreign import ccall "NotHat.Prelude.<" primDoubleLt :: Double -> Double -> Bool-foreign import haskell "Prelude.<="+foreign import ccall "NotHat.Prelude.<=" primDoubleLe :: Double -> Double -> Bool-foreign import haskell "Prelude.>"+foreign import ccall "NotHat.Prelude.>" primDoubleGt :: Double -> Double -> Bool-foreign import haskell "Prelude.>="+foreign import ccall "NotHat.Prelude.>=" primDoubleGe :: Double -> Double -> Bool-foreign import haskell "Prelude.pi"+foreign import ccall "NotHat.Prelude.pi" primDoublePi :: Double-foreign import haskell "Prelude.exp"+foreign import ccall "NotHat.Prelude.exp" primDoubleExp :: Double -> Double-foreign import haskell "Prelude.log"+foreign import ccall "NotHat.Prelude.log" primDoubleLog :: Double -> Double-foreign import haskell "Prelude.sqrt"+foreign import ccall "NotHat.Prelude.sqrt" primDoubleSqrt :: Double -> Double-foreign import haskell "Prelude.sin"+foreign import ccall "NotHat.Prelude.sin" primDoubleSin :: Double -> Double-foreign import haskell "Prelude.cos"+foreign import ccall "NotHat.Prelude.cos" primDoubleCos :: Double -> Double-foreign import haskell "Prelude.tan"+foreign import ccall "NotHat.Prelude.tan" primDoubleTan :: Double -> Double-foreign import haskell "Prelude.asin"+foreign import ccall "NotHat.Prelude.asin" primDoubleAsin :: Double -> Double-foreign import haskell "Prelude.acos"+foreign import ccall "NotHat.Prelude.acos" primDoubleAcos :: Double -> Double-foreign import haskell "Prelude.atan"+foreign import ccall "NotHat.Prelude.atan" primDoubleAtan :: Double -> Double-foreign import haskell "Prelude./"+foreign import ccall "NotHat.Prelude./" primDoubleDiv :: Double -> Double -> Double-foreign import haskell "Prelude.+"+foreign import ccall "NotHat.Prelude.+" primDoubleAdd :: Double -> Double -> Double-foreign import haskell "Prelude.-"+foreign import ccall "NotHat.Prelude.-" primDoubleSub :: Double -> Double -> Double-foreign import haskell "Prelude.*"+foreign import ccall "NotHat.Prelude.*" primDoubleMul :: Double -> Double -> Double-foreign import haskell "Prelude.abs"+foreign import ccall "NotHat.Prelude.abs" primDoubleAbs :: Double -> Double-foreign import haskell "Prelude.signum"+foreign import ccall "NotHat.Prelude.signum" primDoubleSignum :: Double -> Double -- IO -foreign import haskell "Prelude.>>="+foreign import ccall "NotHat.Prelude.>>=" primIOBind :: IO a -> (a -> IO b) -> IO b-foreign import haskell "Prelude.return"+foreign import ccall "NotHat.Prelude.return" primIOReturn :: a -> IO a -foreign import haskell "Prelude.show"+foreign import ccall "NotHat.Prelude.show" primIOErrorShow :: IOError -> String {- currently excluded because instance Eq IOError missing in ghc 5.02-foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primIOErrorEq :: IOError -> IOError -> Bool -} -foreign import haskell "Prelude.ioError"+foreign import ccall "NotHat.Prelude.ioError" ioError :: IOError -> IO a -foreign import haskell "Prelude.userError"+foreign import ccall "NotHat.Prelude.userError" userError :: String -> IOError -foreign import haskell "System.IO.Error.catchIOError"+foreign import ccall "NotHat.System.IO.Error.catchIOError" catch :: IO a -> (IOError -> IO a) -> IO a --- foreign import haskell "Prelude.putChar"+-- foreign import ccall "NotHat.Prelude.putChar" -- putChar :: Char -> IO () -- HACK!-foreign import haskell - "(\\_ c -> T.outputTrace kputChar [c] Prelude.>> Prelude.putChar c) Prelude.True"+foreign import ccall + "NotHat.(\\_ c -> T.outputTrace kputChar [c] Prelude.>> Prelude.putChar c) Prelude.True" putChar :: Char -> IO () -foreign import haskell "Prelude.getChar"+foreign import ccall "NotHat.Prelude.getChar" getChar :: IO Char -foreign import haskell "Prelude.getContents"+foreign import ccall "NotHat.Prelude.getContents" getContents :: IO String -foreign import haskell "Prelude.readFile"+foreign import ccall "NotHat.Prelude.readFile" readFile :: String -> IO String -foreign import haskell "(\\_ n s -> T.outputTrace kwriteFile s Prelude.>> Prelude.writeFile n s) Prelude.True"+foreign import ccall "NotHat.(\\_ n s -> T.outputTrace kwriteFile s Prelude.>> Prelude.writeFile n s) Prelude.True" writeFile :: String -> String -> IO () -foreign import haskell "(\\_ n s -> T.outputTrace kappendFile s Prelude.>> Prelude.appendFile n s) Prelude.True"+foreign import ccall "NotHat.(\\_ n s -> T.outputTrace kappendFile s Prelude.>> Prelude.appendFile n s) Prelude.True" appendFile :: String -> String -> IO ()
libraries/PreludeBuiltin.hx view
@@ -128,27 +128,8 @@ (Var "undefined",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "userError",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "writeFile",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "()" "()",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Bool" "False",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Bool" "True",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.10" "Prelude.10",Value {args = 10, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.11" "Prelude.11",Value {args = 11, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.12" "Prelude.12",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.13" "Prelude.13",Value {args = 13, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.14" "Prelude.14",Value {args = 14, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.15" "Prelude.15",Value {args = 15, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.2" "Prelude.2",Value {args = 2, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.3" "Prelude.3",Value {args = 3, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.4" "Prelude.4",Value {args = 4, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.5" "Prelude.5",Value {args = 5, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.6" "Prelude.6",Value {args = 6, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.7" "Prelude.7",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.8" "Prelude.8",Value {args = 8, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Prelude.9" "Prelude.9",Value {args = 9, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "[]" ":",Value {args = 2, fixity = R, priority = 5, letBound = True, traced = False})-(Con Data "[]" "[]",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(TypeClass "()",TyCls (Ty ["()"] []))-(TypeClass "->",TyCls (Ty [] [])) (TypeClass "Bool",TyCls (Ty ["False","True"] [])) (TypeClass "Char",TyCls (Ty [] [])) (TypeClass "Double",TyCls (Ty [] []))@@ -157,19 +138,4 @@ (TypeClass "IOError",TyCls (Ty [] [])) (TypeClass "Int",TyCls (Ty [] [])) (TypeClass "Integer",TyCls (Ty [] []))-(TypeClass "Prelude.10",TyCls (Ty ["Prelude.10"] []))-(TypeClass "Prelude.11",TyCls (Ty ["Prelude.11"] []))-(TypeClass "Prelude.12",TyCls (Ty ["Prelude.12"] []))-(TypeClass "Prelude.13",TyCls (Ty ["Prelude.13"] []))-(TypeClass "Prelude.14",TyCls (Ty ["Prelude.14"] []))-(TypeClass "Prelude.15",TyCls (Ty ["Prelude.15"] []))-(TypeClass "Prelude.2",TyCls (Ty ["Prelude.2"] []))-(TypeClass "Prelude.3",TyCls (Ty ["Prelude.3"] []))-(TypeClass "Prelude.4",TyCls (Ty ["Prelude.4"] []))-(TypeClass "Prelude.5",TyCls (Ty ["Prelude.5"] []))-(TypeClass "Prelude.6",TyCls (Ty ["Prelude.6"] []))-(TypeClass "Prelude.7",TyCls (Ty ["Prelude.7"] []))-(TypeClass "Prelude.8",TyCls (Ty ["Prelude.8"] []))-(TypeClass "Prelude.9",TyCls (Ty ["Prelude.9"] []))-(TypeClass "String",TyCls (Ty [] []))-(TypeClass "[]",TyCls (Ty ["[]",":"] []))+(TypeClass "String",TyCls (Syn 0 THelper))
libraries/PreludeBuiltinTypes.hx view
@@ -6,43 +6,9 @@ (TypeClass "Integer", TyCls (Ty [] [])) (TypeClass "Int", TyCls (Ty [] [])) (TypeClass "Char", TyCls (Ty [] []))-(TypeClass "->", TyCls (Ty [] []))-(TypeClass "String", TyCls (Ty [] []))-(TypeClass "[]", TyCls (Ty ["[]",":"] []))+(TypeClass "String", TyCls (Syn 0 THelper)) (TypeClass "Bool", TyCls (Ty ["False","True"] []))-(TypeClass "()", TyCls (Ty ["()"] []))-(TypeClass "Prelude.2", TyCls (Ty ["Prelude.2"] []))-(TypeClass "Prelude.3", TyCls (Ty ["Prelude.3"] []))-(TypeClass "Prelude.4", TyCls (Ty ["Prelude.4"] []))-(TypeClass "Prelude.5", TyCls (Ty ["Prelude.5"] []))-(TypeClass "Prelude.6", TyCls (Ty ["Prelude.6"] []))-(TypeClass "Prelude.7", TyCls (Ty ["Prelude.7"] []))-(TypeClass "Prelude.8", TyCls (Ty ["Prelude.8"] []))-(TypeClass "Prelude.9", TyCls (Ty ["Prelude.9"] []))-(TypeClass "Prelude.10", TyCls (Ty ["Prelude.10"] []))-(TypeClass "Prelude.11", TyCls (Ty ["Prelude.11"] []))-(TypeClass "Prelude.12", TyCls (Ty ["Prelude.12"] []))-(TypeClass "Prelude.13", TyCls (Ty ["Prelude.13"] []))-(TypeClass "Prelude.14", TyCls (Ty ["Prelude.14"] []))-(TypeClass "Prelude.15", TyCls (Ty ["Prelude.15"] []))-(Con Data "[]" ":",Value{args=2,fixity=R,priority=5,letBound=True,traced=False})-(Con Data "[]" "[]",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False}) (Con Data "Bool" "False",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False}) (Con Data "Bool" "True",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "()" "()",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.2" "Prelude.2",Value{args=2,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.3" "Prelude.3",Value{args=3,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.4" "Prelude.4",Value{args=4,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.5" "Prelude.5",Value{args=5,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.6" "Prelude.6",Value{args=6,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.7" "Prelude.7",Value{args=7,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.8" "Prelude.8",Value{args=8,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.9" "Prelude.9",Value{args=9,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.10" "Prelude.10",Value{args=10,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.11" "Prelude.11",Value{args=11,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.12" "Prelude.12",Value{args=12,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.13" "Prelude.13",Value{args=13,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.14" "Prelude.14",Value{args=14,fixity=Def,priority=9,letBound=True,traced=False})-(Con Data "Prelude.15" "Prelude.15",Value{args=15,fixity=Def,priority=9,letBound=True,traced=False}) (Var "error",Value{args=1,fixity=Def,priority=9,letBound=True,traced=False}) (Var "undefined",Value{args=0,fixity=Def,priority=9,letBound=True,traced=False})
libraries/Random.hs view
@@ -8,8 +8,8 @@ getStdRandom, getStdGen, setStdGen, newStdGen ) where -import PreludeBuiltinTypes-import RandomBuiltin+import PreludeBuiltinTypes as NotHat.T+import RandomBuiltin as NotHat.T import qualified NotHat.System.Random as NotHat.Random import Char @@ -38,19 +38,19 @@ instance Show StdGen where showsPrec = primStdGenShowsPrec -foreign import haskell "Random.genRange"+foreign import ccall "NotHat.Random.genRange" primStdGenGenRange :: StdGen -> (Int,Int)-foreign import haskell "Random.next"+foreign import ccall "NotHat.Random.next" primStdGenNext :: StdGen -> (Int,StdGen)-foreign import haskell "Random.split"+foreign import ccall "NotHat.Random.split" primStdGenSplit :: StdGen -> (StdGen,StdGen)-foreign import haskell "Prelude.readsPrec"+foreign import ccall "NotHat.Prelude.readsPrec" primStdGenReadsPrec :: Int -> String -> [(StdGen,String)]-foreign import haskell "Prelude.showsPrec"+foreign import ccall "NotHat.Prelude.showsPrec" primStdGenShowsPrec :: Int -> StdGen -> String -> String -foreign import haskell "Random.mkStdGen"+foreign import ccall "NotHat.Random.mkStdGen" mkStdGen :: Int -> StdGen ---------------- The Random class ---------------------------@@ -155,11 +155,11 @@ ---------------- The global random generator ---------------- -foreign import haskell "Random.newStdGen"+foreign import ccall "NotHat.Random.newStdGen" newStdGen :: IO StdGen-foreign import haskell "Random.setStdGen"+foreign import ccall "NotHat.Random.setStdGen" setStdGen :: StdGen -> IO ()-foreign import haskell "Random.getStdGen"+foreign import ccall "NotHat.Random.getStdGen" getStdGen :: IO StdGen -foreign import haskell "Random.getStdRandom"+foreign import ccall "NotHat.Random.getStdRandom" getStdRandom :: (StdGen -> (a, StdGen)) -> IO a
libraries/Random.hx view
@@ -4,15 +4,15 @@ (Var "mkStdGen",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "newStdGen",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "setStdGen",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RandomGen" "genRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})+(Method "RandomGen" "next",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Random" "random",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Random" "randomIO",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Random" "randomR",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Random" "randomRIO",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Random" "randomRs",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "Random" "randoms",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RandomGen" "genRange",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(Method "RandomGen" "next",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False}) (Method "RandomGen" "split",Value {args = -1, fixity = Def, priority = 9, letBound = True, traced = False})-(TypeClass "Random",TyCls (Cls ["randomR","random","randomRs","randoms","randomRIO","randomIO"]))-(TypeClass "RandomGen",TyCls (Cls ["genRange","next","split"])) (TypeClass "StdGen",TyCls (Ty [] []))+(TypeClass "Random",TyCls (Cls ["random","randomIO","randomR","randomRIO","randomRs","randoms"]))+(TypeClass "RandomGen",TyCls (Cls ["genRange","next","split"]))
libraries/System.hs view
@@ -3,22 +3,22 @@ getArgs, getProgName, getEnv, system, exitWith, exitFailure ) where -import PreludeBuiltinTypes-import SystemBuiltinTypes-import SystemBuiltin+import PreludeBuiltinTypes as NotHat.T+import SystemBuiltinTypes as NotHat.T+import SystemBuiltin as NotHat.T import qualified NotHat.System.Cmd as NotHat.Cmd import qualified NotHat.System.Environment as NotHat.Environment import qualified NotHat.System.Exit as NotHat.Exit -foreign import haskell "Environment.getArgs"+foreign import ccall "NotHat.Environment.getArgs" getArgs :: IO [String]-foreign import haskell "Environment.getProgName"+foreign import ccall "NotHat.Environment.getProgName" getProgName :: IO String-foreign import haskell "Environment.getEnv"+foreign import ccall "NotHat.Environment.getEnv" getEnv :: String -> IO String-foreign import haskell "Cmd.system"+foreign import ccall "NotHat.Cmd.system" system :: String -> IO ExitCode-foreign import haskell "Exit.exitWith"+foreign import ccall "NotHat.Exit.exitWith" exitWith :: ExitCode -> IO a-foreign import haskell "Exit.exitFailure"+foreign import ccall "NotHat.Exit.exitFailure" exitFailure :: IO a
libraries/System.hx view
@@ -5,6 +5,6 @@ (Var "getEnv",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "getProgName",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "system",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "ExitCode" "ExitFailure",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = True})-(Con Data "ExitCode" "ExitSuccess",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = True})+(Con Data "ExitCode" "ExitFailure",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "ExitCode" "ExitSuccess",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "ExitCode",TyCls (Ty ["ExitSuccess","ExitFailure"] []))
libraries/SystemBuiltinTypes.hx view
@@ -1,4 +1,4 @@ module SystemBuiltinTypes-(Con Data "ExitCode" "ExitFailure",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = True})-(Con Data "ExitCode" "ExitSuccess",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = True})+(Con Data "ExitCode" "ExitFailure",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "ExitCode" "ExitSuccess",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (TypeClass "ExitCode",TyCls (Ty ["ExitSuccess","ExitFailure"] []))
libraries/Time.hs view
@@ -17,9 +17,9 @@ ,timeFmt,time12Fmt) ,defaultTimeLocale) import Char ( intToDigit )-import PreludeBuiltinTypes+import PreludeBuiltinTypes as NotHat.T import TimeBuiltinTypes-import TimeBuiltin+import TimeBuiltin as NotHat.T import qualified NotHat.System.Time as NotHat.Time -- data ClockTime = ... -- Implementation-dependent@@ -31,37 +31,37 @@ instance Eq ClockTime where (==) = primClockTimeEqEq -foreign import haskell "Prelude.compare"+foreign import ccall "NotHat.Prelude.compare" primClockTimeCompare :: ClockTime -> ClockTime -> Ordering -foreign import haskell "Prelude.<="+foreign import ccall "NotHat.Prelude.<=" primClockTimeLeEq :: ClockTime -> ClockTime -> Bool -foreign import haskell "Prelude.=="+foreign import ccall "NotHat.Prelude.==" primClockTimeEqEq :: ClockTime -> ClockTime -> Bool -foreign import haskell "Time.getClockTime"+foreign import ccall "NotHat.Time.getClockTime" getClockTime :: IO ClockTime -foreign import haskell "Time.addToClockTime"+foreign import ccall "NotHat.Time.addToClockTime" addToClockTime :: TimeDiff -> ClockTime -> ClockTime -foreign import haskell "Time.diffClockTimes"+foreign import ccall "NotHat.Time.diffClockTimes" diffClockTimes :: ClockTime -> ClockTime -> TimeDiff -foreign import haskell "Time.toCalendarTime"+foreign import ccall "NotHat.Time.toCalendarTime" toCalendarTime :: ClockTime -> IO CalendarTime -foreign import haskell "Time.toUTCTime"+foreign import ccall "NotHat.Time.toUTCTime" toUTCTime :: ClockTime -> CalendarTime -foreign import haskell "Time.toClockTime"+foreign import ccall "NotHat.Time.toClockTime" toClockTime :: CalendarTime -> ClockTime -foreign import haskell "Time.calendarTimeToString"+foreign import ccall "NotHat.Time.calendarTimeToString" calendarTimeToString :: CalendarTime -> String -foreign import haskell "Time.formatCalendarTime"+foreign import ccall "NotHat.Time.formatCalendarTime" formatCalendarTime :: TimeLocale -> String -> CalendarTime -> String {-
libraries/Time.hx view
@@ -7,27 +7,27 @@ (Var "toCalendarTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "toClockTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Var "toUTCTime",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "CalendarTime" "CalendarTime",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Friday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Monday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Saturday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Sunday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Thursday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Tuesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Wednesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "April",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "August",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "CalendarTime" "CalendarTime",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "December",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "February",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Friday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "January",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "July",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "June",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "March",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "May",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Monday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "November",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "October",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Saturday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "September",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Sunday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Thursday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "TimeDiff" "TimeDiff",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Tuesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Wednesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Field "CalendarTime" "ctDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Field "CalendarTime" "ctHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Field "CalendarTime" "ctIsDST",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
libraries/TimeBuiltinTypes.hx view
@@ -1,25 +1,25 @@ module TimeBuiltinTypes-(Con Data "CalendarTime" "CalendarTime",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Friday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Monday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Saturday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Sunday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Thursday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Tuesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})-(Con Data "Day" "Wednesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "April",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "August",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "CalendarTime" "CalendarTime",Value {args = 12, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "December",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "February",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Friday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "January",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "July",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "June",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "March",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "May",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Monday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "November",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "October",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Saturday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "Month" "September",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Sunday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Thursday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Con Data "TimeDiff" "TimeDiff",Value {args = 7, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Tuesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False})+(Con Data "Day" "Wednesday",Value {args = 0, fixity = Def, priority = 9, letBound = True, traced = False}) (Field "CalendarTime" "ctDay",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Field "CalendarTime" "ctHour",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False}) (Field "CalendarTime" "ctIsDST",Value {args = 1, fixity = Def, priority = 9, letBound = True, traced = False})
trans/AuxFile.hs view
@@ -1,569 +1,82 @@-module AuxFile- ( module AuxFile -- internals used by module AuxLabelAST- ) where- -- toAuxFile -- primary export used by Main- -- hbc won't let me put both specs in the export list---import Control.Monad(when)-import System.IO(hPutStr,stderr)-import Data.Maybe(isNothing,fromJust)-import Data.List(isPrefixOf,nub,minimumBy,elemIndex)+module AuxFile (readAuxFiles,writeAuxFile) where -import Syntax-import TokenId (TokenId(..),tPrelude,visImport,t_Tuple,getUnqualified,t_Arrow)-import SysDeps(PackedString, unpackPS, packString)-import AssocTree-import OsOnly-import Flags-import Extra (noPos, readFirst)-import AuxTypes-import AuxFixity (fixInfixList)+import Flags(Flags,sIncludes,sPreludes,sDbgTrusted)+import Environment(Environment,Entity,HxEntity,exports,imports,hxEnvironmentToList,listToHxEnvironment)+import Relation(unionRelations)+import Language.Haskell.Exts.Annotated+ (Module(..),ModuleHead(..),ExportSpecList(..),ExportSpec(..)+ ,ImportDecl(..),ModuleName(..),QName(..),SrcSpanInfo)+import SynHelp (mkQName,Id(getId),getModuleNameFromModule)+import System.FilePath (FilePath,addExtension,pathSeparator,(</>))+import System.IO (stderr,hPutStr)+import System.Exit (exitFailure)+import qualified Control.Exception(catch,IOException)+import Data.List (isPrefixOf) -import Extra (strace)-import AssocTree+-- Create environment for all imports.+-- Exception if hx-file of an imported module is not found.+readAuxFiles :: Flags -> Module l -> IO Environment+readAuxFiles flags mod@(Module l maybeModuleHead _ importDecls decls) = do+ importEnvs <- mapM (importEnv flags) (filter notNotHat importDecls)+ return (unionRelations importEnvs) --- `toAuxFile' writes out the .hx file given this module's complete--- parse tree. The .hx file mentions all exported identifiers, both--- those defined in this module, and those reexported from imports.+notNotHat :: ImportDecl l -> Bool+notNotHat importDecl = not ("NotHat" `isPrefixOf` getId (importModule importDecl)) -toAuxFile :: Environment -> Flags -> FilePath -> Module TokenId -> IO ()-toAuxFile finalEnv flags aux- (Module pos modid exports imports fixdecls (DeclsParse decls)) =- do- let (identMap,definedTypesAndClasses) = mkIdentMap decls- let (_,definedExported) = - extendEnv finalEnv (initAuxInfo (not (sDbgTrusted flags))) - (visibleIn exports unspecYes modid)- (initAT,identMap)- (map DeclFixity fixdecls ++ decls)- ((fullInfo,fullIdentMap),_) <- getImports (visibleIn exports unspecNo)- definedExported- flags imports- writeFile aux ((showString "module " . shows modid . showChar '\n' .- showLines (listAT fullInfo)- ) "")- {- This warning should be harmless and is just irritating for the user- let missingDefns = missing exports (fullInfo,fullIdentMap)- definedTypesAndClasses- when (not (null missingDefns))- (hPutStr stderr- ((showString "\nExported but not defined in this module "- . showString "(possibly imported and reexported):\n"- . showLines missingDefns) "\n"))- -}- where- showLines :: Show a => [a] -> ShowS- showLines = foldr (\x y-> shows x . showChar '\n' . y) id+importEnv :: Flags -> ImportDecl l -> IO Environment+importEnv flags importDecl = do+ entities <- readAuxFile flags (importModule importDecl)+ return (imports (listToHxEnvironment entities) importDecl) --- `getImports' sucks in the .hx files for all explicit imports,--- following the impspec carefully with regard to explicit naming and--- hiding. We take a kind of need-analysis as the `reexport' argument,--- to determine more accurately which entities are really vital to--- import and which to ignore. --getImports :: (TokenId->Visibility) -> Environment- -> Flags -> [ImpDecl TokenId] -> IO (Environment,[Environment])-getImports reexport (alreadyGot,identMap) flags impdecls = do- let importFiles = map impData impdecls- importQualifiers = map qualifiers impdecls- importHiddenEntities = map getHidden impdecls- auxInfos <- mapM getAuxFile importFiles- let allInfo = zip3 importFiles importQualifiers auxInfos- return ((foldr extendImportEnv alreadyGot allInfo- ,foldr extendIdentMap identMap allInfo )- ,zipWith makeEnv importHiddenEntities auxInfos)- where- getHidden (Import _ (Hiding entities)) = entities- getHidden (ImportQ _ (Hiding entities)) = entities- getHidden (ImportQas _ _ (Hiding entities)) = entities- getHidden (Importas _ _ (Hiding entities)) = entities- getHidden _ = []-- qualifiers (Import m _) = ["", show m++"."]- qualifiers (ImportQ m _) = [show m++"."]- qualifiers (ImportQas m n _) = [show n++"."]- qualifiers (Importas m n _) = ["", show n++"."]-- makeEnv :: [Entity TokenId] -> [(Identifier,AuxiliaryInfo)] -> Environment- makeEnv entities auxInfos =- foldr addEnv (initAT,initAT) auxInfos- where- addEnv :: (Identifier,AuxiliaryInfo) -> Environment -> Environment- addEnv (identifier,auxInfo) (auxTree,idMap) =- if identifier `isAmong` entities- then (if notTyCls identifier- then (addAT auxTree const identifier auxInfo- ,addAT idMap const (subTid identifier) identifier) - else (addTyCls (\x->True) auxTree identifier auxInfo,idMap)) - else (auxTree,idMap)-- normalImport modid = - not (sPrelude flags && "NotHat." `isPrefixOf` getUnqualified modid)- - getAuxFile :: (TokenId,Visibility) -> IO [(Identifier,AuxiliaryInfo)]- getAuxFile (modid,importVisible) = - if normalImport modid - then do- (_,f) <- readFirst (fixImportNames (sUnix flags) "hx" (show modid)- (sIncludes flags ++ sPreludes flags))- (return . map (myRead (show modid)) . tail . lines) f- else return []-- extendImportEnv ((modid,importVisible), qs, auxInfos) got =- foldr (\ (k,v) t-> let ks = map (qual k) qs in -- all qual names- foldr (\k' t-> if notGot k' t && importVisible k {-not! k'-}- && reexport modid k'- then (if notTyCls k'- then addAT t const k' v- else addTyCls importVisible t k' v)- else t) t ks- ) got auxInfos-- extendIdentMap ((modid,importVisible), _, auxInfos) got =- foldr (\(k,_) t-> let i = subTid k in- if notTyCls k && notGot i t && importVisible k - && reexport modid k- then addAT t const i k else t) got auxInfos-- addTyCls :: Visibility -> AuxTree -> Identifier -> AuxiliaryInfo -> AuxTree- addTyCls importVisible t k@(TypeClass tyCls) (TyCls v') =- addAT t const k - (case v' of- Ty cons labels -> - TyCls (Ty (filter (importVisible . Con undefined tyCls) cons) - (filter (importVisible . Field tyCls) labels))- Syn helpers body -> TyCls (Syn helpers body)- Cls methods -> - TyCls (Cls (filter (importVisible . Method tyCls) methods)))-- notTyCls (TypeClass _) = False- notTyCls _ = True-- notGot k t = case lookupAT t k of { Nothing -> True; Just _ -> False }-- -- getModule (Import (_,modid) is) = modid- -- getModule (ImportQ (_,modid) is) = modid - -- getModule (ImportQas (_,modid) _ is) = modid- -- getModule (Importas (_,modid) _ is) = modid-- impData (Import (_,modid) is) = (modid, impSpec is)- impData (ImportQ (_,modid) is) = (modid, impSpec is)- impData (ImportQas (_,modid) _ is) = (modid, impSpec is)- impData (Importas (_,modid) _ is) = (modid, impSpec is)-- impSpec :: ImpSpec TokenId -> Visibility- impSpec (Hiding []) = (\x-> True)- impSpec (Hiding entities) = (\x-> not (x `isAmong` entities))- impSpec (NoHiding entities) = (\x-> x `isAmong` entities)-- x `isAmong` entities = (x `match`) `any` entities-- (Var v) `match` (EntityVar _ y) = v == show y- (Field t1 f)`match` (EntityVar _ y) = f == show y- (Method c m)`match` (EntityVar _ y) = m == show y- (Con _ t1 c)`match` (EntityConClsAll _ t2) = t1 == show t2- (Field t1 f)`match` (EntityConClsAll _ t2) = t1 == show t2- (Method c m)`match` (EntityConClsAll _ c2) = c == show c2- (Con _ t1 c)`match` (EntityConClsSome _ t2 cs) =- t1 == show t2 && c `elem` (map (show.snd) cs)- (Field t1 f)`match` (EntityConClsSome _ t2 cs) =- t1 == show t2 && f `elem` (map (show.snd) cs)- (Method c m)`match` (EntityConClsSome _ c2 ms) =- c == show c2 && m `elem` (map (show.snd) ms)- (TypeClass tc1) `match` (EntityConClsAll _ tc2) = tc1 == show tc2- (TypeClass tc1) `match` (EntityConClsSome _ tc2 _) = tc1 == show tc2- _ `match` _ = False+-- Read whole content of .hx file of given module, using search paths in flags.+-- Aborts with error if no such .hx file is found.+readAuxFile :: Flags -> ModuleName l -> IO [HxEntity]+readAuxFile flags (ModuleName l moduleStr) = do+ let filePaths = potentialFilePaths flags moduleStr+ (filePath,contents) <- readFirst moduleStr filePaths filePaths+ return (map (myRead filePath) . tail . lines $ contents) --- better error message+-- read function with better error message myRead :: (Read a) => String -> String -> a myRead file s = case [x | (x,t) <- reads s, ("","") <- lex t] of [x] -> x- bs@[] -> error ("Cannot parse in .hx file " ++ file ++ " line " ++ s)--- (minimumBy (\v w -> compare (length v) (length w)) --- [t | (x,t) <- reads s, let dummy = x:bs]))- y -> error ("Ambiguous parse of .hx file " ++ file)---- Visibility is a function denoting whether an identifier should be--- added (or not) to the AuxTree structure.-type Visibility = Identifier -> Bool---- `visibleIn' is a particular kind of visibility, determined--- by the explicit exports of the module.---- When checking Constructors, we need to check both whether it--- is mentioned explicitly, and whether the type it belongs to it--- mentioned in Typ(..) syntax, which implicitly exports all its--- constructors. Likewise for fields, and for methods with the--- Class(..) syntax.--visibleIn :: Maybe [Export TokenId] -> Visibility -> TokenId -> Visibility-visibleIn Nothing noneSpecified modid = (\_->False)-visibleIn (Just exports) noneSpecified modid- | null exports = noneSpecified- | any (implicitAll modid) exports = (\_->True)- | otherwise = idFilter- where- implicitAll modid (ExportModid _ m) | m==modid = True- implicitAll _ _ = False-- explicitVars = concatMap- (\e-> case e of- ExportEntity _ (EntityVar _ e) ->[show e]- _ -> []) exports-- explicitSubordinates = concatMap- (\e-> case e of- ExportEntity _ (EntityConClsSome _ _ sub) -> map (show.snd) sub- _ -> []) exports-- implicitSubordinates = concatMap- (\e-> case e of- ExportEntity _ (EntityConClsAll _ torc) -> [show torc]- _ -> []) exports-- explicitTyClss = concatMap- (\e-> case e of- ExportEntity _ (EntityConClsSome _ tyCls _) -> [show tyCls]- ExportEntity _ (EntityConClsAll _ tyCls) -> [show tyCls]- _ -> []) exports -- idFilter c@(Con _ typ con) = con `elem` explicitSubordinates- || typ `elem` implicitSubordinates- idFilter v@(Var var) = var `elem` explicitVars- idFilter v@(Method cls met) = met `elem` explicitSubordinates- || cls `elem` implicitSubordinates- || met `elem` explicitVars- idFilter c@(Field typ f) = f `elem` explicitSubordinates- || typ `elem` implicitSubordinates- || f `elem` explicitVars- idFilter (TypeClass tyCls) = tyCls `elem` explicitTyClss----- If it is left unspecified whether an entity is exported (due to--- a declaration like `module M where'), the entity's visibility--- in the true exports depends on whether the entity was defined here or--- merely imported. Defined entities are exported, imported ones are not.-unspecYes, unspecNo :: Visibility-unspecYes = \_->True-unspecNo = \_->False----- `extendEnv' extends an AuxTree environment from a list of declarations,--- filtered for `visibility' by some criterion. For instance, when writing--- the .hx file, we take care only to include identifiers that are visible--- via the export declarations. But when traversing the syntax tree to--- resolve fixity conflicts and label it with arity information, the local--- environment of identifiers is built with all identifiers in scope visible.--extendEnv :: Environment -> InitAuxInfo -> Visibility -> Environment - -> [Decl TokenId] -> ([TokenId],Environment)-extendEnv finalEnv iai visible (init,identMap) decls = - (irrefutableIds,(env,identMap))- where- (irrefutableIds,env) = - foldrPat (auxInfo finalEnv iai visible identMap) init decls- -- pass final environment as argument----- auxInfo is the main gatherer of information about declarations.--- It decides what AuxiliaryInfo to attach to each Identifier in--- the environment.--- It does not recursively descend to local declarations.-auxInfo :: Environment - -> InitAuxInfo -> Visibility -> IdentMap -> Decl TokenId -> AuxTree - -> ([TokenId],AuxTree)--- Add varid/varop identifier, with arity.-auxInfo env iai visible identMap (DeclFun _ f clauses) t- | visible key = ([],addAT t replaceArity key ((emptyAux iai){args = a}))- where a = let (Fun pats rhs local) = head clauses in length pats- key = Var (show f)--- Add varop identifier declared in infix equation, with arity.-auxInfo env iai visible identMap - (DeclPat (Alt pat@(ExpInfixList _ es) rhs local)) t- | len >= 3 =- let (_:defn:_) = es in- case defn of- ExpVarOp _ f -- actually a function definition- | visible key -> - ([],addAT t replaceArity key ((emptyAux iai){args=len-1}))- where key = Var (show f)- _ -> (\(i,(e,m)) -> ([],e)) $ - addPat iai Irrefutable visible pat (t,identMap)- where len = length es--- Add varid identifiers declared in a pattern binding.-auxInfo env iai visible identMap (DeclPat (Alt pat rhs local)) t =- (\(i,(e,m)) -> ([],e)) $ addPat iai Irrefutable visible pat (t,identMap)--- Add varid identifier declared as a primitive, with arity.-auxInfo env iai visible identMap (DeclPrimitive _ f a _) t- | visible key = ([],addAT t replaceArity key ((emptyAux iai){args = a}))- where key = Var (show f)--- Add varid identifier declared as a foreign import, with arity.-auxInfo env iai visible identMap (DeclForeignImp _ _ _ f a _ _ _) t- | visible key = ([],addAT t replaceArity key ((emptyAux iai){args = a}))- where key = Var (show f)--- Add type, constructor, with arity, and any associated field names.-auxInfo env iai visible identMap (DeclData sort _ (Simple _ typ _) tycons _) t =- ([],addAT (foldr doCon t tycons) const - (TypeClass sTyp) (TyCls (Ty constructors fieldlabels)))- where- sTyp = show typ- constructors = - filter (visible . Con undefined sTyp) . map (show . getConstrId) $ tycons- fieldlabels = - filter (visible . Field sTyp) . map show . nub . map snd . - concatMap getConstrLabels $ tycons- doCon (Constr _ c fs) t = accept c fs (foldr doFields t fs)- doCon (ConstrCtx _ _ _ c fs) t = accept c fs (foldr doFields t fs)- accept con fs t- | visible key = addAT t replaceArity key ((emptyAux iai){args=a})- | otherwise = t- where a = sum (map (\(mb,_)->maybe 1 length mb) fs)- key = Con (if isNothing sort then Newtype else Data) - (show typ) (show con)- doFields (Nothing,_) t = t- doFields (Just fs,_) t = foldr doField t fs- doField (_,f) t- | visible key = addAT t replaceArity key ((emptyAux iai){args=1})- | otherwise = t- where key = Field (show typ) (show f)--- Add type synonym-auxInfo env _ visible identMap (DeclType (Simple _ ty args) body) t =- ([],addAT t const (TypeClass (show ty)) - (TyCls (splitSynonym env (map snd args) body)))--- Add class and class method identifier, arity is always -1.-auxInfo env iai visible identMap (DeclClass _ _ cls _ _ (DeclsParse decls)) t =- ([],addAT (foldr doMethod t decls) const- (TypeClass sCls) (TyCls (Cls methods)))- where- sCls = show cls- methods =- filter (visible . Method sCls) . map show . concatMap getMethods $ decls- getMethods (DeclVarsType posIds _ _) = map snd posIds- getMethods _ = []- doMethod (DeclVarsType pis ctxs typ) env = foldr pId env pis- doMethod (DeclFixity f) env = fixInfo iai visible identMap f env- doMethod _ env = env- pId (pos,meth) t | visible key = addAT t replaceArity key (emptyAux iai)- | otherwise = t- where key = Method (show cls) (show meth)--- Add normal infix decl for identifier.-auxInfo env iai visible identMap (DeclFixity f) t = - ([],fixInfo iai visible identMap f t)--- No other form of decl matters.-auxInfo env _ visible identMap _ t = ([],t)---auxInfo visible identMap (DeclTypeRenamed _ _) t =---auxInfo visible identMap (DeclDataPrim _ _ _) t =---auxInfo visible identMap (DeclConstrs _ _ _) t =---auxInfo visible identMap (DeclInstance _ _ _ _ _) t =---auxInfo visible identMap (DeclDefault _) t =---auxInfo visible identMap (DeclForeignExp _ _ _ _) t =---auxInfo visible identMap (DeclVarsType _ _ _) t =---auxInfo visible identMap (DeclIgnore _) t =---auxInfo visible identMap (DeclError _) t =---auxInfo visible identMap (DeclAnnot _ _) t =----- Add fixity info for identifier. Here, we can encounter a constructor--- without its parent type, or a method without its parent class, and--- thus need to reconstruct its parent by looking in the IdentMap.--fixInfo :: InitAuxInfo -> Visibility -> IdentMap -> FixDecl TokenId - -> AuxTree -> AuxTree-fixInfo iai visible identMap (fixclass,prio,ids) t =- foldr (\name t -> let key = useIdentMap identMap name in- if visible key - then addAT t replaceInfix key- ((emptyAux iai){priority=prio,fixity=f})- else t)- t- (map stripFixId ids)- where- f = case fixclass of- InfixDef -> Def- InfixL -> L- InfixR -> R- Infix -> None- InfixPre f -> Pre (show f)----- different ways of combining new item into AuxTree where item already exists-replaceArity, replaceInfix :: AuxiliaryInfo -> AuxiliaryInfo -> AuxiliaryInfo-replaceArity new old = new { priority = priority old, fixity = fixity old} - -- old { args = args new }-replaceInfix new old = old { priority = priority new, fixity = fixity new }----- `missing' determines a list of exported identifiers that were--- apparently neither defined in this module nor imported/reexported.--- In fact, it falsely accuses reexported types and classes at the--- moment.-missing :: Maybe [Export TokenId] -> Environment -> [TokenId] -> [Identifier]-missing Nothing (defined,identMap) definedTypes = []-missing (Just exports) (defined,identMap) definedTypes =- concatMap notDefined exports- where- notDefined (ExportEntity _ (EntityVar _ v)) = valNotDefined v- notDefined (ExportEntity _ (EntityConClsAll _ t)) = typNotDefined t- notDefined (ExportEntity _ (EntityConClsSome _ t cs)) =- concatMap (valNotDefined . snd) cs- notDefined _ = []-- valNotDefined m = let v = useIdentMap identMap m in- case lookupAT defined v of- Just _ -> []- Nothing -> [v]-- typNotDefined typ = if typ `elem` definedTypes then []- else [Con Data (show typ) ".."]----- Extending environment from handling of patterns--data PatSort = Refutable | Irrefutable--foldrPat :: (a -> env -> ([b],env)) -> env -> [a] -> ([b],env)-foldrPat f env pats = (foldr combinePat ((,) []) . map f $ pats) env--combinePat :: (env -> ([b],env)) -> (env -> ([b],env)) -> (env -> ([b],env)) -combinePat f g env = (fbs++gbs,fenv)- where- (gbs,genv) = g env- (fbs,fenv) = f genv- ---- `addPat' extends the environment with a lambda-bound variable--- (e.g. pattern). Visibility is only important in the exported aux file.--- A variable in a refutable pattern becomes lambda-bound in the environment,--- a variable in an irrefutable pattern becomes let-bound;--- the latter variables are returned as first part of the result.-addPat :: InitAuxInfo -> PatSort -> Visibility -> Pat TokenId -> Environment - -> ([TokenId],Environment)-addPat iai patSort visible pat (env,identMap) = - (refutableVars,(newEnv,identMap))- where- (refutableVars,newEnv) = ap patSort pat env- ap :: PatSort -> Pat TokenId -> AuxTree -> ([TokenId],AuxTree)- ap s (ExpRecord (ExpCon p id) fields) env = foldrPat (addField s) env fields- ap Refutable pat@(ExpApplication p ((ExpCon _ id):exps)) env - | isIrrefutable pat = foldrPat (ap Irrefutable) env exps- ap s (ExpApplication _ exps) env = foldrPat (ap s) env exps- ap s (ExpVar p id) env = extendEnvPat s id env- ap s (ExpCon p id) env = ([],env)- ap s (ExpList p exps) env = foldrPat (ap s) env exps- ap s (PatAs p id pat) env = (ap s pat `combinePat` extendEnvPat s id) env- ap s (PatIrrefutable p pat) env = ap Irrefutable pat env- ap s (PatNplusK p id1 id2 exp1 exp2 exp3) env = - ([],addAT env letBound key ((patternAux iai){letBound=True,args=0}))- where- key = Var (show id1)- -- variable shall be let bound- ap s (ExpInfixList p exps) env = ap s (fixInfixList (env,identMap) exps) env- -- ap s (ExpVarOp p id) env = extendEnvPat s id env- -- ap s (ExpConOp p id) env = env- ap _ _ env = ([],env)-- addField s (FieldExp p id exp) env = ap s exp env- addField s (FieldPun p id) env = extendEnvPat s id env-- extendEnvPat :: PatSort -> TokenId -> AuxTree -> ([TokenId],AuxTree)- extendEnvPat Refutable id env - | visible key = ([],addAT env lambdaBound key (patternAux iai))- where- key = Var (show id)- extendEnvPat Irrefutable id env - | visible key = - ([id],addAT env letBound key ((patternAux iai){letBound=True,args=0}))- where- key = Var (show id)- extendEnvPat _ _ env = ([],env)-- lambdaBound new old = old { letBound=False, args= -1 }- letBound new old = old { letBound=True, args=0 }-- isIrrefutable :: Pat TokenId -> Bool- isIrrefutable (ExpApplication pos pats) = and . map isIrrefutable $ pats- isIrrefutable (ExpCon _ id) = isNewTypeDataCon id- isIrrefutable (ExpVar _ _) = True- isIrrefutable (PatAs _ _ pat) = isIrrefutable pat- isIrrefutable (PatIrrefutable _ _) = True- isIrrefutable (ExpRecord (ExpCon _ id) fieldPats) =- and . (isNewTypeDataCon id :) . map isIrrefutableField $ fieldPats- where- isIrrefutableField (FieldExp _ _ pat) = isIrrefutable pat- isIrrefutable _ = False-- isNewTypeDataCon id = case lookupAT identMap id of- Just (Con Newtype _ _) -> True- Just (Con Data _ _) -> False- _ -> False -- needed to handle e.g. Prelude.[]- -- _ -> error ("Data constructor not in scope: " ++ show id)-+ [] -> error ("Interface file: Cannot parse in .hx file " ++ file ++ " line " ++ s)+ y -> error ("Interface file: Ambiguous parse of .hx file " ++ file) --- determines the outer functional or applicative part of a type synonym body--- this part can then be expanded when transforming types for workers--- the *final* environment is needed, because in the body of a type synonym--- a type synonym may appear; because type synonyms shall not be recursive,--- a blackhole cannot occur for type correct programs.-splitSynonym :: Environment -> [TokenId] -> Type TokenId -> TyCls-splitSynonym env tyVars rhs = - case go rhs of- Syn 1 THelper -> Syn 0 THelper -- nothing to split off (bogus THelper)- syn -> syn+-- For given module name (String) and search paths in flags produce all file paths that .hx file may have.+potentialFilePaths :: Flags -> String -> [FilePath]+potentialFilePaths flags moduleStr = map (</> modPath) paths where- -- it is vital that this `go' agrees with the `go' in `splitSynonym' in- -- TraceTrans.- go :: Type TokenId -> TyCls- go (TypeCons _ tyCon tys) - | getUnqualified tyCon == "->" = - case tys of- [] -> Syn 0 TFun- [ty] -> Syn 1 (TApp TFun THelper)- [ty1,ty2] -> let Syn h ty2' = go ty2 - in Syn (h+1) (TApp (TApp TFun THelper) ty2')- | isExpandableTypeSynonym info = go (expandTypeSynonym info tyCon tys)- where- info = lookupTyCls env tyCon- go (TypeApp ty1 ty2) = Syn (h1+h2) (TApp ty1' ty2')- where- Syn h1 ty1' = go ty1- Syn h2 ty2' = go ty2- go (TypeVar _ tyVar) = Syn 0 (TVar (fromJust (elemIndex tyVar tyVars)))- go _ = Syn 1 THelper+ modPath = addExtension (replaceBy '.' pathSeparator moduleStr) "hx"+ paths = sIncludes flags ++ sPreludes flags+ replaceBy :: Char -> Char -> String -> String+ replaceBy c1 c2 = map (\c -> if c==c1 then c2 else c) +-- Given a list of filenames, return filename and its content of first file+-- that was read successfully (intention: other files may not exist) -isExpandableTypeSynonym :: Maybe AuxiliaryInfo -> Bool-isExpandableTypeSynonym (Just (TyCls (Syn n _))) = n > 0-isExpandableTypeSynonym _ = False+readFirst :: String -> [FilePath] -> [FilePath] -> IO (FilePath,String)+readFirst modStr [] paths = do+ hPutStr stderr ("Fail: .hx file for module `" ++ modStr ++ "' not found in " ++ show paths ++ + ". Give path with -I or -P.\n") + exitFailure+readFirst modStr (x:xs) paths =+ Control.Exception.catch (do finput <- readFile x+ return (x,finput))+ (\ y -> (y :: Control.Exception.IOException) `seq` readFirst modStr xs paths) -expandTypeSynonym :: Maybe AuxiliaryInfo - -> TokenId -> [Type TokenId] -> Type TokenId-expandTypeSynonym (Just (TyCls (Syn n body))) tySyn tys = fst (go body 1)+-- `writeAuxFile' writes out the .hx file given this module's complete+-- parse tree. The .hx file has an entry for every exported identifier, whether+-- defined in this module or reexported from imports.+-- Note that an entry may also contain names that are not exported, e.g. for a type its data constructors+-- or for a method its class.+writeAuxFile :: Flags -> FilePath -> Environment -> Module SrcSpanInfo -> IO ()+writeAuxFile flags filePath env mod = + writeFile filePath + ((showString "module " . (getId (getModuleNameFromModule mod) ++) . showChar '\n' .+ showLines (hxEnvironmentToList (exports (not (sDbgTrusted flags)) mod env))) "") where- go :: TySynBody -> Int -> (Type TokenId,Int)- go THelper n = - (TypeCons noPos (nameTransTySynHelper tySyn n) tys- ,n+1)- go (TVar v) n = (tys!!v,n)- go TFun n = (TypeCons noPos t_Arrow [],n)- go (TApp ty1 ty2) n = (TypeApp ty1' ty2',n2)- where- (ty1',n1) = go ty1 n- (ty2',n2) = go ty2 n1--nameTransTySynHelper :: TokenId -> Int -> TokenId-nameTransTySynHelper tySyn no = updateToken tySyn (++ ("___" ++ show no))--updateToken :: TokenId -> (String -> String) -> TokenId-updateToken (Visible n) f = - Visible (packString . reverse . f . unqual $ n) -updateToken (Qualified m n) f =- Qualified m (packString . reverse . f . unqual $ n)- -unqual :: PackedString -> String-unqual = reverse . unpackPS--lookupTyCls :: Environment -> TokenId -> Maybe AuxiliaryInfo-lookupTyCls (auxTree,_) id = lookupAT auxTree (TypeClass (show id))+ showLines :: Show a => [a] -> ShowS+ showLines = foldr (\x y-> shows x . showChar '\n' . y) id
− trans/AuxFixity.hs
@@ -1,224 +0,0 @@-{- ----------------------------------------------------------------------------Restructure expressions with infix operators according to associativity-and precedence. This variant of the infix resolution code is only-used when performing the tracing transformation. When doing ordinary-compilation, resolving infix expressions is part of the Rename phase.--}--module AuxFixity(fixInfixList) where--import SysDeps(PackedString,packString,unpackPS)-import Extra(Pos(..),noPos,strPos,pair)-import Syntax-import SyntaxPos-import TokenId(TokenId(..), t_x, t_y, t_flip, t_minus, tnegate, visImport)-import AssocTree---import PreImp-import AuxTypes-import MkSyntax(mkAppExp)---{---- Main function of the module.--}-fixInfixList :: Environment -> [Exp TokenId] -> Exp TokenId--fixInfixList env [] = error "I: fixInfix []"-fixInfixList env ees@(ExpVarOp pos op:es) =- let fix = lookupFix env op- exp' = reorder env es- exp = invertCheck pos op fix env exp'---in ExpLambda pos [varx,vary] --- (ExpApplication pos [ExpVar pos op,vary,varx])--- where--- varx = ExpVar pos t_x--- vary = ExpVar pos t_y- in if op == t_minus- then reorder env ees- else (mkAppExp [ExpVar noPos t_flip, ExpVar pos op, exp])- -- desugaring with flip better than lambda for reading a trace-fixInfixList env ees@(ExpConOp pos op:es) =- let fix = lookupFix env op- in case fix of- (Pre a,l) -> reorder env ees- _ -> let exp' = reorder env es- exp = invertCheck pos op fix env exp'--- in ExpLambda pos [varx,vary] --- (ExpApplication pos [ExpVar pos op,vary,varx])--- where--- varx = ExpVar pos t_x--- vary = ExpVar pos t_y- in mkAppExp [ExpVar noPos t_flip, ExpCon pos op, exp]- -- desugaring with flip better than lambda for reading a trace-fixInfixList env ees =- case last ees of- ExpConOp pos op -> let fix = lookupFix env op- exp' = reorder env (init ees)- exp = invertCheck pos op fix env exp'- in (mkAppExp [ExpCon pos op,exp])- ExpVarOp pos op -> let fix = lookupFix env op- exp' = reorder env (init ees)- exp = invertCheck pos op fix env exp'- in (mkAppExp [ExpVar pos op,exp])- _ -> reorder env ees------ the primary function that re-orders an infix list into a single expression-reorder :: Environment -> [Exp TokenId] -> Exp TokenId-reorder env es = getExp env [] [] es----- getExp and getOp together `parse' the list of expressions into a--- single tree-shaped expression. We expect the list to take the form--- [exp,op,exp,op,exp,op...] i.e. exps and ops alternate. Of course,--- there are exceptions: where the whole expr is a left or right section--- of an operator; and where a prefix operator starts the show.--getExp :: Environment -- environment (contains fixity info)- -> [((Fixity,Int),(Exp TokenId,Int))] -- stack of operators already seen- -> [Exp TokenId] -- stack of outstanding non-op exprs- -> [Exp TokenId] -- input list of exprs- -> Exp TokenId -- re-combined output--getExp env ops exps (e:es) =- case e of- ExpConOp pos o ->- let fix = lookupFix env o in- case fix of- (Pre a,l) -> getExp env (stackPrefix fix (ExpCon pos o):ops) exps es- ExpVarOp pos o ->- let fix = lookupFix env o in- case fix of- (Pre a,l) -> getExp env (stackPrefix fix (ExpVar pos o):ops) exps es- _ | o==t_minus- -> getExp env (stackPrefix (Pre "negate",6) (ExpVar pos o):ops) exps es- _ -> getOp env ops (e:exps) es-getExp env ops [] [] =- error ("Problem with infix section at unknown location.")-getExp env ops (e:es) [] =- error ("Problem with infix section at "++strPos (getPos e))---getOp :: Environment -- environment (contains fixity info)- -> [((Fixity,Int),(Exp TokenId,Int))] -- stack of operators- -> [Exp TokenId] -- stack of outstanding non-op exprs- -> [Exp TokenId] -- input list of exprs- -> Exp TokenId -- recombined output--getOp env ops exps [] = finish ops exps-getOp env ops exps ees@(ExpConOp pos op:es) =- case harder pos ops op env of- Just (o,ops) -> getOp env ops (rebuild o exps) ees- Nothing -> let fop = stackInfix env (ExpCon pos op)- in getExp env (fop:ops) exps es-getOp env ops exps ees@(ExpVarOp pos op:es) =- case harder pos ops op env of- Just (o,ops) -> getOp env ops (rebuild o exps) ees- Nothing -> let fop = stackInfix env (ExpVar pos op)- in getExp env (fop:ops) exps es-getOp env ops exps (e:es) =- error ("Need infix operator at " ++ strPos (getPos e))---stackInfix :: Environment -> Exp TokenId -> ((Fixity,Int),(Exp TokenId,Int))-stackInfix env op@(ExpVar _ o) = (lookupFix env o, (op,2::Int))-stackInfix env op@(ExpCon _ o) = (lookupFix env o, (op,2::Int))--stackPrefix fix op = (fix,(op,1::Int))- ---- harder decides whether a new operator has lower precedence than--- the top of the operator stack. If so, we can pop the stack and--- rebuild the accumulated expression so far before continuing.--- If however it has higher precedence, then we must push the new--- operator onto the stack and keep going. If it has equal precedence,--- then left/right associativity must be taken into account.--harder :: Pos -- position- -> [((Fixity,Int),(b,c))] -- stack of operators- -> TokenId -- operator name- -> Environment -- environment holding fixity info- -> Maybe (((Fixity,Int),(b,c)),[((Fixity,Int),(b,c))])-harder pos [] op' env = Nothing-harder pos (ipop@((inf,pri),(_,_)):ops) op' env =- let (inf',pri') = lookupFix env op' in- if pri > pri' then- Just (ipop,ops)- else if pri == pri' then- case inf of- Def -> Just (ipop,ops)- L -> Just (ipop,ops)- Pre _ -> Just (ipop,ops)- R -> Nothing- None -> error ("Infix operator "++show op'++" at "++strPos pos- ++" is non-associative.")- else Nothing------ finish transforms the two stacks (operators + exprs) into the final--- recombined expression.-finish :: [((Fixity,c),(Exp TokenId,Int))] -- stack of operators- -> [Exp TokenId] -- stack of non-op exprs- -> Exp TokenId -- output expr-finish [] [] = error "AuxFixity.finish: empty" -finish [] [e] = e-finish [] _ = error "AuxFixity.finish: multiple expression"-finish (o:ops) es = finish ops (rebuild o es)----- rebuild the expression stack, by combining the top two items with--- the given operator. Precondition: the operator must have higher--- precedence than any operators between the exprs lower in the stack.--rebuild :: ((Fixity,c),(Exp TokenId,Int)) -- operator- -> [Exp TokenId] -- stack of expressions- -> [Exp TokenId] -- juggled the stack-rebuild (_,(op,2)) (e1:e2:es) =- mkAppExp [op,e2,e1]:es-rebuild ((Pre fun,_) ,(op,_)) (e1:es) =- mkAppExp [ExpVar (getPos op) (visImport fun),e1]:es-rebuild (_,(op,n)) es =- error ("Not enough arguments at " ++ strPos (getPos op))----- discover fixity information from the .hx file info.-lookupFix :: Environment -> TokenId -> (Fixity,Int)-lookupFix (env,identMap) op =- case lookupAT env (useIdentMap identMap op) of- Just info -> (fixity info, priority info)- Nothing -> error ("No auxinfo for operator "++show op)---leftFixity :: Fixity -> Bool-leftFixity L = True-leftFixity Def = True-leftFixity (Pre _) = True-leftFixity _ = False --- !!! Cheating Infix is InfixR (??)----- 'invertCheck' checks for priority inversion in an operator section.-invertCheck :: Show a => Pos -> a -> (b,Int) -> Environment- -> Exp TokenId -> Exp TokenId-invertCheck pos1 op1 (fix1,pri1) env exp =- case exp of- ExpApplication _ (ExpVar pos2 op2: es) -> check pos2 op2- ExpApplication _ (ExpCon pos2 op2: es) -> check pos2 op2- _ -> exp- where- check pos2 op2 =- let (fix2,pri2) = lookupFix env op2- in if pri2 < pri1 then- error ("Fixity problem:\n "- ++show op1++" used at "++strPos pos1++" has precedence "- ++show pri1++",\n "- ++show op2++" used at "++strPos pos2++" has precedence "- ++show pri2++".\n "- ++"The partially applied operator "++show op1- ++" should have lower precedence\n "- ++"than the fully-applied operator "- ++show op2++" used inside the section.\n")- else exp--{- --------------------------------------------------------------------------}
− trans/AuxLabelAST.hs
@@ -1,405 +0,0 @@-module AuxLabelAST- ( auxLabelSyntaxTree- ) where---import Data.List (nubBy)-import Data.Char (isUpper)-import Data.Maybe (isJust)-import AuxTypes(Environment,mkIdentMap,useIdentMap,useEnvironment- ,Identifier(..)- ,AuxiliaryInfo(letBound),InitAuxInfo,initAuxInfo,defaultAuxInfo)-import AuxFile(Visibility,PatSort(Refutable,Irrefutable)- ,extendEnv,getImports,addPat,foldrPat)-import AuxFixity(fixInfixList)-import TraceId-import Flags(Flags(sDbgTrusted))-import Syntax-import SyntaxUtil (infixFun)-import TokenId (TokenId(..))-import AssocTree-import Extra (Pos,noPos)----- `auxLabelSyntaxTree' relabels the entire abstract syntax tree,--- replacing TokenId with TraceId (which basically adds arity and--- binding information for each variable name). Along the way, we--- also need to resolve the fixity of all applications (originally--- done in a later phase of the compiler).--auxLabelSyntaxTree :: Flags -> Module TokenId - -> IO (Environment,Module TraceId)-auxLabelSyntaxTree flags- mod@(Module p modId exports imports fixdecls (DeclsParse decls)) =- do- let (identMap,_) = mkIdentMap decls- (importenv,hiddenEnvs) <- - getImports (\_->vi) (initAT,identMap) flags imports- let (irrefutableIds,totalenv) = - extendEnv totalenv iai vi importenv - (map DeclFixity fixdecls ++ decls)- let Module p modId exports imports fixdecls decls = - relabelModule iai totalenv importenv hiddenEnvs mod- return $ (totalenv,Module p modId exports imports fixdecls - (addVars iai totalenv irrefutableIds decls))- where- iai = initAuxInfo . not . sDbgTrusted $ flags----- `vi' is a degenerate visibility function. When writing the .hx file,--- visibility in the export list is important, but when relabeling the--- syntax tree, everything is visible.-vi :: Visibility-vi = \_-> True----- `letVar' and `lookEnv' build a TraceId for any TokenId by--- looking up the arity information in the environment. For letVar,--- the distinction between let-bound and lambda-bound variables--- is decided by the caller, but for `lookEnv', it is decided by the--- environment.---letVar :: Environment -> TokenId -> TraceId-letVar env id =- case useEnvironment env id of- Just info | letBound info -> id `plus` info- _ -> error ("AuxLabelAST.letVar: "++show id++" not let-bound in env")--lookEnv :: Environment -> TokenId -> TraceId-lookEnv env id =- case useEnvironment env id of- Just info -> id `plus` info- _ -> case id of- -- this is a horrible hack to by-pass qualified names.- -- (only needed for use of current module as qualifier?)- Qualified _ x -> case useEnvironment env (Visible x) of- Just info -> id `plus` info- _ -> stop- _ -> stop- where- stop = error ("Variable or constructor not in scope: " ++ show id)--lookupTyCls :: Environment -> TokenId -> TraceId-lookupTyCls (auxTree,_) id =- case lookupAT auxTree (TypeClass (show id)) of- Just info -> id `plus` info- Nothing -> mkTyCon defaultAuxInfo id- -- type or class not in scope, esp. predefined ones---- The class `Relabel' walks the abstract syntax tree, relabelling all--- TokenId to TraceId. Most instances are pretty trivial - the only--- interesting ones are at the end of this section.--class Relabel g where- relabel :: InitAuxInfo -> Environment -> g TokenId -> g TraceId--relabelModule :: InitAuxInfo -> Environment -> Environment -> [Environment] - -> Module TokenId -> Module TraceId-relabelModule iai env impEnv hiddenEnvs - (Module p mod Nothing imps fixs decls) =- Module p (mkModule iai mod) Nothing - (zipWith (relabelImports iai impEnv) hiddenEnvs imps) []- (relabel iai env decls)-relabelModule iai env impEnv hiddenEnvs - (Module p mod (Just exps) imps fixs decls) =- Module p (mkModule iai mod) (Just (map (relabel iai env) exps))- (zipWith (relabelImports iai impEnv) hiddenEnvs imps) [] - (relabel iai env decls)- -- fixdecls are folded into the decls--instance Relabel Export where- relabel iai env (ExportEntity pos entity) = - ExportEntity pos (relabel iai env entity)- relabel iai env (ExportModid pos id) = - ExportModid pos (mkModule iai id)---relabelImports iai env hiddenEnv (Import (pos,id) impspec) =- Import (pos,mkModule iai id) (relabelImpSpec iai env hiddenEnv impspec)-relabelImports iai env hiddenEnv (ImportQ (pos,id) impspec) =- ImportQ (pos,mkModule iai id) (relabelImpSpec iai env hiddenEnv impspec)-relabelImports iai env hiddenEnv (ImportQas (p1,id1) (p2,id2) impspec) =- ImportQas (p1,mkModule iai id1) (p2,mkModule iai id2) - (relabelImpSpec iai env hiddenEnv impspec)-relabelImports iai env hiddenEnv (Importas (p1,id1) (p2,id2) impspec) =- Importas (p1,mkModule iai id1) (p2,mkModule iai id2) - (relabelImpSpec iai env hiddenEnv impspec)--relabelImpSpec iai env hiddenEnv (NoHiding entities) = - NoHiding (map (relabel iai env) entities)-relabelImpSpec iai env hiddenEnv (Hiding entities) = - Hiding (map (relabel iai hiddenEnv) entities)--instance Relabel Entity where- relabel _ env (EntityVar p id) = - EntityVar p (lookEnv env id)- relabel _ env (EntityConClsAll p id) = - EntityConClsAll p (lookupTyCls env id)- relabel _ env (EntityConClsSome p id cons) = - EntityConClsSome p (lookupTyCls env id) (relabelRealPosIds env cons)--instance Relabel InfixClass where- relabel _ env InfixDef = InfixDef- relabel _ env InfixL = InfixL- relabel _ env InfixR = InfixR- relabel _ env Infix = Infix- relabel iai env (InfixPre x) = (InfixPre (mkLambdaBound iai x))--instance Relabel FixId where- relabel _ env (FixCon p i) = FixCon p (lookEnv env i)- relabel _ env (FixVar p i) = FixVar p (lookEnv env i)--instance Relabel Decls where- relabel iai env (DeclsParse decls) = DeclsParse (map (relabel iai env) decls)- relabel iai env (DeclsScc deps) = DeclsScc (map (relabel iai env) deps)--instance Relabel DeclsDepend where- relabel iai env (DeclsNoRec decl) = DeclsNoRec (relabel iai env decl)- relabel iai env (DeclsRec decls) = DeclsRec (map (relabel iai env) decls)--instance Relabel Decl where- relabel iai env (DeclType s typ) = - DeclType (relabel iai env s) (relabel iai env typ)- relabel iai env (DeclTypeRenamed p n) = DeclTypeRenamed p n- relabel iai env (DeclData mb ctxs simp constrs pis) =- DeclData mb (map (relabel iai env) ctxs) (relabel iai env simp)- (map (relabel iai env) constrs) (relabelPosIds iai pis)- relabel iai env (DeclDataPrim p i n) = -- used?- DeclDataPrim p (mkLambdaBound iai i) n- relabel iai env (DeclConstrs p i piis) = -- used?- DeclConstrs p (mkLambdaBound iai i)- (map (\(p,i1,i2)->(p,mkLambdaBound iai i1,mkLambdaBound iai i2)) piis)- relabel iai env (DeclClass p ctxs cls vars fundeps decls) =- DeclClass p (map (relabel iai env) ctxs) (mkClass iai cls)- (map (mkTyVar iai) vars) (map (relabel iai env) fundeps)- (relabel iai env decls)- relabel iai env (DeclInstance p ctxs cls insts decls) =- DeclInstance p (map (relabel iai env) ctxs) (mkClass iai cls)- (map (relabel iai env) insts) (relabel iai env decls)- relabel iai env (DeclDefault typs) =- DeclDefault (map (relabel iai env) typs)- relabel iai env (DeclPrimitive p i n typ) = -- used?- DeclPrimitive p (letVar env i) n (relabel iai env typ)- relabel iai env (DeclForeignImp p callConv str i1 n fspec typ i2) =- DeclForeignImp p callConv str (letVar env i1) n fspec (relabel iai env typ)- (mkLambdaBound iai i2)- relabel iai env (DeclForeignExp p callConv str id typ) =- DeclForeignExp p callConv str (mkLambdaBound iai id) (relabel iai env typ)- relabel iai env (DeclVarsType pis ctxs typ) =- DeclVarsType (relabelRealPosIds env pis) (map (relabel iai env) ctxs)- (relabel iai env typ)- relabel iai env (DeclPat (Alt (ExpInfixList p exps) rhs decls))- | isJust infixFunExps - = relabel iai env (DeclFun pos fun [Fun [e1,e2] rhs decls])- where- infixFunExps = infixFun exps- Just (e1,pos,fun,e2) = infixFunExps- relabel iai env (DeclPat (Alt pat rhs ds@(DeclsParse decls))) =- let (irrefutableDeclIds,newEnv) = extendEnv undefined iai vi env decls- in DeclPat - (Alt (relabel iai newEnv pat) (relabel iai newEnv rhs) - (addVars iai newEnv (nubBy (\x y -> show x == show y) -- for scope - irrefutableDeclIds) - (relabel iai newEnv ds)))- -- dont' use relable Alt, because that extends environment also- -- by variables in the pattern- relabel iai env (DeclFun p f funs) =- DeclFun p - -- ensure that defined id always with arity, even in class/instance- (modArity (letVar env f) (funArity . head $ funs))- (map (relabel iai env) funs)- relabel _ env (DeclIgnore str) = DeclIgnore str- relabel _ env (DeclError str) = DeclError str- relabel iai env (DeclAnnot decl annots) =- DeclAnnot (relabel iai env decl) (map (relabel iai env) annots)- relabel iai env (DeclFixity (fixclass,n,fixids)) =- DeclFixity (relabel iai env fixclass, n, map (relabel iai env) fixids)--instance Relabel Annot where- relabel iai env (AnnotArity (p,id) n) = AnnotArity (p,mkLambdaBound iai id) n- relabel iai env (AnnotPrimitive (p,id) pstr) = - AnnotPrimitive (p,mkLambdaBound iai id) pstr- relabel iai env (AnnotNeed idss) = - AnnotNeed (map (map (mkLambdaBound iai)) idss)- relabel _ env (AnnotUnknown) = AnnotUnknown--instance Relabel Rhs where- relabel iai env (Unguarded exp) = Unguarded (relabel iai env exp)- relabel iai env (Guarded gdexps) =- Guarded (map (\(gd,exp)-> (relabel iai env gd, relabel iai env exp)) - gdexps)--instance Relabel Type where- relabel iai env (TypeCons p c typs) = - TypeCons p (lookupTyCls env c) (map (relabel iai env) typs)- relabel iai env (TypeApp t1 t2) = - TypeApp (relabel iai env t1) (relabel iai env t2)- relabel iai env (TypeVar p v) = - TypeVar p (mkTyVar iai v)- relabel iai env (TypeStrict p t) = - TypeStrict p (relabel iai env t)--instance Relabel Sig where- relabel iai env (Sig pis typ) = - Sig (relabelPosIds iai pis) (relabel iai env typ)--instance Relabel Simple where- relabel iai env (Simple p id pis) = - Simple p (mkTyCon iai id) (relabelPosIds iai pis)--instance Relabel Context where- relabel iai env (Context p id pis) = - Context p (mkClass iai id) (relabelPosIds iai pis)--instance Relabel Constr where- relabel iai env (Constr p id mbs) =- Constr p (lookEnv env id) (map locust mbs)- where - locust (Nothing,typ) = (Nothing,relabel iai env typ)- locust (Just pis,typ) = - (Just (relabelRealPosIds env pis),relabel iai env typ)- relabel iai env (ConstrCtx fvs ctxs p id mbs) =- ConstrCtx (relabelPosIds iai fvs) (map (relabel iai env) ctxs) p- (lookEnv env id) (map locust mbs)- where - locust (Nothing,typ) = (Nothing,relabel iai env typ)- locust (Just pis,typ) = - (Just (relabelRealPosIds env pis),relabel iai env typ)--instance Relabel Field where- relabel iai env (FieldExp p id exp) = - FieldExp p (mkField iai id) (relabel iai env exp)- relabel iai env (FieldPun p id) = FieldPun p (mkField iai id)--instance Relabel Stmt where- relabel iai env (StmtExp exp) = StmtExp (relabel iai env exp)- relabel iai env (StmtBind pat exp) = - StmtBind (relabel iai env pat) (relabel iai env exp)- relabel iai env (StmtLet decls) = StmtLet (relabel iai env decls)--instance Relabel Qual where- relabel iai env (QualPatExp pat exp) = - QualPatExp (relabel iai env pat) (relabel iai env exp)- relabel iai env (QualExp exp) = QualExp (relabel iai env exp)- relabel iai env (QualLet decls) = QualLet (relabel iai env decls)--instance Relabel FunDep where- relabel iai env (as :->: bs) =- (map (mkTyVar iai) as) :->: (map (mkTyVar iai) bs)----- This is where the non-trivial syntax types start. Local defns (let-bound)--- and lhs patterns (lambda-bound) must be added to the environment before--- relabeling the rhs of a function or binding.--instance Relabel Fun where- relabel iai env (Fun pats rhs ds@(DeclsParse decls)) =- let (irrefutableDeclIds,declEnv) = extendEnv undefined iai vi env decls- (irrefutableIds,newEnv) = - foldrPat (addPat iai Refutable vi) declEnv pats - in- Fun (map (relabel iai newEnv) pats) (relabel iai newEnv rhs) - (addVars iai newEnv - (nubBy (\x y -> show x == show y) -- for shadowing of scopes- (irrefutableDeclIds++irrefutableIds)) - (relabel iai newEnv ds))--instance Relabel Alt where- -- only used for Alts in cases, not in pattern bindings- relabel iai env (Alt pat rhs ds@(DeclsParse decls)) =- let (irrefutableDeclIds,declEnv) = extendEnv undefined iai vi env decls- (irrefutableIds,newEnv) = - addPat iai Refutable vi pat declEnv- in- Alt (relabel iai newEnv pat) (relabel iai newEnv rhs) - (addVars iai newEnv (nubBy (\x y -> show x == show y) -- for scope - (irrefutableDeclIds++irrefutableIds)) - (relabel iai newEnv ds))--instance Relabel Exp where- relabel iai env (ExpScc str exp) = ExpScc str (relabel iai env exp)- relabel iai env (ExpDict exp) = ExpDict (relabel iai env exp)- relabel iai env (ExpFatbar e1 e2) = - ExpFatbar (relabel iai env e1) (relabel iai env e2)- relabel iai env (ExpFail) = ExpFail- relabel iai env (ExpLambda p pats exp) =- let (irrefutableIds,newEnv) = - foldrPat (addPat iai Refutable vi) env pats in- ExpLambda p (map (relabel iai newEnv) pats) - ((if null irrefutableIds - then id else ExpLet p (addVars iai newEnv irrefutableIds noDecls))- (relabel iai newEnv exp))- relabel iai env (ExpLet p ds@(DeclsParse decls) exp) =- let (irrefutableIds,newEnv) = extendEnv undefined iai vi env decls in- ExpLet p (addVars iai newEnv irrefutableIds (relabel iai newEnv ds)) - (relabel iai newEnv exp)- relabel iai env (ExpDo p stmts) =- ExpDo p (doStmts env stmts)- where doStmts env [] = []- doStmts env (s@(StmtExp _):ss) = relabel iai env s: doStmts env ss- doStmts env (s@(StmtBind pat _):ss) =- let (irrefutableIds,newEnv) = addPat iai Refutable vi pat env - in- relabel iai newEnv s : - (if null irrefutableIds - then id - else (StmtLet (addVars iai newEnv irrefutableIds noDecls):))- (doStmts newEnv ss)- doStmts env (s@(StmtLet (DeclsParse decls)):ss) =- let (irrefutableIds,newEnv) = - extendEnv undefined iai vi env decls - StmtLet reDecls = relabel iai newEnv s- in (StmtLet (addVars iai newEnv irrefutableIds reDecls) - : doStmts newEnv ss)- relabel iai env (ExpCase p exp alts) =- ExpCase p (relabel iai env exp) (map (relabel iai env) alts)- relabel iai env (ExpIf p cond thn els) =- ExpIf p (relabel iai env cond) (relabel iai env thn) (relabel iai env els)- relabel iai env (ExpType p exp ctxs typ) =- ExpType p (relabel iai env exp) (map (relabel iai env) ctxs) - (relabel iai env typ)- relabel iai env (ExpRecord exp fields) =- ExpRecord (relabel iai env exp) (map (relabel iai env) fields)- relabel iai env (ExpApplication p exps) =- ExpApplication p (map (relabel iai env) exps)- relabel _ env (ExpVar p id) = ExpVar p (lookEnv env id)- relabel _ env (ExpCon p id) = ExpCon p (lookEnv env id)- relabel _ env (ExpVarOp p id) = ExpVarOp p (lookEnv env id)- relabel _ env (ExpConOp p id) = ExpConOp p (lookEnv env id)- relabel iai env (ExpInfixList p exps) = - relabel iai env (fixInfixList env exps)- relabel _ env (ExpLit p lit) = ExpLit p lit- relabel iai env (ExpList p exps) = ExpList p (map (relabel iai env) exps)- relabel iai env (PatAs p id pat) =- PatAs p (lookEnv env id) (relabel iai env pat)- relabel _ env (PatWildcard p) = PatWildcard p- relabel iai env (PatIrrefutable p pat) = - PatIrrefutable p (relabel iai env pat)- relabel iai env (PatNplusK p id1 id2 exp1 exp2 exp3) = -- *** No, No, NO- PatNplusK p (mkLambdaBound iai id1) (mkLambdaBound iai id2)- (relabel iai env exp1) (relabel iai env exp2) (relabel iai env exp3)----- `relabelPosIds' does the simplest possible renaming of a list of--- position/id pairs from the TokenId type to TraceId type.-relabelPosIds :: InitAuxInfo -> [(Pos,TokenId)] -> [(Pos,TraceId)]-relabelPosIds iai = map (\(p,i)->(p,mkLambdaBound iai i))---- `relabelRealPosIds' does the correct (as opposed to simplest) renaming--- of a list of position/id pairs from the TokenId type to TraceId type.-relabelRealPosIds :: Environment -> [(Pos,TokenId)] -> [(Pos,TraceId)]-relabelRealPosIds env = map (\(p,i)->(p,lookEnv env i))---- Create definitions for let-bound variants of irrefutable variables.-addVars :: InitAuxInfo -> Environment -> [TokenId] -> Decls TraceId - -> Decls TraceId-addVars iai env irrefutableIds (DeclsParse ds) =- DeclsParse (map mkDef irrefutableIds ++ ds)- where- mkDef id = - DeclFun noPos traceId- [Fun [] - (Unguarded (ExpVar noPos (modLambdaBound iai traceId))) noDecls]- where - traceId = lookEnv env id
− trans/AuxTypes.hs
@@ -1,175 +0,0 @@-module AuxTypes where--import Data.Char (isDigit,isUpper)-import Data.List (isPrefixOf)-import Syntax-import AssocTree-import TokenId (TokenId(Qualified),tPrelude,visImport,t_Tuple)-import SysDeps (packString)---- AuxiliaryInfo is the extra information we need to know about identifiers.-data AuxiliaryInfo = - Value {- variable or constructor -}- { args :: Int- , fixity :: Fixity- , priority :: Int- , letBound :: Bool - , traced :: Bool}- | TyCls TyCls -- needed for im/export of (..)- deriving (Show,Read)-data Fixity = L | R | Pre String | Def | None deriving (Eq,Show,Read)-data TyCls = Ty [String]{- data constructors -} [String]{- field labels -}- | Cls [String]{- methods -}- | Syn Int {- no. helper type syns -} TySynBody- deriving (Show,Read)-data TySynBody = - TApp TySynBody TySynBody | TFun | THelper | TVar Int {- arg no. -}- deriving (Show,Read)----- information needed for creating an AuixiliaryInfo--- currently only flag if original identifier definition is traced-newtype InitAuxInfo = InitAuxInfo Bool--defaultAuxInfo :: InitAuxInfo-defaultAuxInfo = InitAuxInfo False--initAuxInfo :: Bool {-traced-} -> InitAuxInfo-initAuxInfo = InitAuxInfo--untracedEmptyAux :: AuxiliaryInfo-untracedEmptyAux =- Value { args=(-1), fixity=Def, priority=9, letBound=True, traced=False}--emptyAux :: InitAuxInfo -> AuxiliaryInfo-emptyAux (InitAuxInfo tr) = - Value { args=(-1), fixity=Def, priority=9, letBound=True, traced=tr}--patternAux :: InitAuxInfo -> AuxiliaryInfo-patternAux (InitAuxInfo tr) = - Value { args=(-1), fixity=Def, priority=9, letBound=False, traced=tr}---- Identifier is used to distinguish varids from conids, and relate--- conids back to the type they belong to. It also relates methods--- to their class.-data Identifier = Var String | Con TypeSort String{-type-} String{-con-}- | Field String{-type-} String{-field-}- | Method String{-class-} String{-method-}- | TypeClass String- deriving (Show,Read,Eq,Ord)-data TypeSort = Data | Newtype deriving (Show,Read,Eq,Ord)--qual :: Identifier -> String -> Identifier-qual (Var v) m = Var (m++v)-qual (Con s t c) m = Con s t (m++c)-qual (Field t f) m = Field t (m++f)-qual (Method t f) m = Method t (m++f)-qual (TypeClass t) _ = TypeClass t--subTid :: Identifier -> TokenId-subTid (Var v) = qualTid v-subTid (Con t _ c) = possTuple c-subTid (Field t f) = qualTid f-subTid (Method c m) = qualTid m-subTid (TypeClass tc) = possTuple tc--qualTid i | isUpper (head i) && '.' `elem` i =- let (v,m) = break (=='.') (reverse i) in -- approximation- Qualified (packString (tail m)) (packString v)- | otherwise = visImport i--possTuple "()" = t_Tuple 0-possTuple s | "Prelude." `isPrefixOf` s =- let nm = drop 8 s in- if isDigit (head nm) then t_Tuple (read nm)- else visImport s-possTuple s = visImport s---- The main Environment is composed of two pieces...-type Environment = (AuxTree,IdentMap)---- AuxTree is an environment, associating each identifier with a unique--- AuxiliaryInfo.-type AuxTree = AssocTree Identifier AuxiliaryInfo---- IdentMap is an environment associating each constructor/field with--- its type, and each method with its class. We can encounter a--- constructor (or method) without its type (or class) in a fixity decl,--- but we then need to know its type (or class) to know whether it--- is exported or not. If an entity is neither a known constructor/field--- nor a known method, we assume it is just an ordinary variable.--- Types and classes are not stored in an IdentMap-type IdentMap = AssocTree TokenId{-con, var, or method-} Identifier---- `mkIdentMap' makes a little lookup table from data constructors and field--- names to their type name, and methods to their class. Additionally, it--- builds a list of all defined types, plus synonyms and class names, used--- to check that all exports have a referent.-mkIdentMap :: [Decl TokenId] -> (IdentMap,[TokenId])-mkIdentMap decls =- let dataDecls = concatMap dataDecl decls- classDecls = concatMap classDecl decls- in ( foldr addMethod (foldr addCon initAT dataDecls) classDecls- , map (\(x,_,_)->x) dataDecls ++ map fst classDecls - ++ concatMap typeSyn decls)- where- dataDecl (DeclData Nothing _ (Simple _ typ _) tycons _) = - [(typ,Newtype,tycons)]- dataDecl (DeclData (Just _) _ (Simple _ typ _) tycons _) = - [(typ,Data,tycons)]- dataDecl _ = []-- classDecl (DeclClass _ _ cls _ _ (DeclsParse decls)) = [(cls,decls)]- classDecl _ = []-- typeSyn (DeclType (Simple pos id vars) _) = [id]- typeSyn _ = []-- addCon :: (TokenId,TypeSort,[Constr TokenId]) -> IdentMap -> IdentMap- addCon (typ,typeSort,tycons) t = foldr doCon t tycons- where- doCon (Constr _ c fs) t = conAndFields c fs t- doCon (ConstrCtx _ _ _ c fs) t = conAndFields c fs t- conAndFields c fs t = addFields (addAT t const c- (Con typeSort styp (show c)))- styp fs- styp = show typ-- addFields :: IdentMap -> String -> [(Maybe [(t, TokenId)],b)] -> IdentMap- addFields t typ [] = t- addFields t typ ((Nothing,_):_) = t- addFields t typ ((Just posids,_):cs) = foldr doField (rest t) posids- where- doField (_,f) t = addAT t const f (Field typ (show f))- rest t = addFields t typ cs-- addMethod :: (TokenId,[Decl TokenId]) -> IdentMap -> IdentMap- addMethod (cls, decls) t = foldr doMethod t decls- where- doMethod (DeclVarsType pis ctxs typ) t = foldr pId t pis- doMethod _ t = t- pId (pos,meth) t = addAT t const meth- (Method (show cls) (show meth))--useIdentMap :: IdentMap -> TokenId -> Identifier-useIdentMap m v =- case lookupAT m v of- Just tc -> tc- Nothing -> Var (show v)---- The following hack is needed, because identMap only knows about global--- identifiers and because variables, field labels and methods share the--- same name space.-useEnvironment :: Environment -> TokenId -> Maybe AuxiliaryInfo-useEnvironment (env,identMap) id =- let v = useIdentMap identMap id in- case v of- -- a field or method may be shadowed by a normal variable- -- hence have to search for such a variable first- Field _ name -> case lookupAT env (Var name) of- Just info -> Just info- Nothing -> lookupAT env v- Method _ name -> case lookupAT env (Var name) of- Just info -> Just info- Nothing -> lookupAT env v- _ -> lookupAT env v
+ trans/Derive.hs view
@@ -0,0 +1,428 @@+-- Derive instances of standard classes.+-- Thus given a type declaration with a non-empty derive clause,+-- produce all the instances demanded.+module Derive (derive) where++import Language.Haskell.Exts.Annotated +import Wired (mkExpDeriveEqualEqual,mkExpDeriveAndAnd,mkExpDeriveTrue,mkExpDeriveFalse,qNameBuiltinIdent)+import SynHelp (Id(getId),appN,tyAppN,litInt,litString,litChar,conDeclName,conDeclArity+ ,mkQName, fieldDeclNames+ ,instHeadQName,declHeadName,declHeadTyVarBinds,tyVarBind2Type+ ,combineMaybeContexts)+import Environment (Environment, hasPriority)+import Debug.Trace++-- ----------------------------------------------------------------------------++-- Derive instances for all given classes for a data/newtype+derive :: Environment -> Decl l -> [Decl l]+derive env (DataDecl l dataOrNew maybeContext declHead qualConDecls maybeDeriving) =+ case maybeDeriving of+ Nothing -> []+ Just (Deriving _ instHeads) -> + map (deriveClass env maybeContext instTy tyVars conDecls . instHeadQName) + instHeads+ where+ tyVars = map tyVarBind2Type (declHeadTyVarBinds declHead)+ nameTy = declHeadName declHead+ instTy = tyAppN (TyCon l (UnQual l nameTy) : tyVars)+ conDecls = map getConDecl qualConDecls+ ++getConDecl :: QualConDecl l -> ConDecl l+getConDecl (QualConDecl _ Nothing Nothing conDecl) = conDecl+getConDecl (QualConDecl _ _ _ _) = + error "Derive.getConDecl: Cannot derive class instance for existentially quantified data constructor."+++-- Produce a class instance.+deriveClass :: + Environment -> + Maybe (Context l) -> -- context of the data type (should be empty)+ (Type l) -> -- type constructor with variable args to be made instance+ [Type l] -> -- type variables args of above+ [ConDecl l] -> -- constructor of data type+ QName l -> -- names of class to derive+ Decl l+deriveClass env maybeContext instTy tyVars conDecls className + | getId className == "Eq" = deriveEq l maybeContext' instTy conDecls + | getId className == "Ord" = deriveOrd l maybeContext' instTy conDecls+ | getId className == "Bounded" = deriveBounded l maybeContext' instTy conDecls+ | getId className == "Enum" = deriveEnum l maybeContext' instTy conDecls+ | getId className == "Read" = deriveRead env l maybeContext' instTy conDecls+ | getId className == "Show" = deriveShow env l maybeContext' instTy conDecls+ | getId className == "Ix" = deriveIx l maybeContext' instTy conDecls+ | otherwise = error "Derive.deriveClass: unknown class"+ where+ l = ann className+ -- this is a HACK that covers only the common cases+ -- for correct result would need to implement full context reduction+ -- and take the least fixpoint+ maybeContext' = + combineMaybeContexts maybeContext+ (Just (CxTuple l (map (\ty -> ClassA l className [ty]) tyVars)))+++-- ----------------------------------------------------------------------------++deriveEq :: l -> Maybe (Context l) -> (Type l) -> [ConDecl l] -> Decl l+deriveEq l maybeContext instTy conDecls =+ InstDecl l maybeContext (IHead l (deriveIdent "Eq" l) [instTy]) + (Just [InsDecl l (FunBind l (+ map matchEqConstr conDecls +++ [Match l (Symbol l "==") [PWildCard l, PWildCard l] + (UnGuardedRhs l (mkExpDeriveFalse l))+ Nothing]))])+ where+ names = newNames l+ -- mkExpEqual :: Exp l -> Exp l -> Exp l+ mkExpEqual e1 e2 = App l (App l (mkExpDeriveEqualEqual l) e1) e2+ -- matchEqConstr :: ConDecl l -> Match l+ matchEqConstr conDecl =+ Match l (Symbol l "==") + [PApp l (UnQual l conName) patALs, PApp l (UnQual l conName) patARs] + (UnGuardedRhs l + (foldr mkExpAnd (mkExpDeriveTrue l) (zipWith mkExpEqual expALs expARs)))+ Nothing+ where+ conName = conDeclName conDecl+ arity = conDeclArity conDecl+ (namesL, namesRest) = splitAt arity names+ namesR = take arity namesRest+ patALs = map (PVar l) namesL+ patARs = map (PVar l) namesR+ expALs = map (Var l . UnQual l) namesL+ expARs = map (Var l . UnQual l) namesR+ ++-- ----------------------------------------------------------------------------++deriveOrd :: l -> Maybe (Context l) -> (Type l) -> [ConDecl l] -> Decl l+deriveOrd l maybeContext instTy conDecls =+ InstDecl l maybeContext (IHead l (deriveIdent "Ord" l) [instTy])+ (Just [InsDecl l (FunBind l (+ concatMap matchCompareEqConstr conDecls +++ [Match l nameCompare [PVar l nameL, PVar l nameR]+ (UnGuardedRhs l+ (App l + (App l (Var l (deriveIdent "compare" l))+ (App l (Var l (UnQual l nameLocalFromEnum))+ (Var l (UnQual l nameL))))+ (App l (Var l (UnQual l nameLocalFromEnum))+ (Var l (UnQual l nameR)))))+ (Just (BDecls l [FunBind l (zipWith matchLocalFromEnum conDecls [0..])]))+ ]))])+ where+ nameL : nameR : names = newNames l+ nameCompare = Ident l "compare"+ nameLocalFromEnum = Ident l "localFromEnum"+ matchCompareEqConstr conDecl =+ if arity == 0 then [] else+ [Match l nameCompare + [PApp l (UnQual l conName) patALs, PApp l (UnQual l conName) patARs] + (UnGuardedRhs l + (foldr1 mkExpCase (zipWith mkExpCompare expALs expARs)))+ Nothing]+ where+ conName = conDeclName conDecl+ arity = conDeclArity conDecl+ (namesL, namesRest) = splitAt arity names+ namesR = take arity namesRest+ patALs = map (PVar l) namesL+ patARs = map (PVar l) namesR+ expALs = map (Var l . UnQual l) namesL+ expARs = map (Var l . UnQual l) namesR+ -- mkExpCase :: Exp l -> Exp l -> Exp l+ mkExpCase e1 e2 =+ Case l e1 + [Alt l (PApp l (deriveIdent "EQ" l) []) (UnGuardedAlt l e2) Nothing+ ,Alt l (PVar l nameL) (UnGuardedAlt l (Var l (UnQual l nameL))) Nothing]+ -- mkExpCompare :: Exp l -> Exp l -> Exp l+ mkExpCompare e1 e2 =+ App l (App l (Var l (deriveIdent "compare" l)) e1) e2+ -- matchLocalFromEnum :: ConDecl l -> Int -> Match l+ matchLocalFromEnum conDecl num =+ Match l nameLocalFromEnum [PApp l (UnQual l conName) args] + (UnGuardedRhs l (ExpTypeSig l (litInt l num) (TyCon l (qNameBuiltinIdent "Int" l)))) Nothing+ where+ conName = conDeclName conDecl+ args = replicate (conDeclArity conDecl) (PWildCard l)++-- ----------------------------------------------------------------------------++deriveBounded :: l -> Maybe (Context l) -> (Type l) -> [ConDecl l] -> Decl l+deriveBounded l maybeContext instTy conDecls =+ InstDecl l maybeContext (IHead l (deriveIdent "Bounded" l) [instTy])+ (if all (== 0) (map conDeclArity conDecls)+ then -- all constructors have no arguments (enumeration)+ (Just + [InsDecl l (PatBind l + (PVar l (Ident l "minBound")) Nothing+ (UnGuardedRhs l (Con l (UnQual l (conDeclName (head conDecls)))))+ Nothing)+ ,InsDecl l (PatBind l + (PVar l (Ident l "maxBound")) Nothing+ (UnGuardedRhs l (Con l (UnQual l (conDeclName (last conDecls)))))+ Nothing)])+ else -- exactly one constructor+ let [conDecl] = conDecls in+ (Just+ [InsDecl l (PatBind l + (PVar l (Ident l "minBound")) Nothing+ (UnGuardedRhs l + (appN + (Con l (UnQual l (conDeclName conDecl))+ :replicate (conDeclArity conDecl) + (Var l (deriveIdent "minBound" l)))))+ Nothing)+ ,InsDecl l (PatBind l + (PVar l (Ident l "maxBound")) Nothing+ (UnGuardedRhs l + (appN+ (Con l (UnQual l (conDeclName conDecl))+ :replicate (conDeclArity conDecl)+ (Var l (deriveIdent "maxBound" l)))))+ Nothing)]))++-- ----------------------------------------------------------------------------++deriveEnum :: l -> Maybe (Context l) -> (Type l) -> [ConDecl l] -> Decl l+deriveEnum l maybeContext instTy conDecls =+ -- assert: all (== 0) (map constrArity constrs) + InstDecl l maybeContext (IHead l (deriveIdent "Enum" l) [instTy])+ (Just + [InsDecl l (FunBind l (zipWith matchFromEnum conDecls [0..]))+ ,InsDecl l (FunBind l (zipWith matchToEnum conDecls [0..] ++ [failure]))+ ,InsDecl l (FunBind l + [Match l (Ident l "enumFrom") [PVar l name1]+ (UnGuardedRhs l+ (appN [Var l (deriveIdent "enumFromTo" l)+ ,var1+ ,Con l (UnQual l (conDeclName (last conDecls)))]))+ Nothing])+ ,InsDecl l (FunBind l+ [Match l (Ident l "enumFromThen") [PVar l name1,PVar l name2]+ (UnGuardedRhs l+ (appN [Var l (deriveIdent "enumFromThenTo" l)+ ,var1+ ,var2+ ,If l (appN+ [Var l (deriveSymbol ">=" l)+ ,App l (Var l (deriveIdent "fromEnum" l))+ (Var l (UnQual l name2))+ ,App l (Var l (deriveIdent "fromEnum" l))+ (Var l (UnQual l name1))])+ (Con l (UnQual l (conDeclName (last conDecls))))+ (Con l (UnQual l (conDeclName (head conDecls))))]))+ Nothing])]) + where+ name1:name2:_ = newNames l+ var1 = Var l (UnQual l name1)+ var2 = Var l (UnQual l name2)+ matchFromEnum conDecl num =+ Match l (Ident l "fromEnum") [PApp l (UnQual l (conDeclName conDecl)) []]+ (UnGuardedRhs l (litInt l num)) Nothing+ matchToEnum conDecl num =+ Match l (Ident l "toEnum") [PLit l (Int l num (show num))]+ (UnGuardedRhs l (Con l (UnQual l (conDeclName conDecl)))) Nothing+ failure = + Match l (Ident l "toEnum") [PWildCard l]+ (UnGuardedRhs l + (App l (Var l (deriveIdent "error" l))+ (litString l "toEnum: argument out of bounds")))+ Nothing++-- ----------------------------------------------------------------------------++deriveRead :: Environment -> l -> Maybe (Context l) -> (Type l) -> [ConDecl l] -> Decl l+deriveRead env l maybeContext instTy conDecls =+ InstDecl l maybeContext (IHead l (deriveIdent "Read" l) [instTy]) + (Just [InsDecl l (FunBind l (+ [Match l (Ident l "readsPrec") [PVar l name1]+ (UnGuardedRhs l (foldr1 alt . map expReadsPrec $ conDecls)) Nothing]))])+ where+ name1:_ = newNames l+ e1 `alt` e2 = appN [Var l (mkQName l "PreludeBasic.alt"), e1, e2]+ expReadsPrec conDecl =+ if arity == 0+ then readParen (mkExpDeriveFalse l) (yield conExp `thenLex` getId conName)+ else+ case conDecl of+ ConDecl _ _ _ ->+ readParen precGreaterPriority+ (foldl thenAp (yield conExp `thenLex` getId conName) (replicate arity readsArg))+ InfixConDecl _ _ _ _ -> + readParen precGreaterPriority+ (yield conExp `thenAp` readsArg `thenLex` getId conName `thenAp` readsArg)+ RecDecl _ _ fieldDecls ->+ let fieldNames = concatMap fieldDeclNames fieldDecls+ in (foldl thenCommaField (yield conExp `thenLex` getId conName `thenLex` "{" `thenField` head fieldNames)+ (tail fieldNames))+ `thenLex` "}"+ where+ infixl 6 `thenAp`, `thenLex`, `thenField`+ conName = conDeclName conDecl+ arity = conDeclArity conDecl+ conExp = Con l (UnQual l conName)+ priority = Environment.hasPriority env conName+ priorityPlus1 = priority + 1+ readParen eb e = appN [Var l (deriveIdent "readParen" l), eb, e]+ yield e = appN [Var l (mkQName l "PreludeBasic.yield"), e]+ e1 `thenLex` s = appN [Var l (mkQName l "PreludeBasic.thenLex"), e1, litString l s]+ e1 `thenAp` e2 = appN [Var l (mkQName l "PreludeBasic.thenAp"), e1, e2]+ precGreaterPriority = InfixApp l (Var l (UnQual l name1)) (QVarOp l (deriveSymbol ">" l)) (litInt l priority)+ readsArg = appN [Var l (deriveIdent "readsPrec" l), litInt l priorityPlus1]+ readsArg0 = appN [Var l (deriveIdent "readsPrec" l), litInt l 0]+ p `thenField` fieldName = p `thenLex` getId fieldName `thenLex` "=" `thenAp` readsArg0+ p `thenCommaField` fieldName = p `thenLex` "," `thenField` fieldName++-- ----------------------------------------------------------------------------++deriveShow :: Environment -> l -> Maybe (Context l) -> (Type l) -> [ConDecl l] -> Decl l+deriveShow env l maybeContext instTy conDecls =+ InstDecl l maybeContext (IHead l (deriveIdent "Show" l) [instTy]) + (Just [InsDecl l (FunBind l (map matchShowsPrec conDecls))])+ where+ name1:names = newNames l+ matchShowsPrec conDecl =+ Match l (Ident l "showsPrec") + [PVar l name1, PApp l (UnQual l (conDeclName conDecl)) (map (PVar l) . take arity $ names)] + (UnGuardedRhs l body) Nothing+ where+ conName = conDeclName conDecl+ arity = conDeclArity conDecl+ args = map (Var l . UnQual l) . take arity $ names+ priority = Environment.hasPriority env conName+ priorityPlus1 = priority + 1+ body = if arity == 0 + then showStringExp (getId conName)+ else+ case conDecl of+ ConDecl _ _ _ -> + appN [Var l (deriveIdent "showParen" l)+ ,appN [Var l (deriveSymbol ">" l), Var l (UnQual l name1), litInt l priority]+ ,showStringExp (getId conName ++ " ") `compose`+ foldr1 composeSpace (map (showPrec priorityPlus1) args)]+ InfixConDecl _ _ _ _ ->+ appN [Var l (deriveIdent "showParen" l)+ ,appN [Var l (deriveSymbol ">" l), Var l (UnQual l name1), litInt l priority]+ ,showPrec priorityPlus1 (Var l (UnQual l (names!!0))) `compose`+ showStringExp (' ' : getId conName ++ " ") `compose`+ showPrec priorityPlus1 (Var l (UnQual l (names!!1)))]+ RecDecl _ _ fieldDecls ->+ let fieldNames = concatMap fieldDeclNames fieldDecls+ in showStringExp (getId conName ++ "{") `compose`+ foldr1 composeComma (zipWith showField fieldNames args) `compose` showCharExp '}'+ showStringExp s = appN [Var l (deriveIdent "showString" l), litString l s]+ showCharExp c = appN [Var l (deriveIdent "showChar" l), litChar l c]+ e1 `compose` e2 = appN [Var l (deriveSymbol "." l), e1, e2]+ e1 `composeSpace` e2 = e1 `compose` showCharExp ' ' `compose` e2+ e1 `composeComma` e2 = e1 `compose` showCharExp ',' `compose` e2+ showField fieldName e =+ showStringExp (getId fieldName) `compose` showCharExp '=' `compose` showPrec 0 e+ showPrec d e = appN [Var l (deriveIdent "showsPrec" l), litInt l d, e]+++-- ----------------------------------------------------------------------------++deriveIx :: l -> Maybe (Context l) -> (Type l) -> [ConDecl l] -> Decl l+deriveIx l maybeContext instTy conDecls =+ InstDecl l maybeContext (IHead l (deriveIdent "Ix" l) [instTy]) + (Just (map (InsDecl l) (if all (==0) (map conDeclArity conDecls) then ixEnumeration else ixSingleConstructor)))+ where+ ixEnumeration =+ [FunBind l [Match l (Ident l "range") [PTuple l [PVar l lName, PVar l uName]] (UnGuardedRhs l + (appN [Var l (deriveIdent "map" l)+ ,toEnumVar 'r'+ ,appN [Var l (deriveIdent "enumFromTo" l)+ ,appN [fromEnumVar 'r', Var l (UnQual l lName)]+ ,appN [fromEnumVar 'r', Var l (UnQual l uName)]]]))+ (Just (BDecls l (declsToEnum 'r' ++ declsFromEnum 'r')))]+ ,FunBind l [Match l (Ident l "index") [PTuple l [PVar l lName, PVar l uName], PVar l iName] (UnGuardedRhs l+ (InfixApp l (appN [fromEnumVar 'i', Var l (UnQual l iName)]) (QVarOp l (deriveSymbol "-" l)) + (appN [fromEnumVar 'i', Var l (UnQual l uName)])))+ (Just (BDecls l (declsFromEnum 'i')))]+ ,FunBind l [Match l (Ident l "inRange") [PTuple l [PVar l lName, PVar l uName], PVar l iName] (UnGuardedRhs l+ (appN [Var l (deriveIdent "inRange" l)+ ,Tuple l [appN [fromEnumVar 'n', Var l (UnQual l lName)]+ ,appN [fromEnumVar 'n', Var l (UnQual l uName)]]+ ,appN [fromEnumVar 'n', Var l (UnQual l iName)]]))+ (Just (BDecls l (declsFromEnum 'n')))]]+ where+ lName:uName:iName:_ = newNames l+ fromEnumVar prefix = Var l (deriveIdent (prefix : "fromEnum") l)+ toEnumVar prefix = Var l (deriveIdent (prefix : "toEnum") l)+ -- declsFromEnum :: [Decl l]+ declsFromEnum prefix = + [TypeSig l [(Ident l (prefix : "fromEnum"))] (TyFun l instTy (TyCon l (deriveIdent "Int" l)))+ ,FunBind l (zipWith (matchFromEnum prefix) conDecls [0..])]+ declsToEnum prefix =+ [TypeSig l [(Ident l (prefix : "toEnum"))] (TyFun l (TyCon l (deriveIdent "Int" l)) instTy)+ ,FunBind l (zipWith (matchToEnum prefix) conDecls [0..])]+ matchFromEnum prefix conDecl num =+ Match l (Ident l (prefix : "fromEnum")) [PApp l (UnQual l (conDeclName conDecl)) []]+ (UnGuardedRhs l (litInt l num)) Nothing+ matchToEnum prefix conDecl num =+ Match l (Ident l (prefix : "toEnum")) [PLit l (Int l num (show num))] + (UnGuardedRhs l (Con l (UnQual l (conDeclName conDecl)))) Nothing+ ixSingleConstructor =+ [FunBind l [Match l (Ident l "range") [pTupleConLU] (UnGuardedRhs l + (foldr ($) (appN [Var l (deriveIdent "return" l), conIVars]) (zipWith3 rangeComb lvars uvars iNames)))+ Nothing]+ ,FunBind l [Match l (Ident l "index") [pTupleConLU, pConI] (UnGuardedRhs l+ (foldl (flip ($)) (indexExp (head lvars) (head uvars) (head ivars)) + (tail (zipWith3 indexComb lvars uvars ivars))))+ Nothing]+ ,FunBind l [Match l (Ident l "inRange") [pTupleConLU, pConI] (UnGuardedRhs l+ (foldr1 andExp (zipWith3 inRangeExp lvars uvars ivars)))+ Nothing]]+ where+ [conDecl] = conDecls+ conName = conDeclName conDecl+ arity = conDeclArity conDecl+ (lNames, names1) = splitAt arity (newNames l)+ (uNames, names2) = splitAt arity names1+ iNames = take arity names2+ lvars = map (Var l . UnQual l) lNames+ uvars = map (Var l . UnQual l) uNames+ ivars = map (Var l . UnQual l) iNames+ conIVars = appN (Con l (UnQual l conName) : ivars)+ pTupleConLU = PTuple l [PApp l (UnQual l conName) (map (PVar l) lNames)+ ,PApp l (UnQual l conName) (map (PVar l) uNames)]+ pConI = PApp l (UnQual l conName) (map (PVar l) iNames)+ -- rangeComb :: Exp l -> Exp l -> Name l -> Exp l -> Exp l+ rangeComb le ue ie cont = + InfixApp l (appN [Var l (deriveIdent "range" l), Tuple l [le, ue]]) (QVarOp l (deriveSymbol ">>=" l))+ (Lambda l [PVar l ie] cont)+ indexExp le ue ie = appN [Var l (deriveIdent "index" l), Tuple l [le, ue], ie]+ -- indexComb :: Exp l -> Exp l -> Exp l -> Exp l -> Exp l+ indexComb le ue ie ee =+ InfixApp l (indexExp le ue ie) (QVarOp l (deriveSymbol "+" l)) + (InfixApp l (appN [Var l (deriveIdent "rangeSize" l), Tuple l [le, ue]]) + (QVarOp l (deriveSymbol "*" l)) ee)+ inRangeExp le ue ie = appN [Var l (deriveIdent "inRange" l), Tuple l [le, ue], ie]+ -- andExp :: Exp l -> Exp l -> Exp l+ andExp e1 e2 = InfixApp l e1 (QVarOp l (deriveSymbol "&&" l)) e2++-- ----------------------------------------------------------------------------++-- Infinite list of parameter names in derived code.+-- Only need to avoid conflict with names of the methods of derived classes.+newNames :: l -> [Name l]+newNames l = map (Ident l . ('y':) . show) [1..]++-- syntax helpers:++mkExpAnd :: Exp l -> Exp l -> Exp l+mkExpAnd e1 e2 = App l (App l (mkExpDeriveAndAnd l) e1) e2+ where + l = ann e1++-- QNames introduced by deriving are unqualified.+-- However, that assumes that the defining modules are imported unqualfied,+-- which may not be the case.+deriveIdent :: String -> l -> QName l+deriveIdent id l = UnQual l (Ident l id)++deriveSymbol :: String -> l -> QName l+deriveSymbol id l = UnQual l (Symbol l id)
+ trans/Environment.hs view
@@ -0,0 +1,804 @@+-- Environment for tracing transformation.+-- Holds information about all identifiers (names) in scope.++module Environment+ (Environment,Identifier,AuxiliaryInfo,Entity,HxEntity+ ,lookupExpEnv, lookupTypeEnv, eArity, eNo, eBody, eCons, eFields+ ,isClass,isSyn,isType+ ,TySynBody(TApp,TFun,THelper,TVar)+ ,Scope(Local,Global),isLocal+ ,globalEnv,moduleDefines,prettyEnv+ ,declsEnv,instanceEnv,maybeBindsEnv,bindsEnv, patsEnv+ ,arity,isUndefinedMethod,isLambdaBound,isTracedQName,fixPriority, hasPriority+ ,isExpandableTypeSynonym,typeSynonymBody+ ,nameTransTySynHelper,expandTypeSynonym+ ,imports,exports,hxEnvironmentToList,listToHxEnvironment+ ,defineNameEnv,env2Fixities,makeAllLambdaBound, lambdaVarEnv+ ,wiredEnv+ ) where++import Language.Haskell.Exts.Annotated hiding (Var,Con,Fixity,EVar)+import qualified Language.Haskell.Exts.Annotated as Syntax (Exp(Var,Con),Fixity(Fixity),ExportSpec(EVar))+import qualified Language.Haskell.Exts as Short(Assoc(..),QName(..),Name(..),SpecialCon(Cons))+import SynHelp (Id(getId),getQualified,mkQual,qual,isQual,isUnQual,notSupported+ ,tyVarBind2Name,declHeadTyVarBinds,declHeadName,instHeadQName,getArityFromConDecl+ ,getConDeclFromQualConDecl,getConstructorFromConDecl,eqName,mkName,mkQName+ ,getFieldNamesFromConDecl,decomposeFunType,isFunTyCon,tyAppN,getModuleNameFromModule+ ,UpdId(updateId),dropAnn,noSpan)+import Wired (qNamePreludeTrue,qNamePreludeFalse)+import qualified Data.Set as Set+import qualified Data.Map as Map (singleton,adjust)+import Relation+import Data.Maybe (fromMaybe,fromJust)+import Data.List (nubBy)+import Data.Char (isAlpha)++import Debug.Trace++data Scope = Global | Local++isLocal :: Scope -> Bool+isLocal Local = True+isLocal Global = False++-- The following types for representing HxEntities are unnecessarily complicated and bizarr.+-- However, their Show instances are used in the hx-files, and hence any type changes+-- would mean changing the hx-file format and thus rebooting Hat from scratch.+-- Only do that when it becomes really necessary.+type HxEntity = (Identifier,AuxiliaryInfo)++-- Identifier is used to distinguish varids from conids, and relate+-- conids back to the type they belong to. It also relates methods+-- to their class.+data Identifier = Var String | Con TypeSort String{-type-} String{-con-}+ | Field String{-type-} String{-field-}+ | Method String{-class-} String{-method-}+ | TypeClass String+ deriving (Show,Read,Eq,Ord)+data TypeSort = Data | Newtype deriving (Show,Read,Eq,Ord)++toTypeSort :: DataOrNew l -> TypeSort+toTypeSort (DataType _) = Data+toTypeSort (NewType _) = Newtype++-- AuxiliaryInfo is the extra information we need to know about identifiers.+data AuxiliaryInfo = + Value {- variable or constructor -}+ { args :: Int+ , fixity :: Fixity+ , priority :: Int+ , letBound :: Bool + , traced :: Bool}+ | TyCls TyCls -- needed for im/export of (..)+ deriving (Eq,Ord,Show,Read)+data Fixity = L | R | Pre String | Def | None deriving (Eq,Ord,Show,Read)+data TyCls = Ty [String]{- data constructors -} [String]{- field labels -}+ | Cls [String]{- methods -}+ | Syn Int {- no. helper type syns -} TySynBody+ deriving (Eq,Ord,Show,Read)+data TySynBody = + TApp TySynBody TySynBody | TFun | THelper | TVar Int {- arg no. -}+ deriving (Eq,Ord,Show,Read)++-- SrcSpanInfo for the definition of a name.+-- For variables and methods the span encompasses the complete definition (equations).+-- For data constructors and fields the span encompasses only the name itself.+-- From infix declarations and type signatures only an empty src can be determined.+-- Methods can have many spans, as there may be many definitions in a class and several instances.+-- Fields can have many spans, but only one is currently being used (dubious).+-- For types and classes there is no span.++data Entity + = EVar {eId :: String, eSrc :: SrcSpanInfo, eArity :: Int, eFixity :: Fixity, ePriority :: Int+ ,eLetBound :: Bool, eTraced :: Bool}+ | ECon {eId :: String, eSrc :: SrcSpanInfo, eArity :: Int, eFixity :: Fixity, ePriority :: Int+ ,eTraced :: Bool, eTy :: String, eTySort :: TypeSort, eFields :: [String]}+ | EField {eId :: String, eSrcs :: [SrcSpanInfo], eArity :: Int, eFixity :: Fixity, ePriority :: Int+ ,eTraced :: Bool, eTy :: String}+ | EMethod {eId :: String, eSrcs :: [SrcSpanInfo], eArity :: Int, eFixity :: Fixity, ePriority :: Int+ ,eTraced :: Bool, eCls :: String}+ | EType {eId :: String, eCons :: [String], eFields :: [String]}+ | ESyn {eId :: String, eNo :: Int, eBody :: TySynBody}+ | EClass {eId :: String, eMethods :: [String]}+ | ESig {eId :: String} -- type signature for an expression identifier, needed for methods in classes+ | EInfix {eId :: String, eFixity :: Fixity, ePriority :: Int} -- infix info for an expression identifier+ deriving (Eq, Ord, Show)++defaultVar :: Entity+defaultVar = EVar {eId = undefined, eSrc = noSpan, eArity = undefined, eFixity = Def+ ,ePriority = 9, eLetBound = True, eTraced = undefined}++eVar :: String -> SrcSpanInfo -> Int -> Bool -> Entity+eVar id s a t = defaultVar {eId = id, eSrc = s, eArity = a, eTraced = t}++defaultCon :: Entity+defaultCon = ECon {eId = undefined, eSrc = noSpan, eArity = undefined, eFixity = Def+ ,ePriority = 9, eTraced = undefined+ ,eTy = undefined, eTySort = undefined, eFields = undefined}++eCon :: String -> SrcSpanInfo -> Int -> String -> TypeSort -> [String] -> Bool -> Entity+eCon id s a ty ts fields t = + defaultCon {eId = id, eSrc = s, eArity = a, eTy = ty, eTySort = ts, eFields = fields, eTraced = t}++defaultField :: Entity +defaultField = EField {eId = undefined, eSrcs = [], eFixity = Def, ePriority = 9+ ,eArity = 1, eTraced = False, eTy = undefined}++eField :: String -> SrcSpanInfo -> String -> Bool -> Entity+eField id s ty t = defaultField {eId = id, eSrcs = [s], eTy = ty, eTraced = t}++defaultMethod :: Entity+defaultMethod = EMethod {eId = undefined, eSrcs = [], eFixity = Def, ePriority = 9+ ,eArity = -1, eTraced = False, eCls = undefined}++eMethod :: String -> [SrcSpanInfo] -> String -> Bool -> Entity+eMethod id s cls t = defaultMethod {eId = id, eSrcs = s, eCls = cls, eTraced = t}++eType :: String -> [String] -> [String] -> Entity+eType id cons fields = EType {eId = id, eCons = cons, eFields = fields}++eSyn :: String -> Int -> TySynBody -> Entity+eSyn id n body = ESyn {eId = id, eNo = n, eBody = body}++eClass :: String -> [String] -> Entity+eClass id methods = EClass {eId = id, eMethods = methods}++eSig :: String -> Entity+eSig id = ESig {eId = id}++eInfix :: String -> Fixity -> Int -> Entity+eInfix id f p = EInfix {eId = id, eFixity = f, ePriority = p}++type Environment = Relation (QName ()) Entity++isVar :: Entity -> Bool+isVar EVar{} = True+isVar _ = False++isCon :: Entity -> Bool+isCon ECon{} = True+isCon _ = False++isField :: Entity -> Bool+isField EField{} = True+isField _ = False++isMethod :: Entity -> Bool+isMethod EMethod{} = True+isMethod _ = False++isType :: Entity -> Bool+isType EType{} = True+isType _ = False++isSyn :: Entity -> Bool+isSyn ESyn{} = True+isSyn _ = False++isClass :: Entity -> Bool+isClass EClass{} = True+isClass _ = False++isSig :: Entity -> Bool+isSig ESig{} = True+isSig _ = False++isInfix :: Entity -> Bool+isInfix EInfix{} = True+isInfix _ = False++-- Is an expression entity, that is, variable, data constructor, method or field.+isExp :: Entity -> Bool+isExp e = isVar e || isCon e || isField e || isMethod e || isSig e || isInfix e++-- Is a type, type synoym or class+isTySynClass :: Entity -> Bool+isTySynClass e = isType e || isSyn e || isClass e++entity2HxEntity :: Entity -> HxEntity+entity2HxEntity e + | isVar e =+ (Var (eId e)+ ,Value{args = eArity e, fixity = eFixity e, priority = ePriority e, letBound = eLetBound e+ ,traced = eTraced e})+ | isCon e =+ (Con (eTySort e) (eTy e) (eId e)+ ,Value{args = eArity e, fixity = eFixity e, priority = ePriority e, letBound = True, traced = eTraced e})+ | isField e =+ (Field (eTy e) (eId e)+ ,Value{args = eArity e, fixity = eFixity e, priority = ePriority e, letBound = True, traced = eTraced e})+ | isMethod e =+ (Method (eCls e) (eId e)+ ,Value{args = eArity e, fixity = eFixity e, priority = ePriority e, letBound = True, traced = eTraced e})+ | isType e =+ (TypeClass (eId e), TyCls (Ty (eCons e) (eFields e)))+ | isSyn e =+ (TypeClass (eId e), TyCls (Syn (eNo e) (eBody e)))+ | isClass e =+ (TypeClass (eId e), TyCls (Cls (eMethods e)))+ | otherwise = error "Environment.entity2HxEntity: type signature or infix without definition."++hxEntity2Entity :: HxEntity -> Entity+hxEntity2Entity (Var id, val) = + EVar {eId = id, eSrc = noSpan, eArity = args val, eFixity = fixity val+ ,ePriority = priority val, eLetBound = letBound val, eTraced = traced val}+hxEntity2Entity (Con s t id, val) =+ ECon {eId = id, eSrc = noSpan, eArity = args val, eFixity = fixity val, ePriority = priority val+ ,eTraced = traced val, eTy = t, eTySort = s, eFields = []}+hxEntity2Entity (Field t id, val) =+ EField {eId = id, eSrcs = [], eArity = args val, eFixity = fixity val, ePriority = priority val+ ,eTraced = traced val, eTy = t}+hxEntity2Entity (Method cls id, val) =+ EMethod {eId = id, eSrcs = [], eArity = args val, eFixity = fixity val, ePriority = priority val+ ,eTraced = traced val, eCls = cls}+hxEntity2Entity (TypeClass id, TyCls (Ty cons fields)) = + EType {eId = id, eCons = cons, eFields = fields}+hxEntity2Entity (TypeClass id, TyCls (Syn n body)) =+ ESyn {eId = id, eNo = n, eBody = body}+hxEntity2Entity (TypeClass id, TyCls (Cls methods)) =+ EClass {eId = id, eMethods = methods}++-- Produce environment for one unqualified name.+singleton :: Entity -> Environment+singleton entity = Map.singleton (UnQual () (mkName () (eId entity))) (Set.singleton entity)++-- Produce environment of unqualified names.+fromList :: [Entity] -> Environment+fromList = listToRelation . map (\entity -> (UnQual () (mkName () (eId entity)),entity))+++-- Is the given entity owned by any entity in the given set?+-- Ownership means constructor/field of a data type or method of a class.+isOwned :: Entity -> Set.Set Entity -> Bool+isOwned e owners + | isCon e = not . Set.null . Set.filter (isTypeId (eTy e)) $ owners+ | isField e = not . Set.null . Set.filter (isTypeId (eTy e)) $ owners+ | isMethod e = not . Set.null . Set.filter (isClassId (eCls e)) $ owners+ | otherwise = False++-- Check whether given entity is a type of given id.+isTypeId :: String -> Entity -> Bool+isTypeId id e = isType e && id == eId e++-- Check whether given entity is a class of given id.+isClassId :: String -> Entity -> Bool+isClassId id e = isClass e && id == eId e++-- -----------------------------------------------------------------------------------+-- Obtain an environment from parts of a syntax tree.++lambdaVarEnv :: Bool -> QName SrcSpanInfo -> Environment+lambdaVarEnv tracing id = singleton ((eVar (getId id) (ann id) 0 tracing) {eLetBound=False})++-- Create global environment of this module, given whether it is tracing (or trusted) and+-- the complete import environment.+globalEnv :: Bool -> Module SrcSpanInfo -> Environment -> Environment+globalEnv tracing mod importEnv = env+ where+ env = unionRelations [importEnv,unqualDefEnv,qualDefEnv]+ unqualDefEnv = moduleDefines tracing env mod -- tying knot of environments here+ qualDefEnv = qual (dropAnn (getModuleNameFromModule mod)) `mapDom` unqualDefEnv++-- Get the environment for all top-level definitions of a module.+-- Post-condition: Only produce unqualified QNames.+-- Take complete environment of module for lookups (cycle)+moduleDefines :: Bool -> Environment -> Module SrcSpanInfo -> Environment+moduleDefines tracing fullEnv (Module _ _ _ _ decls) = declsEnv tracing fullEnv decls++-- Determine local environment for given optional binds.+-- Post-condition: environment will only contain local variable bindings,+-- no types, classes, data constructors, fields or methods.+maybeBindsEnv :: Bool -> Maybe (Binds SrcSpanInfo) -> Environment+maybeBindsEnv tracing = maybe emptyRelation (bindsEnv tracing)++-- Determine local environment for given binds.+-- Post-condition: environment will only contain local variable bindings,+-- no types, classes, data constructors, fields or methods.+bindsEnv :: Bool -> Binds SrcSpanInfo -> Environment+bindsEnv tracing (BDecls _ decls) = declsEnv tracing emptyRelation decls+bindsEnv _ (IPBinds l _) = notSupported l "binding group for implicit parameters"++-- Note that a fixity or type signature definition also yield an entity in the environment.+-- Such an entity needs to be merged with its main entity.+declsEnv :: Bool -> Environment -> [Decl SrcSpanInfo] -> Environment+declsEnv tracing fullEnv decls = unionRelationsWith mergeSets (map (declEnv tracing fullEnv) decls)+ where+ mergeSets :: Set.Set Entity -> Set.Set Entity -> Set.Set Entity+ mergeSets s1 s2 = Set.unions [vs,e1s,e2s]+ where+ (v1s,e1s) = Set.partition isExp s1+ (v2s,e2s) = Set.partition isExp s2+ vs = if Set.null v1s then v2s+ else if Set.null v2s then v1s+ else if Set.size v1s > 1 || Set.size v2s > 1 then error "Environment.declsEnv: conflicting expr names."+ else Set.singleton (mergeEntities (Set.findMin v1s) (Set.findMin v2s))+ -- pre-condition: both entities are expression entities.+ mergeEntities :: Entity -> Entity -> Entity+ mergeEntities e1 e2 + | isSig e1 = e2+ | isSig e2 = e1+ | isInfix e1 = e2 {eFixity = eFixity e1, ePriority = ePriority e1}+ | isInfix e2 = e1 {eFixity = eFixity e2, ePriority = ePriority e2} + | (isMethod e1 && isMethod e2) || (isField e1 && isField e2) + = e1 {eSrcs = eSrcs e1 ++ eSrcs e2+ ,eFixity = eFixity e1 `mergeFixities` eFixity e2+ ,ePriority = ePriority e1 `mergePriorities` ePriority e2}+ | otherwise = error "Environment.mergeEntities: cannot be merged."+ mergeFixities :: Fixity -> Fixity -> Fixity+ mergeFixities Def f = f+ mergeFixities f Def = f+ mergeFixities _ _ = error "Environment.moduleDefines: conflicting fixities."+ mergePriorities :: Int -> Int -> Int+ mergePriorities p1 p2 | p1 == 9 = p2+ | p2 == 9 = p1+ | otherwise = + error "Environment.moduleDefines: conflicting priorities."++declEnv :: Bool -> Environment -> Decl SrcSpanInfo -> Environment+declEnv _ fullEnv (TypeDecl _ declHead ty) =+ singleton (eSyn (getId tyName) n body)+ where+ tyName = declHeadName declHead+ Syn n body = splitSynonym fullEnv (map tyVarBind2Name (declHeadTyVarBinds declHead)) ty+declEnv _ _ (TypeFamDecl l declHead _) = + notSupported l "type family declaration"+declEnv tracing _ (DataDecl _ ts _ declHead qualConDecls _) = + fromList (eType (getId name) (map getId consNames) (map getId fieldNames) :+ [eCon (getId consName) (ann consName) (getArityFromConDecl conDecl) (getId name)+ (toTypeSort ts) (map getId (getFieldNamesFromConDecl conDecl)) tracing+ |conDecl <- conDecls, let consName = getConstructorFromConDecl conDecl] +++ [eField (getId fieldName) (ann fieldName) (getId name) tracing + |fieldName <- fieldNames])+ where+ name = declHeadName declHead+ conDecls = map getConDeclFromQualConDecl qualConDecls+ consNames = map getConstructorFromConDecl conDecls+ fieldNames = nubBy eqName (concatMap getFieldNamesFromConDecl conDecls)+declEnv _ _ (GDataDecl l _ _ declHead _ gadtDecls _) =+ notSupported l "gadt declaration"+declEnv _ _ (DataFamDecl l declHead _ _) = + notSupported l "data family declaration"+declEnv _ _ (TypeInsDecl _ _ _) = emptyRelation+declEnv _ _ (DataInsDecl l _ _ _ _) = + notSupported l "data family instance declaration"+declEnv _ _ (GDataInsDecl l _ _ _ _ _) =+ notSupported l "gadt family instance declaration"+declEnv _ _ (ClassDecl _ _ declHead _ Nothing) = + singleton (eClass (getId className) [])+ where+ className = declHeadName declHead+declEnv tracing finalEnv (ClassDecl _ _ declHead _ (Just classDecls)) =+ unionRelations + [singleton (eClass classId methodIds), methodRelation]+ where+ methodIds = map eId . Set.toAscList . rng $ methodRelation+ methodRelation = sig2Method `mapRng` (declsEnv tracing finalEnv decls)+ classId = getId className+ className = declHeadName declHead+ sig2Method :: Entity -> Entity+ sig2Method e | isSig e = eMethod (eId e) [] classId tracing + | isVar e = eMethod (eId e) [eSrc e] classId tracing+ | otherwise = error "Environment.declEnv: unexpected declaration in class."+ decls = map getDecl classDecls+ getDecl :: ClassDecl SrcSpanInfo -> Decl SrcSpanInfo+ getDecl (ClsDecl _ decl) = decl+ getDecl (ClsDataFam l _ _ _) = notSupported l "associated data type declaration"+ getDecl (ClsTyFam l _ _) = notSupported l "associated type synonym declaration"+ getDecl (ClsTyDef l _ _) = notSupported l + "default choice for an associated type synonym"+declEnv _ _ (InstDecl _ _ _ Nothing) = emptyRelation+declEnv tracing finalEnv (InstDecl _ _ instHead (Just instDecls)) = emptyRelation+ -- All entities defined in instance should be already in scope anyway; + -- class declarations also declare the methods.+ -- Have to avoid duplicate entries in environment.+ -- var2Method `mapRng` (declsEnv tracing finalEnv (map getDecl instDecls))+ -- where+ -- classId = getId (instHeadQName instHead)+ -- var2Method :: Entity -> Entity+ -- var2Method e | isVar e = eMethod (eId e) [eSrc e] classId tracing+ -- | otherwise = error "Environment.declEnv: unexpected declaration in instance."+ -- getDecl :: InstDecl SrcSpanInfo -> Decl SrcSpanInfo+ -- getDecl (InsDecl _ decl) = decl+ -- getDecl (InsType l _ _) = notSupported l "associated type definition"+ -- getDecl (InsData l _ _ _ _) = notSupported l "associated data type implementation"+ -- getDecl (InsGData l _ _ _ _ _) = notSupported l "GADT style assoicated data type type implementation"+declEnv _ _ (DerivDecl _ _ _) = emptyRelation+declEnv tracing _ (InfixDecl _ assoc maybePri ops) =+ fromList (map op2Entity ops)+ -- Environment only has valid entity information for fixity and priority,+ -- otherwise default values.+ where+ op2Entity :: Op l -> Entity+ op2Entity (VarOp _ name) = eInfix (getId name) fixityVal priorityVal+ op2Entity (ConOp _ name) = eInfix (getId name) fixityVal priorityVal+ -- Use Var here as well, as other arguments for Con are unknown here.+ fixityVal = case assoc of+ AssocNone _ -> None+ AssocLeft _ -> L+ AssocRight _ -> R+ priorityVal = fromMaybe 9 maybePri+declEnv _ _ (DefaultDecl _ _) = emptyRelation+declEnv _ _ (SpliceDecl l _) = + notSupported l "splice declaration"+declEnv tracing _ (TypeSig _ names _) =+ fromList [eSig (getId name) | name <- names]+ -- needed for methods in classes+declEnv tracing _ (FunBind l matches) = matchEnv l tracing (head matches)+declEnv tracing _ (PatBind l pat _ _ _) = patEnv l tracing pat+declEnv tracing _ (ForImp l _ _ _ name ty) =+ -- only for NoHat. import+ singleton (eVar (getId name) l (length tyArgs) tracing)+ where+ (tyArgs,_) = decomposeFunType ty+declEnv _ _ (ForExp _ _ _ _ _) = emptyRelation+declEnv _ _ (RulePragmaDecl _ _) = emptyRelation+declEnv _ _ (DeprPragmaDecl _ _) = emptyRelation+declEnv _ _ (WarnPragmaDecl _ _) = emptyRelation+declEnv _ _ (InlineSig _ _ _ _) = emptyRelation+declEnv _ _ (InlineConlikeSig _ _ _) = emptyRelation+declEnv _ _ (SpecSig _ _ _) = emptyRelation+declEnv _ _ (SpecInlineSig _ _ _ _ _) = emptyRelation+declEnv _ _ (InstSig _ _ _) = emptyRelation+declEnv _ _ (AnnPragma _ _) = emptyRelation+++-- Produce local environment for a non-empty class instance definition.+instanceEnv :: Bool -> Environment -> Decl SrcSpanInfo -> Environment+instanceEnv tracing finalEnv (InstDecl l maybeContext instHead (Just instDecls)) =+ var2Method `mapRng` (declsEnv tracing finalEnv (map getDecl instDecls))+ where+ classId = getId (instHeadQName instHead)+ var2Method :: Entity -> Entity+ var2Method e | isVar e = eMethod (eId e) [eSrc e] classId tracing+ | otherwise = error "Environment.declEnv: unexpected declaration in instance."+ getDecl :: InstDecl SrcSpanInfo -> Decl SrcSpanInfo+ getDecl (InsDecl _ decl) = decl+ getDecl (InsType l _ _) = notSupported l "associated type definition"+ getDecl (InsData l _ _ _ _) = notSupported l "associated data type implementation"+ getDecl (InsGData l _ _ _ _ _) = notSupported l "GADT style assoicated data type type implementation"+++matchEnv :: SrcSpanInfo -> Bool -> Match SrcSpanInfo -> Environment+matchEnv l tracing (Match _ name pats _ _) = + singleton (eVar (getId name) l (length pats) tracing)+matchEnv l tracing (InfixMatch _ pat name pats rhs maybeBinds) =+ matchEnv l tracing (Match l name (pat:pats) rhs maybeBinds)++patsEnv :: SrcSpanInfo -> Bool -> [Pat SrcSpanInfo] -> Environment+patsEnv l tracing pats = unionRelations (map (patEnv l tracing) pats)++-- All occurring variables are let-bound, because this function is for +-- pattern bindings.+-- Pass location of the whole definition, because that is recorded in environment.+patEnv :: SrcSpanInfo -> Bool -> Pat SrcSpanInfo -> Environment+patEnv l tracing (PVar _ name) = + singleton (eVar (getId name) l 0 tracing)+patEnv _ _ (PLit _ _) = emptyRelation+patEnv l tracing (PNeg _ pat) = patEnv l tracing pat+patEnv l tracing (PNPlusK l2 name _) = patEnv l tracing (PVar l2 name)+patEnv l tracing (PInfixApp _ patl _ patr) = unionRelations [patEnv l tracing patl, patEnv l tracing patr]+patEnv l tracing (PApp _ _ pats) = unionRelations . map (patEnv l tracing) $ pats+patEnv l tracing (PTuple _ pats) = unionRelations . map (patEnv l tracing) $ pats+patEnv l tracing (PList _ pats) = unionRelations . map (patEnv l tracing) $ pats+patEnv l tracing (PParen _ pat) = patEnv l tracing pat+patEnv l tracing (PRec _ _ patFields) = unionRelations . map (patField l tracing) $ patFields+patEnv l tracing (PAsPat _ name pat) = + unionRelations [singleton (eVar (getId name) l 0 tracing), patEnv l tracing pat]+patEnv _ _ (PWildCard _) = emptyRelation+patEnv l tracing (PIrrPat _ pat) = patEnv l tracing pat+patEnv l tracing (PatTypeSig _ pat _) = patEnv l tracing pat+patEnv l tracing (PViewPat _ _ pat) = patEnv l tracing pat+patEnv _ _ (PRPat l _) = notSupported l "regular list pattern"+patEnv _ _ (PXTag l _ _ _ _) = notSupported l "XML element pattern"+patEnv _ _ (PXETag l _ _ _) = notSupported l "XML singleton element pattern"+patEnv _ _ (PXPcdata l _) = notSupported l "XML PCDATA pattern"+patEnv _ _ (PXPatTag l _) = notSupported l "XML embedded pattern"+patEnv _ _ (PXRPats l _) = notSupported l "XML regular list pattern"+patEnv _ _ (PExplTypeArg l _ _) = notSupported l "explicit generics style type argument"+patEnv _ _ (PQuasiQuote l _ _) = notSupported l "quasi quote pattern"+patEnv l tracing (PBangPat _ pat) = patEnv l tracing pat++patField :: SrcSpanInfo -> Bool -> PatField SrcSpanInfo -> Environment+patField l tracing (PFieldPat _ _ pat) = patEnv l tracing pat+patField _ _ (PFieldPun l _) = notSupported l "field pun"+patField _ _ (PFieldWildcard _) = emptyRelation++-- -----------------------------------------------------------------------------------+-- Determine export and import environments++-- In the hx-file of a module only unqualified names are used +type HxEnvironment = Relation (Name ()) Entity -- Note: not HxEntity for simplicity++-- Determine the exports of a module+exports :: Bool -> Module SrcSpanInfo -> Environment -> HxEnvironment+exports tracing mod@(Module l maybeModuleHead _ _ _) env =+ case maybeModuleHead of+ Nothing -> exportList [Syntax.EVar l (UnQual l (Ident l "main"))]+ Just (ModuleHead _ _ _ Nothing) -> getQualified `mapDom` moduleDefines tracing env mod+ Just (ModuleHead _ _ _ (Just (ExportSpecList _ list))) -> exportList list+ where+ exportList list = getQualified `mapDom` unionRelations exports+ where+ exports = filterExportSpec env `map` list ++-- Determine exports for one export specification of the export list+filterExportSpec :: Environment -> ExportSpec l -> Environment+filterExportSpec env (EModuleContents _ moduleName) =+ (qual moduleNameT `mapDom` unqs) `intersectRelation` qs+ where+ moduleNameT = dropAnn moduleName+ (qs,nonqs) = partitionDom isQual env+ (unqs,_) = partitionDom isUnQual nonqs+filterExportSpec env eSpec = unionRelations [mSpec, mSub]+ where+ mSpec = restrictRng (not . isCon) (restrictDom (== qNameT) env)+ allOwners = rng mSpec+ subs = restrictRng (`isOwned` allOwners) env+ qNameT = dropAnn qName+ (qName,mSub) = case eSpec of+ Syntax.EVar _ qName -> (qName, emptyRelation)+ EAbs _ qName -> (qName, emptyRelation)+ EThingAll _ qName -> (qName, subs)+ EThingWith _ qName cNames -> + (qName, restrictDom ((`elem` map getId cNames) . getId) subs)++-- Assumes that list is in ascending order without duplicate names.+listToHxEnvironment :: [HxEntity] -> HxEnvironment+listToHxEnvironment = (getQualified `mapDom`) . fromList . map hxEntity2Entity++instance SrcInfo () where -- required for definition above+ toSrcInfo = undefined+ fromSrcInfo = undefined+ fileName _ = ""+ startLine _ = 0+ startColumn _ = 0++hxEnvironmentToList :: HxEnvironment -> [HxEntity]+hxEnvironmentToList = map entity2HxEntity . Set.toAscList . Relation.rng++-- Filter with one import declaration from the export environment of the imported module+imports :: HxEnvironment -> ImportDecl l -> Environment+imports exports importDecl = + if importQualified importDecl then qs else unionRelations [unqs, qs]+ where+ qs = mkQual (importQual importDecl) `mapDom` incoming+ unqs = UnQual () `mapDom` incoming+ listed = unionRelations (map (filterImportSpec isHiding exports) impSpecs)+ incoming = if isHiding then exports `minusRelation` listed else listed+ (isHiding,impSpecs) = case importSpecs importDecl of+ Nothing -> (True, []) + Just (ImportSpecList _ h impSpecs) -> (h,impSpecs)+ +-- Qualifier for any qualfied imports of the given import declaration.+-- If exists, the 'as' module name; otherwise the name of the imported module itself.+importQual :: ImportDecl l -> ModuleName ()+importQual imDecl = dropAnn (fromMaybe (importModule imDecl) (importAs imDecl))++-- Filter given environment with one import specification from an import list+filterImportSpec :: Bool -> HxEnvironment -> ImportSpec l -> HxEnvironment+filterImportSpec isHiding exports iSpec =+ unionRelations [fSpec,fSub]+ where+ fSpec = restrictRng consider (restrictDom (== nameT) exports)+ allOwners = rng fSpec+ subs = restrictRng (`isOwned` allOwners) exports+ nameT = dropAnn name+ (name,fSub,noSubSpec) = case iSpec of+ IVar _ name -> (name, emptyRelation, True)+ IAbs _ name -> (name, emptyRelation, True)+ IThingAll _ name -> (name, subs, False)+ IThingWith _ name cNames -> + (name, restrictDom ((`elem` map getId cNames) . getId) subs, False)+ consider = if isHiding && noSubSpec then const True else (not . isCon)+ +-- -------------------------------------------------------------------------------------+-- Handling type synonym++-- determines the outer functional or applicative part of a type synonym body+-- this part can then be expanded when transforming types for workers+-- the *final* environment is needed, because in the body of a type synonym+-- a type synonym may appear; because type synonyms shall not be recursive,+-- a blackhole cannot occur for type correct programs.+splitSynonym :: SrcInfo l => Environment -> [Name l] -> Type l -> TyCls+splitSynonym env tyVars rhs =+ case go rhs [] of+ Syn 1 THelper -> Syn 0 THelper -- nothing to split off (bogus THelper)+ syn -> syn+ where+ -- it is vital that this 'go' agrees with the 'go' in 'splitSynonym' in TraceTrans.+ go ty@(TyForall _ _ _ _) [] = Syn 1 THelper+ go (TyFun _ tyL tyR) [] = let Syn h tyR' = go tyR []+ in Syn (h+1) (TApp (TApp TFun THelper) tyR')+ go (TyTuple _ _ _) [] = Syn 1 THelper+ go (TyList _ _) [] = Syn 1 THelper+ go (TyApp _ tyL tyR) tys = go tyL (tyR:tys)+ go (TyVar _ tyVar) tys = Syn 0 (TVar (fromJust (elemIndexBy eqName tyVar tyVars)))+ go (TyCon _ tyCon) tys+ | isFunTyCon tyCon = case tys of+ [] -> Syn 1 THelper+ [ty] -> Syn 1 (TApp TFun THelper)+ [ty1,ty2] -> let Syn h tyR' = go ty2 []+ in Syn (h+1) (TApp (TApp TFun THelper) tyR')+ | isExpandableTypeSynonym env tyCon+ = go (expandTypeSynonym env tyCon tys) []+ | otherwise = Syn 1 THelper+ go (TyParen _ ty) tys = go ty tys+ go (TyInfix _ tyL tyCon tyR) tys =+ if isExpandableTypeSynonym env tyCon+ then go (expandTypeSynonym env tyCon (tyL:tyR:tys)) []+ else Syn 1 THelper+ go (TyKind l ty kind) _ = notSupported l "kind annotation in type synonym"+++elemIndexBy :: (a -> a -> Bool) -> a -> [a] -> Maybe Int+elemIndexBy eq x xs = go 0 xs+ where+ go c [] = Nothing+ go c (y:ys) = if x `eq` y then Just c else go (c+1) ys ++-- Expand only to expose function type constructors.+-- Uses the helper type synonyms introduced by the transformation.+expandTypeSynonym :: SrcInfo l => Environment -> QName l -> [Type l] -> Type l+expandTypeSynonym env tySyn tys =+ case typeSynonymBody env tySyn of+ Nothing -> error ("TraceTrans.expandTypeSynonym: " ++ show (getId tySyn) +++ " is not a type synonym.")+ Just body -> fst (go body 1)+ where+ l = ann tySyn+ -- go :: TySynBody -> Int -> (Type l, Int)+ go THelper n = (tyAppN (TyCon l (nameTransTySynHelper tySyn n) : tys), n+1)+ go (TVar v) n = (tys!!v, n)+ go TFun n = (TyCon l (Special l (FunCon l)), n)+ go (TApp tyL tyR) n = (TyApp l tyL' tyR', n2)+ where+ (tyL', n1) = go tyL n+ (tyR', n2) = go tyR n1++-- Names of helper synonyms are a bit of a hack; a name conflict is possible.+-- We just do not want to prefix all names in the namespace.+nameTransTySynHelper :: UpdId i => i -> Int -> i+nameTransTySynHelper syn no = updateId update syn+ where + update (Ident l name) = Ident l (name ++ "___" ++ show no)+ update (Symbol _ _) = + error "TraceTrans.nameTransTySynHelper: synonym name is a symbol."+++-- -------------------------------------------------------------------------------------+-- Looking up, inserting and mutating individual environment entries.++-- For generating an appropriate error message.+one :: Environment -> String -> [Entity] -> Entity+one env msg [] = error (prettyEnv env ++ msg ++ " not found.")+one env msg [x] = x+one env msg xs = error (prettyEnv env ++ msg ++ " ambigious. " ++ show xs)++prettyEnv :: (Pretty a, Ord a) => Relation a b -> String+prettyEnv = ("Environment: " ++) . foldr space "\n" . map prettyPrint . Set.toAscList . Relation.dom+ where+ space xs ys = xs ++ "," ++ ys++-- A name for a variable, data constructor, method or field:+lookupExpEnv :: Environment -> QName l -> Entity+lookupExpEnv env qName = + one env ("Environment.lookupExpEnv: `" ++ prettyPrint qName ++ "'")+ (filter isExp . Set.toList . applyRelation env $ dropAnn qName)++-- A name for a type, type synonym or class.+lookupTypeEnv :: Environment -> QName l -> Entity+lookupTypeEnv env qName =+ one env ("Environment.lookupTypeEnv: `" ++ prettyPrint qName ++ "'")+ (filter isTySynClass . Set.toList . applyRelation env $ dropAnn qName)+++-- Identifiers defined by pattern binding have arity 0.+ar :: AuxiliaryInfo -> Int+ar Value{args=a} = a+ar _ = 0+ +arity :: Environment -> QName l -> Maybe Int+arity env qName = Just (eArity (lookupExpEnv env qName))++isUndefinedMethod :: Environment -> Name l -> Bool+isUndefinedMethod env name = null (eSrcs entity)+ where+ entity = lookupExpEnv env (UnQual undefined name)++typeSynonymBody :: Environment -> QName l -> Maybe TySynBody+typeSynonymBody env qName = if isSyn entity then Just (eBody entity) else Nothing+ where+ entity = lookupTypeEnv env qName++isLambdaBound :: Environment -> QName l -> Bool+isLambdaBound env qName = if isVar entity then not (eLetBound entity) else False+ where + entity = lookupExpEnv env qName++isTracedQName :: Environment -> QName l -> Bool+isTracedQName env qName = eTraced (lookupExpEnv env qName)++isExpandableTypeSynonym :: Environment -> QName l -> Bool+isExpandableTypeSynonym env qName = isSyn entity && eNo entity > 0+ where+ entity = lookupTypeEnv env qName++-- Assumes all entities of given environment are expression variables.+makeAllLambdaBound :: Environment -> Environment+makeAllLambdaBound = mapRng (\e -> e {eLetBound = False})++-- Obtain combined fixity and priority+eFixPriority :: Entity -> Int+eFixPriority e = encode (eFixity e) (ePriority e)+ where+ encode Def _ = 3+ encode L n = 2 + (n*4)+ encode R n = 1 + (n*4)+ encode None n = 0 + (n*4)+ encode (Pre _) n = 0 + (n*4)+-- fixPriority _ = 3 -- default fixity and priority++fixPriority :: Environment -> QName l -> Int+fixPriority env qName = eFixPriority (lookupExpEnv env qName)++-- Obtain priority of given local name. Result in 0-9.+hasPriority :: Environment -> Name l -> Int+hasPriority env name = ePriority (lookupExpEnv env (UnQual () (dropAnn name)))++defineNameEnv :: Scope -> Environment -> (Name SrcSpanInfo -> Int -> Int -> Scope -> Scope -> a) -> + (Name SrcSpanInfo -> [Name SrcSpanInfo] -> Int -> Int -> a) -> [a]+defineNameEnv scope env defNameVar defNameCon = concatMap define nameEntries+ where+ hxEnv = getQualified `mapDom` env+ nameEntries = relationToList hxEnv+ define (name, e) + | isVar e && eLetBound e =+ [defNameVar (fmap (const (eSrc e)) name) (eFixPriority e) (eArity e) scope scope]+ | isCon e =+ [defNameCon (fmap (const (eSrc e)) name) (map (mkName noSpan) (eFields e)) (eFixPriority e) (eArity e)]+ | isField e =+ [defNameVar (fmap (const (head (eSrcs e))) name) (eFixPriority e) (eArity e) Global Global]+ | isMethod e =+ map (\l -> defNameVar (fmap (const l) name) (eFixPriority e) (eArity e) Global Local) (eSrcs e)+ | otherwise = [] -- for types and classes+++-- ----------------+-- Obtain all fixities from a given enviroment, suitable for fixing the parse tree.+-- Don't include identifiers that just have default fixity.+env2Fixities :: Environment -> [Syntax.Fixity]+env2Fixities env = + map makeFixity . filter (\entity -> isExp entity && eFixity entity /= Def) . Set.toAscList . rng $ env+ where+ makeFixity :: Entity -> Syntax.Fixity+ makeFixity e = Syntax.Fixity (transFixity (eFixity e)) (ePriority e) (mkName (eId e))+ where+ transFixity :: Fixity -> Short.Assoc+ transFixity None = Short.AssocNone+ transFixity L = Short.AssocLeft+ transFixity R = Short.AssocRight+ transFixity _ = error "Environment.env2Fixities: unexpected associativity."+ mkName :: String -> Short.QName+ mkName s = Short.UnQual (if isAlpha (head s) then Short.Ident s else Short.Symbol s)+ -- Intentionally never create a special name, because fixities must be UnQual.+++-- -------------------------+-- All identifiers whose bindings are fixed by the Haskell language+-- plus a few for bootstrapping+wiredEnv :: Environment+wiredEnv = listToRelation $+ [(qNamePreludeTrue (), eCon "True" noSpan 0 "Bool" Data [] False)+ ,(qNamePreludeFalse (), eCon "False" noSpan 0 "Bool" Data [] False)+ ,(Special () (UnitCon ()), eCon "()" noSpan 0 "()" Data [] False)+ ,(Special () (UnitCon ()), eType "()" ["()"] [])+ ,(Special () (ListCon ()), eType "[]" [":","[]"] [])+ ,(Special () (FunCon ()), eType "->" [] [])+ ,(Special () (Cons ()), (eCon ":" noSpan 2 "[]" Data [] False) {eFixity=R, ePriority=5})]+ ++ concatMap mkTuple [2..15]++mkTuple :: Int -> [(QName (), Entity)]+mkTuple n = [(Special () (TupleCon () Boxed n), eCon commas noSpan n commas Data [] False)+ ,(Special () (TupleCon () Boxed n), eType commas [commas] [])]+ where+ commas = replicate (n-1) ','
trans/Flags.hs view
@@ -5,85 +5,86 @@ and a simple function pF for printing information demanded by a flag. -} module Flags- (Flags,processArgs,pF- ,sUnix- ,sUnlit+ (Flags,processArgs ,sSourceFile- ,sUnderscore- ,sLex ,sParse- ,sTraceFns ,sPrelude ,sPreludes ,sIncludes ,sDbgTrusted ,sWrap- ,sRealFile ,sIBound ,sShowWidth- ,sShowIndent- ,sShowQualified ,sHatAuxFile ,sHatTransFile- ,sHatFileBase ,sSrcDir+ ,sFixities ) where -import System.IO-import OsOnly(fixRootDir,fixTypeFile,fixObjectFile- ,fixHatAuxFile,fixHatTransFile,fixHatTransDir,fixHatFileBase)-import Data.List(isPrefixOf,isSuffixOf)+import System.Console.GetOpt(getOpt,usageInfo,ArgOrder(..),OptDescr(..),ArgDescr(..))+import System.FilePath(FilePath(..),splitFileName,replaceExtension,takeExtension,(</>)) import Data.Char(isDigit) - data Flags = FF - {sRealFile :: String- ,sSourceFile :: String+ {sSourceFile :: String ,sHatAuxFile :: String ,sHatTransFile :: String- ,sHatFileBase :: String ,sIncludes :: [String] ,sPreludes :: [String] ,sSrcDir :: String --v Flags to control compilation- ,sUnix :: Bool -- either unix or RiscOS- ,sUnlit :: Bool -- unliterate the source code ,sPrelude :: Bool -- keep prelude defns in interface file --v Flags to control compilation for tracing ,sDbgTrusted :: Bool -- trust this module ,sWrap :: Bool -- wrap original defns rather than transforming ---v Flags for machine architecture / configuration- ,sUnderscore :: Bool -- force H'98 underscores- --v debugging flags - show program / import tables (after each compiler phase)- ,sLex :: Bool -- input after lexing ,sParse :: Bool -- ast after parsing- ,sTraceFns :: Bool -- ast after tracing transform (fns)- ,sIBound :: Bool -- aux tree after ast annotation+ ,sIBound :: Bool -- environment+ ,sFixities :: Bool -- fixity declarations in top-level scope --v pretty-printing flags ,sShowWidth :: Int -- width for showing intermediate program- ,sShowIndent :: Int -- indentation for nesting shown intermediate program- ,sShowQualified :: Bool -- show qualified ids as far as possible } deriving Show ---{- If first argument is True, then print second and third with formatting -}-pF :: Bool -> [Char] -> [Char] -> IO ()-pF flag title text =- if flag - then hPutStr stderr ( "======\t"++title++":\n"++text++"\n") - else return ()--{- ----------------------------------------------------------------------------All the following functions obtain information from the argument list of the-compiler to set flags appropriately.--}+options :: [OptDescr (Flags -> Flags)]+options =+ [Option ['i','I'] []+ (ReqArg (\p flags -> flags{sIncludes = sIncludes flags ++ [p]}) "DIR")+ "Search path for included (imported) modules."+ ,Option ['P'] []+ (ReqArg (\p flags -> flags{sPreludes = sPreludes flags ++ [p]}) "DIR")+ "Search path for prelude."+ ,Option [] ["prelude"] + (NoArg (\flags -> flags{sPrelude = True}))+ "Input module is part of the prelude." -- Needs some special handling of imports.+ ,Option [] ["hierarchical"]+ (NoArg (\flags -> let (rootdir,filename) = splitFileName (sSourceFile flags)+ in flags{sSrcDir = "Hat" </> rootdir+ ,sHatTransFile = "Hat" </> rootdir </> replaceExtension filename "hs"}))+ "Module belongs in hierarchical library." -- So output in directory Hat/hierachy...+ ,Option [] ["trusted"]+ (NoArg (\flags -> flags{sDbgTrusted = True}))+ "Input module shall be trusted, not traced."+ ,Option [] ["wrap"]+ (NoArg (\flags -> flags{sWrap = True}))+ "Wrap definitions of input module instead of transforming."+ ,Option [] ["parse"]+ (NoArg (\flags -> flags{sParse = True}))+ "Show syntax tree after parsing."+ ,Option [] ["env"]+ (NoArg (\flags -> flags{sIBound = True}))+ "Show environment that is written to .aux file."+ ,Option [] ["fixities"]+ (NoArg (\flags -> flags{sFixities = True}))+ "Show all fixity declarations in scope."+ ,Option [] ["width"]+ (ReqArg (\w flags -> flags{sShowWidth = if all isDigit w then read w else 80}) "NAT")+ "Width for showing intermediate programs (syntax trees)."+ ] {- The main function for processing the argument list.@@ -92,103 +93,31 @@ -} processArgs :: [String] -> Flags--processArgs xs = flags- where- (rootdir,filename) = fixRootDir isUnix sourcefile- isUnix = sUnix flags-- (realfile,sourcefile) =- case getFiles xs of- [sourcefile] -> (sourcefile,sourcefile)- [realfile,sourcefile] -> (realfile,sourcefile)- _ -> error ("\nUsage: hat-trans file.[l]hs\n\ -\ hat-trans tmpfile.[l]hs origfile.[l]hs\n") -- flags = FF- { sRealFile = realfile -- filename to open- , sSourceFile = sourcefile -- original name before any preprocessor- , sHatAuxFile = fixHatAuxFile isUnix rootdir filename- , sHatTransFile = fixHatTransFile isUnix rootdir filename- , sHatFileBase = fixHatFileBase isUnix rootdir filename- , sIncludes = getIncludes xs++[rootdir]- , sPreludes = getPreludes xs- , sSrcDir = fixHatTransDir isUnix rootdir-- , sUnix = fElem True "unix" xs - -- ^ Use unix file names- , sUnlit = fElem (".lhs" `isSuffixOf` realfile) "unlit" xs - -- ^ Unliterate the source code- , sPrelude = fElem False "prelude" xs - -- Keep prelude definitions in interface file-- , sDbgTrusted = fElem False "trusted" xs -- "trusted" module (don't trace)- , sWrap = fElem False "wrap" xs -- "wrapped" module (don't trace)-- , sUnderscore = fElem True "underscore" xs - -- ^ Enable H'98 underscore-is-lower-case-- , sLex = fElem False "lex" xs -- show lexical input- , sParse = fElem False "parse" xs -- show syntax tree after parser- , sTraceFns = fElem False "tracefns" xs -- ast after transforming functions- , sIBound = fElem False "ibound" xs -- aux tree after ast annotation-- , sShowWidth = cardFlag 80 "showwidth=" xs -- set width for showing - -- intermediate program- , sShowIndent = cardFlag 2 "showindent=" xs -- set indentation for nesting- , sShowQualified = fElem True "showqualified" xs - -- ^ show qualified ids as far as possible- }- - -{- obtain list of filenames from argument list -}-getFiles :: [String] -> [String]-getFiles = filter (\xs -> case xs of ('-':_) -> False ; _ -> True)---{- obtain list of include paths from argument list -}-getIncludes :: [String] -> [String]-getIncludes = map (drop (2::Int)) . - filter (\xs -> case xs of ('-':'I':_) -> True - ('-':'i':_) -> True - _ -> False)--{- obtain list of prelude paths from argument list -}-getPreludes :: [String] -> [String]-getPreludes = map (drop (2::Int)) . - filter (\xs -> case xs of ('-':'P':_) -> True ; _ -> False)---{--Returns if given option is set or not in argument list.-If it is neither set nor unset, then default value (first arg.) is returned.--}-fElem :: Bool -> [Char] -> [String] -> Bool-fElem def f flags = if ('-':f) `elem` flags then True- else if ('-':'n':'o':f) `elem` flags then False- else def---{--Returns the value of an option with a numerical (cardinal) value.-If the option is not given, then the default value (first arg.) is returned.-Ignores syntactically incorrect options.--}-cardFlag :: Int -> [Char] -> [String] -> Int-cardFlag def f flags = if null settings then def else read (last settings)+processArgs argv = + flags {sIncludes = sIncludes flags ++ [fst (splitFileName (sSourceFile flags))]} + -- add rootdir at end where- settings = filter (all isDigit) . map (drop (length f + 1)) . - filter (isPrefixOf ('-':f)) $ flags--+ flags = case getOpt Permute options argv of+ (o,[f],[]) | takeExtension f `elem` [".hs",".lhs"] -> foldl (flip id) (defaultFlags f) o+ (_,_,errs) -> error (concat errs ++ usageInfo header options)+ header = "Usage: hat-trans [OPTION...] file.[l]hs\n" -{--Returns the value of a "-something=" option with a string value.-If the option is not given, then the default value (first arg.) is returned.--}-stringFlag :: String -> String -> [String] -> String-stringFlag def f flags = if null settings then def else last settings+defaultFlags :: String -> Flags+defaultFlags sourcefile = flags where- settings = map (drop (length f + 1)) . - filter (isPrefixOf ('-':f)) $ flags-+ (rootdir,filename) = splitFileName sourcefile+ flags = FF+ {sSourceFile = sourcefile -- original name + ,sHatAuxFile = rootdir </> replaceExtension filename "hx"+ ,sHatTransFile = rootdir </> "Hat" </> replaceExtension filename "hs"+ ,sIncludes = []+ ,sPreludes = []+ ,sSrcDir = rootdir </> "Hat" -- directory for transformed sources+ ,sPrelude = False + ,sDbgTrusted = False+ ,sWrap = False+ ,sParse = False+ ,sIBound = False+ ,sFixities = False+ ,sShowWidth = 80 + }
trans/HatTrans.hs view
@@ -1,184 +1,144 @@ {- ----------------------------------------------------------------------------This `main' function is basically just the front-end of the nhc98-compiler. It parses the .hs source file, creates the .hx file, and+This `main' function calls all passes of Hat.+It parses the .hs source file, creates the .hx file, and then stops immediately after writing a new transformed .hs file. -} module Main where --import System.IO+import System.IO(hPutStr,stderr)+import Data.String(unwords)+import Data.List(inits) import System.Environment(getArgs)-import System.Exit(exitWith,ExitCode(..))-import System.IO.Error(isAlreadyExistsError)-import qualified Control.Exception (catch)-import Control.Monad(when)-import Data.List(isPrefixOf,intersperse,inits)+import System.Exit(exitWith,ExitCode(ExitSuccess)) import System.Directory(doesDirectoryExist,createDirectory)--import Error-import Syntax-import Extra (Pos(..),mix,mixSpace,jRight,jLeft,noPos,strPos,showErr,mixLine- ,pair,fst3,thd3,trace)-import AssocTree(listAT) -- for debugging output-import ParseCore (Parser(..),ParseBad(..),ParseError(..),ParseGood(..)- ,ParseResult(..),parseit)-import Flags (Flags(..),processArgs,pF,sUnderscore,sRealFile,sSourceFile,sUnlit- ,sLex,sParse,sPrelude,sSrcDir,sIBound,sWrap- ,sHatFileBase,sHatAuxFile,sTraceFns,sHatTransFile,sDbgTrusted)-import PrettyTraceId (prettyPrintTokenId,prettyPrintId,prettyPrintTraceId- ,ppModule,ppTopDecls,ppClassCodes)--import TokenId (TokenId(..),getUnqualified- ,visible,t_Arrow,t_List,tPrelude,tminus,tnegate,tTrue)-import IdKind (IdKind(..))-import Id (Id)-import Lex (Lex,LexAnnot) -- need show--import Unlit (unlit)-import Lexical (PosToken(..),PosTokenPre(..),LexState(..),lexical)-import Parse (parseProg)--import AuxFile (toAuxFile)-import AuxLabelAST (auxLabelSyntaxTree)-import TraceTrans (traceTrans,maybeStripOffQual)-import Wrapper (prepareWrapping)--import Paths_hat (getDataDir)-----import NonStdProfile---beginPhase str = profile str (return ())-beginPhase str = return ()---- some miscellaneous settings-primFlags = (False -- bool is not the same as Word- ,False -- && || not is not primitive- ,False -- translate into prim only when strict- )---- some nicer error handling-catchError :: Either b a -> String -> (b->String) -> IO a-catchError comp errmsg showErrors = do- case comp of- Left errs -> do pF True errmsg (showErrors errs)- exit- Right a -> return a---- for Hugs, which cannot read commandline args using System.getArgs:-gmain cml = main' (words cml)+import System.IO.Error(isAlreadyExistsError,ioError)+import qualified Control.Exception(catch)+import Control.Monad(when)+import Flags(processArgs,Flags,sSourceFile,sParse,sFixities,sPrelude,sPreludes,sIncludes,sDbgTrusted+ ,sWrap,sIBound,sShowWidth,sHatAuxFile,sHatTransFile,sSrcDir)+import System.FilePath(FilePath(..),splitDirectories,combine)+import Language.Haskell.Exts.Annotated(ParseMode(..),ParseResult,fromParseResult,parseFileWithMode+ ,Module(..),ImportDecl(..),ModuleName(..),Extension(..),applyFixities)+import Language.Haskell.Exts.Fixity(Fixity)+import Language.Haskell.Exts.Pretty(prettyPrintStyleMode,Style(..),style,PPHsMode,defaultMode)+import Wrap(wrap)+import Environment(Environment,wiredEnv,globalEnv,prettyEnv,env2Fixities)+import Relation(unionRelations)+import TraceTrans(Tracing(Traced,Trusted),traceTrans)+import AuxFile(readAuxFiles,writeAuxFile)+import SynHelp(getId)+import Paths_hat(getDataDir) --- for all other compilers: main = do args <- getArgs- main' args--main' args = do let flagsArgs = processArgs args preludePath <- getDataDir let flags = flagsArgs{sPreludes = preludePath : (sPreludes flagsArgs)}- let filename = sRealFile flags -- {- lex source code -}- beginPhase "lex"- mainChar -- :: String- <- Control.Exception.catch (readFile filename) (can'tOpen filename) - lexdata -- :: [PosToken]- <- return (lexical (sUnderscore flags) (sSourceFile flags)- (if sUnlit flags - then unlit (sSourceFile flags) mainChar - else mainChar))- pF (sLex flags) "Lexical" - (mixSpace (map (\ (p,l,_,_) -> strPos p ++ ':':show l) lexdata))-+ let pretty = prettyPrintStyleMode (style{lineLength=sShowWidth flags}) defaultMode {- parse source code -}- beginPhase "parse"- parsedPrg -- :: Module TokenId- <- catchError (parseit parseProg lexdata)- ("In file: "++sSourceFile flags) showErr- pF (sParse flags) "Parse" (prettyPrintTokenId flags ppModule parsedPrg) -+ let filePath = sSourceFile flags+ let parseMode = ParseMode {parseFilename = filePath+ ,extensions = [ForeignFunctionInterface,NPlusKPatterns]+ ,ignoreLanguagePragmas = False+ ,ignoreLinePragmas = True+ ,fixities = Nothing} + parseResult <- parseFileWithMode parseMode filePath+ let moduleAST = fromParseResult parseResult+ dumpIntermediate (sParse flags) "Parse" (pretty moduleAST)+ {- Ensure we can write our output files. -} let hatDir = sSrcDir flags dir <- doesDirectoryExist hatDir when (not dir) (createDirectoriesRecursively hatDir) - {- If wrapping rather than transforming, then prepare the parsed AST.- -}- parsedPrg <- if sWrap flags then return (prepareWrapping (sSourceFile flags) parsedPrg)- else return parsedPrg+ {- If wrapping rather than transforming, then prepare the parsed AST. -}+ let moduleAST2 = if sWrap flags then wrap (sSourceFile flags) moduleAST else moduleAST when (sWrap flags)- (pF (sParse flags) "Wrap" (prettyPrintTokenId flags ppModule parsedPrg))+ (dumpIntermediate (sParse flags) "Wrap" (pretty moduleAST2)) - {-- -- Read and write auxiliary information files (for tracing).- -- Then relabel the syntax tree with the auxiliary information.- -- Then the tracing transformation itself is applied.- -- The result is written to file (no redirection possible yet)- -}- let prg = implicitlyImportPrelude flags - (maybeStripOffQual "Prelude" parsedPrg)- pF (sParse flags) "post-Prelude" (prettyPrintTokenId flags ppModule parsedPrg)- -- hack to make full environment available when writing aux file- -- (needed for handling partial expansion of type synonyms)- (env,newprog) <- auxLabelSyntaxTree flags prg- toAuxFile env flags (sHatAuxFile flags) prg -- waste space: hold on to prg+ {- Add import of Prelude if not done explicitly, and PreludeBasic. -}+ let moduleAST3 = implicitlyImportPreludeBasic flags (implicitlyImportPrelude flags moduleAST2) - when (sIBound flags)- (print (listAT (fst env)))+ {- Read .hx file of every imported module to produce the complete import environment -}+ importEnv <- readAuxFiles flags moduleAST3 - when (sTraceFns flags)- (putStr (prettyPrintTraceId flags ppModule newprog)) -- debug- let outputTree = (implicitlyImportPreludeBasic flags - (maybeStripOffQual "Hat.Prelude"- (traceTrans (not (sDbgTrusted flags)) (sSourceFile flags) - (sHatFileBase flags) newprog)))- writeFile (sHatTransFile flags)- (prettyPrintTokenId flags ppModule outputTree)+ {- Create global environment of this module. -}+ let env = globalEnv (not (sDbgTrusted flags)) moduleAST3 (unionRelations [importEnv,wiredEnv])++ dumpIntermediate (sIBound flags) "Top-level environment of module" (prettyEnv importEnv)++ {- Write .hx file for current module. -}+ writeAuxFile flags (sHatAuxFile flags) env moduleAST3++ {- Now correct all fixities of expression identifiers. -}+ let fixities = env2Fixities env++ dumpIntermediate (sFixities flags) "Fixities in scope" (unlines . map show $ fixities)++ moduleAST4 <- applyFixities fixities moduleAST3+ + dumpIntermediate (sParse flags) "After fixity corrections" (pretty moduleAST4)++ {- Actual tracing transformation. -}+ let outputAST = traceTrans (sSourceFile flags)+ (if sDbgTrusted flags then Trusted else Traced) env moduleAST4++ {- Write result file and finish. -}+ writeFile (sHatTransFile flags) (pretty outputAST)+ putStrLn ("Wrote " ++ sHatTransFile flags) exitWith (ExitSuccess) +createDirectoriesRecursively :: FilePath -> IO () +createDirectoriesRecursively path = do+ putStrLn ("Creating directories "++unwords paths)+ mapM_ safeCreate paths+ where + paths = recursiveDirectories path+ safeCreate path = Control.Exception.catch (createDirectory path)+ (\e-> if isAlreadyExistsError e then return () else ioError e) --- add implicit Prelude, if it is not imported explicitly and we +recursiveDirectories :: FilePath -> [FilePath]+recursiveDirectories path = map (foldr1 combine) . tail . inits . splitDirectories $ path++-- Add implicit Prelude, if it is not imported explicitly and we -- are not currently transforming part of the Prelude.-implicitlyImportPrelude :: Flags -> Module TokenId -> Module TokenId+implicitlyImportPrelude :: Flags -> Module l -> Module l implicitlyImportPrelude flags- (Module pos modId exports imports fixities decls) =- Module pos modId exports imports' fixities decls- where - imports' = - if (sPrelude flags && "Prelude" `isPrefixOf` getUnqualified modId) ||- (any ((==) tPrelude . importedModule) imports)- then imports - else Import (noPos,tPrelude) (Hiding []) : imports+ (Module l maybeHead pragmas importDecls decls) =+ Module l maybeHead pragmas importDecls' decls+ where+ importDecls' = if sPrelude flags || "Prelude" `elem` map (getId . importModule) importDecls+ then importDecls+ else ImportDecl{importAnn = l, importModule = ModuleName l "Prelude"+ ,importQualified = False, importSrc = False+ ,importPkg = Nothing, importAs = Nothing, importSpecs = Nothing} : importDecls --- import implementation of Prelude qualified--- use this for transformation-introduced Prelude identifiers--- even some internal identifiers that are not part of the Prelude--- (e.g. for deriving of instances)-implicitlyImportPreludeBasic :: Flags -> Module TokenId -> Module TokenId-implicitlyImportPreludeBasic flags- (Module pos modId exports imports fixities decls) =- Module pos modId exports imports' fixities decls- where - imports' = - if sPrelude flags && "Hat.Prelude" `isPrefixOf` getUnqualified modId- then imports - else- ImportQ (noPos,visible (reverse "Hat.PreludeBasic")) (Hiding []) - : imports+-- Add import PreludeBasic if current module is not part of the Prelude.+-- Module PreludeBasic defines identifiers introduced by the transformation or deriving+-- and *not* exported by module Prelude.+implicitlyImportPreludeBasic :: Flags -> Module l -> Module l+implicitlyImportPreludeBasic flags + (Module l maybeHead pragmas importDecls decls) =+ Module l maybeHead pragmas importDecls' decls+ where+ importDecls' = if sPrelude flags+ then importDecls+ else ImportDecl{importAnn = l, importModule = ModuleName l "PreludeBasic"+ ,importQualified = True, importSrc = False+ ,importPkg = Nothing, importAs = Nothing, importSpecs = Nothing} : + ImportDecl{importAnn = l, importModule = ModuleName l "PreludeBuiltinTypes"+ ,importQualified = True, importSrc = False+ ,importPkg = Nothing, importAs = Nothing, importSpecs = Nothing} : importDecls +{- If first argument is True, then print second and third with formatting -}+dumpIntermediate :: Bool -> String -> String -> IO ()+dumpIntermediate flag title text =+ if flag + then hPutStr stderr ( "======\t"++title++":\n"++text++"\n") + else return () -createDirectoriesRecursively path = do- putStrLn ("Creating directories "++unwords paths)- mapM_ safeCreate paths- where paths = accum (wordsBy '/' path)- accum xs = map (concat . intersperse "/") (tail (inits xs))- wordsBy c s = let (w,s') = break (==c) s- in w: case s' of [] -> []; (_:s'') -> wordsBy c s''- safeCreate path = Control.Exception.catch (createDirectory path)- (\e-> if isAlreadyExistsError e then return ()- else ioError e) {- End Module Main ----------------------------------------------------------}
− trans/PrettyTraceId.hs
@@ -1,45 +0,0 @@-{--Convert abstract syntax tree (or parts of it) into -a structured document for pretty printing.--}--module PrettyTraceId- ( module PrettySyntax- , prettyPrintTraceId- ) where --import PrettyLib-import PrettySyntax-import Flags (Flags,sShowWidth,sShowQualified,sShowIndent)-import TraceId (TraceId,hasValueInfo,arity,isLambdaBound,tokenId)-import AuxTypes (AuxiliaryInfo) -- hbc's broken import mechanism needs this-import TokenId (TokenId(..),extractV,t_Arrow,t_List)-import Id (Id)-import SysDeps (unpackPS)---prettyPrintTraceId :: Flags -> (PPInfo TraceId -> a -> Doc) -> a -> String--prettyPrintTraceId flags pp =- pretty (sShowWidth flags) . - pp PPInfo{withPositions = False- ,indent = sShowIndent flags- ,id2str = id2strTraceId- ,tyVar2str = id2strTraceId -- show- ,isFunctionArrow = (\tr-> tokenId tr == t_Arrow)- ,isList = (\tr-> tokenId tr == t_List)- ,maybeTuple = maybeTupleTraceId}- where- id2strTraceId t = ( if sShowQualified flags- then show (tokenId t)- else (reverse . unpackPS . extractV) (tokenId t)- ) ++- ( if hasValueInfo t - then "{-"++ show (arity t) ++"/"++- ( if isLambdaBound t then "lam-}" else "let-}" )- else "")- maybeTupleTraceId t = case tokenId t of- TupleId n -> Just n- _ -> Nothing--
+ trans/Relation.hs view
@@ -0,0 +1,83 @@+-- ------------------------------------------------------------------------------------+-- Relations and their functions+--+-- This interface is based on +-- Diatchki, Jones, Hallgren: "A Formal Specificationof the Haskell 98 Module System"+-- Haskell 2002, ACM+--+-- The type representation is different.+-- It is chosen to be efficient for frequent lookups and also insertions.++module Relation+ (Relation+ ,ascListToRelation,listToRelation,relationToList,emptyRelation,restrictDom,restrictRng+ ,dom,rng,mapDom,mapRng,intersectRelation,unionRelations,unionRelationsWith,unionLocalRelation+ ,minusRelation,partitionDom,applyRelation+ ) where++import qualified Data.Map as Map+import qualified Data.Set as Set++-- The set is always non-empty.+type Relation a b = Map.Map a (Set.Set b)++-- pre-condition: input list is in ascending order in first component+ascListToRelation :: (Ord a, Ord b) => [(a,b)] -> Relation a b+ascListToRelation xs = + Map.fromAscListWith (Set.union) (map (\(x,y) -> (x,Set.singleton y)) xs)++listToRelation :: (Ord a, Ord b) => [(a,b)] -> Relation a b+listToRelation xs = + Map.fromListWith (Set.union) (map (\(x,y) -> (x,Set.singleton y)) xs)++-- post-condition: output list is in ascending order in first component+relationToList :: Relation a b -> [(a,b)]+relationToList r = + concatMap (\(x,ys) -> map (\y -> (x,y)) (Set.toAscList ys)) (Map.toAscList r)++emptyRelation :: Relation a b+emptyRelation = Map.empty++restrictDom :: (Ord a, Ord b) => (a -> Bool) -> Relation a b -> Relation a b+restrictDom p r = Map.filterWithKey (\a _ -> p a) r++restrictRng :: (Ord a, Ord b) => (b -> Bool) -> Relation a b -> Relation a b+restrictRng p = Map.filter (not . Set.null) . Map.map (Set.filter p)++dom :: Ord a => Relation a b -> Set.Set a+dom r = Map.keysSet r++rng :: Ord b => Relation a b -> Set.Set b+rng r = Set.unions (Map.elems r)++mapDom :: (Ord b, Ord c) => (a -> c) -> Relation a b -> Relation c b+mapDom f = Map.mapKeysWith (Set.union) f ++mapRng :: (Ord a, Ord b, Ord c) => (b -> c) -> Relation a b -> Relation a c+mapRng f = Map.map (Set.map f)++intersectRelation :: (Ord a, Ord b) => Relation a b -> Relation a b -> Relation a b+intersectRelation = Map.intersectionWith (Set.intersection)++unionRelations :: (Ord a, Ord b) => [Relation a b] -> Relation a b+unionRelations rs = Map.unionsWith (Set.union) rs++-- When one a is related to several b's, the latter are combined.+unionRelationsWith :: (Ord a, Ord b) => (Set.Set b -> Set.Set b -> Set.Set b) -> [Relation a b] -> Relation a b+unionRelationsWith merge rs = Map.unionsWith merge rs++-- Second relation is for a local scope and has precedence over the first relation.+unionLocalRelation :: (Ord a, Ord b) => Relation a b -> Relation a b -> Relation a b+unionLocalRelation r1 r2 = Map.unionWith (const id) r1 r2++minusRelation :: (Ord a, Ord b) => Relation a b -> Relation a b -> Relation a b+minusRelation r1 r2 = Map.differenceWith subtract r1 r2+ where+ subtract s1 s2 = let s = Set.difference s1 s2 + in if Set.null s then Nothing else Just s++partitionDom :: Ord a => (a -> Bool) -> Relation a b -> (Relation a b, Relation a b)+partitionDom p = Map.partitionWithKey (\a bs -> p a)++applyRelation :: (Ord a, Ord b) => Relation a b -> a -> Set.Set b+applyRelation r a = Map.findWithDefault Set.empty a r
+ trans/SynHelp.hs view
@@ -0,0 +1,334 @@+-- Useful functions on annotated Haskell syntax+-- All functions are polymorphic in the annotation type.+-- (They may loose annotations or add them rather arbitrarily.)++module SynHelp (module SynHelp, noSpan) where++import Language.Haskell.Exts.Annotated +import Wired (nameTransModule,tracingModuleNameShort,Arity(..),noSpan)+import Data.Char (isAlpha)+import Data.List (stripPrefix)+import Data.Maybe (fromMaybe)++import Debug.Trace++-- Common features of all identifiers (names)++class Id a where+ -- whether a symbol (operator) or a normal identifier+ isSymbol :: a -> Bool+ getId :: a -> String++instance Id (QName l) where+ isSymbol (Qual _ _ name) = isSymbol name+ isSymbol (UnQual _ name) = isSymbol name+ isSymbol (Special _ _) = True+ getId (Qual _ _ name) = getId name+ getId (UnQual _ name) = getId name+ getId qn@(Special _ spec) = error ("SynHelp.getId: " ++ prettyPrint qn)++instance Id (Name l) where+ isSymbol (Ident _ _) = False+ isSymbol (Symbol _ _) = True+ getId (Ident _ ident) = ident+ getId (Symbol _ ident) = ident++instance Id (QOp l) where+ isSymbol (QVarOp _ _) = False+ isSymbol (QConOp _ _) = True+ getId (QVarOp _ qname) = getId qname+ getId (QConOp _ qname) = getId qname++instance Id (Op l) where+ isSymbol (VarOp _ _) = False+ isSymbol (ConOp _ _) = True+ getId (VarOp _ name) = getId name+ getId (ConOp _ name) = getId name++instance Id (CName l) where+ isSymbol (VarName _ _) = False+ isSymbol (ConName _ _) = True+ getId (VarName _ name) = getId name+ getId (ConName _ name) = getId name++instance Id (ModuleName l) where+ isSymbol _ = False+ getId (ModuleName _ ident) = ident++-- General functions on syntax tree:++conDeclName :: ConDecl l -> Name l+conDeclName (ConDecl _ name _) = name+conDeclName (InfixConDecl _ _ name _) = name+conDeclName (RecDecl _ name _) = name++conDeclArity :: ConDecl l -> Arity+conDeclArity (ConDecl _ _ tys) = length tys+conDeclArity (InfixConDecl _ _ _ _) = 2+conDeclArity (RecDecl _ _ fieldDecls) = + sum (map (length . fieldDeclNames) fieldDecls)++fieldDeclNames :: FieldDecl l -> [Name l]+fieldDeclNames (FieldDecl _ names _) = names+++-- Build n-ary application+-- pre-condition: list is non-empty+appN :: [Exp l] -> Exp l+appN = foldl1 (\e1 e2 -> App (ann e1) e1 e2)++-- Build n-ary type application+-- pre-condiiton: list is non-empy+tyAppN :: [Type l] -> Type l+tyAppN = foldl1 (\t1 t2 -> TyApp (ann t1) t1 t2)++litInt :: (Show i, Integral i) => l -> i -> Exp l+litInt l i = Lit l (Int l (fromIntegral i) (show i))++litString :: l -> String -> Exp l+litString l str = Lit l (String l str str) ++litChar :: l -> Char -> Exp l+litChar l c = Lit l (Char l c (show c))+ +matchArity :: Match l -> Arity +matchArity (Match _ _ pats _ _) = length pats+matchArity (InfixMatch _ p _ pats _ _) = 1 + length pats++changeInfixMatch :: Match l -> Match l+changeInfixMatch m@(Match _ _ _ _ _) = m+changeInfixMatch (InfixMatch l p n pats rhs maybeBinds) = + Match l n (p:pats) rhs maybeBinds++-- General working on AST:++-- function type constructor+infixr 6 `typeFun`+typeFun :: Type l -> Type l -> Type l+typeFun ty1 ty2 = TyFun (ann ty1) ty1 ty2++-- Compare two names ignoring location+eqName :: Name l -> Name l -> Bool+eqName (Ident _ n1) (Ident _ n2) = n1==n2+eqName (Symbol _ n1) (Symbol _ n2) = n1==n2+eqName _ _ = False ++getModuleNameFromModule :: Module l -> ModuleName l+getModuleNameFromModule (Module l Nothing _ _ _) = ModuleName l "Main"+getModuleNameFromModule (Module l (Just (ModuleHead _ modName _ _)) _ _ _) = modName++getConDeclFromQualConDecl :: QualConDecl l -> ConDecl l+getConDeclFromQualConDecl (QualConDecl _ _ _ conDecl) = conDecl++getFieldNamesFromQualConDecl :: QualConDecl l -> [Name l]+getFieldNamesFromQualConDecl (QualConDecl _ _ _ conDecl) =+ getFieldNamesFromConDecl conDecl++getFieldNamesFromConDecl :: ConDecl l -> [Name l]+getFieldNamesFromConDecl (ConDecl _ _ _) = []+getFieldNamesFromConDecl (InfixConDecl _ _ _ _) = []+getFieldNamesFromConDecl (RecDecl _ _ fieldDecls) = + concatMap getFieldNamesFromFieldDecl fieldDecls++getFieldNamesFromFieldDecl :: FieldDecl l -> [Name l]+getFieldNamesFromFieldDecl (FieldDecl _ names _) = names++getConstructorFromConDecl :: ConDecl l -> Name l+getConstructorFromConDecl (ConDecl _ c _) = c+getConstructorFromConDecl (InfixConDecl _ _ c _) = c+getConstructorFromConDecl (RecDecl _ c _) = c++getArityFromConDecl :: ConDecl l -> Int+getArityFromConDecl (ConDecl _ _ bTys) = length bTys+getArityFromConDecl (InfixConDecl _ _ _ _) = 2+getArityFromConDecl (RecDecl _ c fieldDecls) = + sum (map getArityFromFieldDecl fieldDecls)++getArityFromFieldDecl :: FieldDecl l -> Int+getArityFromFieldDecl (FieldDecl _ names _) = length names++alt2Match :: Alt l -> Match l+alt2Match (Alt l pat guardedAlts maybeBinds) = + Match l undefined [pat] (guardedAlts2Rhs guardedAlts) maybeBinds++guardedAlts2Rhs :: GuardedAlts l -> Rhs l+guardedAlts2Rhs (UnGuardedAlt l exp) = UnGuardedRhs l exp+guardedAlts2Rhs (GuardedAlts l gdAlts) = + GuardedRhss l (map guardedAlt2GuardedRhs gdAlts)++guardedAlt2GuardedRhs :: GuardedAlt l -> GuardedRhs l+guardedAlt2GuardedRhs (GuardedAlt l stmts exp) = GuardedRhs l stmts exp++qOp2Exp :: QOp l -> Exp l+qOp2Exp (QVarOp l qName) = Var l qName+qOp2Exp (QConOp l qName) = Con l qName++nameFromOp :: Op l -> Name l+nameFromOp (VarOp l name) = name+nameFromOp (ConOp l name) = name++getQualified :: SrcInfo l => QName l -> Name l+getQualified (UnQual _ name) = name+getQualified (Qual _ _ name) = name+getQualified (Special _ specialCon) = + error ("SynHelp.getQualified: special QName " ++ specialToId specialCon ++ ".")++mkQual :: ModuleName l -> Name l -> QName l+mkQual modName name = Qual (ann name) modName name++qual ::SrcInfo l => ModuleName l -> QName l -> QName l+qual modName qName = mkQual modName (getQualified qName)++isQual :: QName l -> Bool+isQual (Qual _ _ _) = True+isQual (UnQual _ _) = False+isQual (Special _ _) = False++isUnQual :: QName l -> Bool+isUnQual (UnQual _ _) = True+isUnQual (Qual _ _ _) = False+isUnQual (Special _ _) = False++-- The first name possibly provides a module qualifier+cName2QName :: QName l -> CName l -> QName l+cName2QName (UnQual _ _) (VarName l name) = UnQual l name+cName2QName (UnQual _ _) (ConName l name) = UnQual l name+cName2QName (Qual _ mod _) (VarName l name) = Qual l mod name+cName2QName (Qual _ mod _) (ConName l name) = Qual l mod name+cName2QName (Special _ _) (VarName l name) = UnQual l name+cName2QName (Special _ _) (ConName l name) = UnQual l name++-- Build parts of syntax tree:++-- String may contain . with module name before+-- Assume that this is a normal identifier or symbol, not+-- any special name.+mkQName :: l -> String -> QName l+-- mkQName l "()" = Special l (UnitCon l)+-- mkQName l "[]" = Special l (ListCon l) -- list type constructor+-- mkQName l "->" = Special l (FunCon l) -- function type constructor+-- mkQName l i@(',':_) = Special l (TupleCon l Boxed (length i))+-- mkQName l ":" = Special l (Cons l) -- list data constructor+-- mkQName l "##" = Special l (UnboxedSingleCon l) -- unboxed singleton tuple constructor+mkQName l str = + if length revQual <= 1 -- include function composition "."+ then UnQual l (mkName l str) + else Qual l (ModuleName l (reverse (tail revQual))) + (mkName l (reverse revName))+ where+ (revName,revQual) = break (== '.') (reverse str)++mkName :: l -> String -> Name l+mkName _ "" = error "SynHelp.mkName: empty String."+mkName l id@(x:_) =+ if isAlpha x || x == '_'+ then Ident l id+ else Symbol l id++-- Test for specific names:++isFunTyCon :: QName l -> Bool+isFunTyCon (Special _ (FunCon _)) = True+isFunTyCon _ = False+++combineMaybeContexts :: Maybe (Context l) -> Maybe (Context l) -> + Maybe (Context l)+combineMaybeContexts Nothing mCtx = mCtx+combineMaybeContexts mCtx Nothing = mCtx+combineMaybeContexts (Just ctx1) (Just ctx2) = + if null assts then Nothing else Just (CxTuple (ann ctx1) assts)+ where+ assts = contextAssertions ctx1 ++ contextAssertions ctx2++contextAssertions :: Context l -> [Asst l]+contextAssertions (CxSingle _ asst) = [asst]+contextAssertions (CxTuple _ assts) = assts+contextAssertions (CxParen _ ctx) = contextAssertions ctx+contextAssertions (CxEmpty _) = []++instHeadQName :: InstHead l -> QName l+instHeadQName (IHead _ qname _) = qname+instHeadQName (IHInfix _ _ qname _) = qname+instHeadQName (IHParen _ ih) = instHeadQName ih++declHeadName :: DeclHead l -> Name l+declHeadName (DHead _ name _) = name+declHeadName (DHInfix _ _ name _ ) = name+declHeadName (DHParen _ dh) = declHeadName dh++declHeadTyVarBinds :: DeclHead l -> [TyVarBind l]+declHeadTyVarBinds (DHead _ _ tvbs) = tvbs+declHeadTyVarBinds (DHInfix _ tvbL _ tvbR) = [tvbL,tvbR]+declHeadTyVarBinds (DHParen _ dh) = declHeadTyVarBinds dh++tyVarBind2Type :: TyVarBind l -> Type l+tyVarBind2Type (KindedVar l name kind) = TyKind l (TyVar l name) kind+tyVarBind2Type (UnkindedVar l name) = TyVar l name++tyVarBind2Name :: TyVarBind l -> Name l+tyVarBind2Name (KindedVar l name kind) = name+tyVarBind2Name (UnkindedVar l name) = name++-- pre-condition: no type synonym appearing in type+decomposeFunType :: Type l -> ([Type l], Type l)+decomposeFunType (TyFun _ tyL tyR) = (tyL:tyArgs, tyRes)+ where+ (tyArgs, tyRes) = decomposeFunType tyR+decomposeFunType ty = ([], ty)++-- ----------------------------------------------------------------------------+-- Updating a name++class Id a => UpdId a where+ -- apply function to unqualified name part + -- and prefix module name (if qualified)+ updateId :: (Name l -> Name l) -> a -> a++instance SrcInfo l => UpdId (QName l) where+ updateId f (Qual l moduleName name) = + Qual l (nameTransModule moduleName) (updateId f name)+ updateId f (UnQual l name) = UnQual l (updateId f name)+ updateId f (Special l specialCon) =+ Qual l (tracingModuleNameShort l) (updateId f (Ident l (specialToId specialCon))) ++specialToId :: SrcInfo l => SpecialCon l -> String+specialToId (UnitCon _) = "Tuple0"+specialToId (ListCon _) = "List"+specialToId (FunCon _) = "Fun"+specialToId (TupleCon _ Boxed arity) = "Tuple" ++ show arity+specialToId (TupleCon l' Unboxed _) = notSupported l' "Unboxed tuple."+specialToId (Cons l') = "Cons"+specialToId (UnboxedSingleCon l') =+ notSupported l' "Unboxed singleton tuple constructor."++instance UpdId (Name l) where+ -- updateId f = f is ill-typed+ updateId f (Ident l ident) = Ident l (getId (f (Ident undefined ident)))+ updateId f (Symbol l ident) = Symbol l (getId (f (Symbol undefined ident)))++instance SrcInfo l => UpdId (QOp l) where+ updateId f (QVarOp l qname) = QVarOp l (updateId f qname)+ updateId f (QConOp l qname) = QConOp l (updateId f qname)++instance UpdId (Op l) where+ updateId f (VarOp l name) = VarOp l (updateId f name)+ updateId f (ConOp l name) = ConOp l (updateId f name)++instance UpdId (CName l) where+ updateId f (VarName l name) = VarName l (updateId f name)+ updateId f (ConName l name) = ConName l (updateId f name)++-- ----------------------------------------------------------------------------++dropAnn :: Annotated ast => ast l -> ast ()+dropAnn = fmap (const ())++-- ----------------------------------------------------------------------------+-- Error for non-supported language features++notSupported :: SrcInfo l => l -> String -> a+notSupported l construct = error $+ "hat-trans: unsupported language construct \"" ++ construct ++ "\" at " ++ + fileName l ++ ":" ++ show (startLine l) ++ ":" ++ show (startColumn l)+
− trans/TraceDerive.hs
@@ -1,522 +0,0 @@-module TraceDerive where--import Syntax-import TraceId - (TraceId,mkLambdaBound,tokenId,getUnqualified,dropModule,modArity- ,tPriority,tFixity,Fixity(..)- ,tTokenTrue,tTokenFalse,tTokenEqualEqual,tTokenAndAnd- ,tTokenEQ,tTokenCompare,tTokenLocalFromEnum,tTokenInt- ,tTokenMinBound,tTokenMaxBound,tTokenFromEnum,tTokenToEnum- ,tTokenError,tTokenEnumFrom,tTokenEnumFromThen,tTokenEnumFromTo- ,tTokenEnumFromThenTo,tTokenGreater,tTokenGreaterEqual,tTokenCompose- ,tTokenShowsPrec,tTokenShowParen,tTokenShowString,tTokenShowChar- ,tTokenReadsPrec,tTokenReadParen,tTokenYield,tTokenAlt,tTokenThenAp- ,tTokenThenLex,tTokenRange,tTokenIndex,tTokenInRange,tTokenMap,tTokenMinus- ,tTokenLocalToEnum,tTokenTuple2,tTokenFun,tTokenRangeSize- ,tTokenGtGtEq,tTokenPlus,tTokenTimes,tTokenReturn)-import TokenId (mkUnqualifiedTokenId,tEq)-import AuxTypes (defaultAuxInfo)---- -------------------------------------------------------------------------------- derive instances for all given classes for a data/newtype-derive :: [Context TraceId] -> Simple TraceId -> [Constr TraceId] - -> [(Pos,TraceId)] -> [Decl TraceId]-derive tyContexts sTy constrs = - map (deriveClass tyContexts (simpleToType sTy) pTyVars constrs)- where- Simple _ _ pTyVars = sTy---- derive instance for a given class for a data/newtype-deriveClass :: [Context TraceId] -> Instance TraceId -> [(Pos,TraceId)] - -> [Constr TraceId] -> (Pos,TraceId) -> Decl TraceId-deriveClass tyContexts instTy pTyVars constrs (pos,cls) - | getUnqualified cls == "Eq" = deriveEq pos usualContexts cls instTy constrs- | getUnqualified cls == "Ord" = - deriveOrd pos usualContexts cls instTy constrs- | getUnqualified cls == "Bounded" =- deriveBounded pos usualContexts cls instTy constrs- | getUnqualified cls == "Enum" = - deriveEnum pos usualContexts cls instTy constrs- | getUnqualified cls == "Read" = - deriveRead pos usualContexts cls instTy constrs- | getUnqualified cls == "Show" = - deriveShow pos usualContexts cls instTy constrs- | getUnqualified cls == "Ix" = - deriveIx pos usualContexts cls instTy constrs- | otherwise = error ("deriveClass: unknown class " ++ show (tokenId cls))- where- -- this is a HACK that covers only the common cases- -- for correct result would need to implement full context reduction- -- and take the least fixpoint- usualContexts = tyContexts ++ map (\pt-> Context pos cls [pt]) pTyVars---- ------------------------------------------------------------------------------deriveEq :: Pos - -> [Context TraceId] -> TraceId -> Instance TraceId - -> [Constr TraceId] - -> Decl TraceId-deriveEq pos contexts cls ty constrs =- DeclInstance pos contexts cls [ty]- (DeclsParse - [DeclFun pos (modArity (dropModule tTokenEqualEqual) 2)- (map funEqConstr constrs ++ - [Fun [PatWildcard pos,PatWildcard pos] - (Unguarded (ExpCon pos tTokenFalse)) noDecls])])- where- vars = traceVars pos- funEqConstr :: Constr TraceId -> Fun TraceId- funEqConstr constr = - if arity == 0 - then- Fun [ExpCon pos conId,ExpCon pos conId] - (Unguarded (ExpCon pos tTokenTrue)) noDecls- else- Fun - [ExpApplication pos (ExpCon pos conId : argsL)- , ExpApplication pos (ExpCon pos conId : argsR)]- (Unguarded (foldr1 andExp (zipWith equalExp argsL argsR)))- noDecls- where- andExp :: Exp TraceId -> Exp TraceId -> Exp TraceId- andExp e1 e2 = ExpApplication pos [ExpVar pos tTokenAndAnd,e1,e2]- equalExp :: Exp TraceId -> Exp TraceId -> Exp TraceId- equalExp e1 e2 = ExpApplication pos [ExpVar pos tTokenEqualEqual,e1,e2]- (argsL,restVars) = splitAt arity vars- argsR = take arity restVars- conId = getConstrId constr- arity = constrArity constr---- ------------------------------------------------------------------------------deriveOrd :: Pos - -> [Context TraceId] -> TraceId -> Instance TraceId - -> [Constr TraceId] - -> Decl TraceId-deriveOrd pos contexts cls ty constrs =- DeclInstance pos contexts cls [ty]- (DeclsParse - [DeclFun pos (modArity (dropModule tTokenCompare) 2)- (concatMap funCompareEqConstr constrs ++ - [Fun [var1,var2] - (Unguarded - (ExpApplication pos - [ExpVar pos tTokenCompare- ,ExpType pos (ExpApplication pos [localFromEnumVar,var1])- [] (TypeCons pos tTokenInt [])- ,ExpApplication pos [localFromEnumVar,var2]]))- (DeclsParse - [DeclFun pos tTokenLocalFromEnum- (zipWith funLocalFromEnum constrs [0..])])])])- where- var1:var2:vars = traceVars pos- localFromEnumVar = ExpVar pos tTokenLocalFromEnum- funCompareEqConstr constr = - if arity == 0 then []- else- [Fun- [ExpApplication pos (ExpCon pos conId : argsL)- ,ExpApplication pos (ExpCon pos conId : argsR)]- (Unguarded (foldr1 caseExp (zipWith compareExp argsL argsR)))- noDecls]- where- caseExp :: Exp TraceId -> Exp TraceId -> Exp TraceId- caseExp e1 e2 = - ExpCase pos e1 - [Alt (ExpCon pos tTokenEQ) (Unguarded e2) noDecls- ,Alt var1 (Unguarded var1) noDecls]- compareExp :: Exp TraceId -> Exp TraceId -> Exp TraceId- compareExp e1 e2 = ExpApplication pos [ExpVar pos tTokenCompare,e1,e2]- (argsL,restVars) = splitAt arity vars- argsR = take arity restVars- conId = getConstrId constr- arity = constrArity constr- funLocalFromEnum constr num =- Fun [ExpApplication pos (ExpCon pos conId : args)]- (Unguarded (ExpLit pos (LitInteger Boxed num)))- noDecls- where- args = replicate (constrArity constr) (PatWildcard pos)- conId = getConstrId constr----- ------------------------------------------------------------------------------deriveBounded :: Pos - -> [Context TraceId] -> TraceId -> Instance TraceId - -> [Constr TraceId] - -> Decl TraceId-deriveBounded pos contexts cls ty constrs =- DeclInstance pos contexts cls [ty]- (if all (== 0) (map constrArity constrs) - then- (DeclsParse- [DeclFun pos (modArity (dropModule tTokenMinBound) 0)- [Fun [] (Unguarded (ExpCon pos (getConstrId (head constrs)))) - noDecls]- ,DeclFun pos (modArity (dropModule tTokenMaxBound) 0)- [Fun [] (Unguarded (ExpCon pos (getConstrId (last constrs)))) - noDecls]])- else {- exactly one constructor -}- let [constr] = constrs in- (DeclsParse- [DeclFun pos (modArity (dropModule tTokenMinBound) 0)- [Fun [] (Unguarded - (ExpApplication pos - (ExpCon pos (getConstrId (head constrs)) - : replicate (constrArity constr) - (ExpVar pos tTokenMinBound)) )) - noDecls]- ,DeclFun pos (modArity (dropModule tTokenMaxBound) 0)- [Fun [] (Unguarded - (ExpApplication pos - (ExpCon pos (getConstrId (head constrs)) - : replicate (constrArity constr) - (ExpVar pos tTokenMaxBound)) )) - noDecls]]))---- ------------------------------------------------------------------------------deriveEnum :: Pos - -> [Context TraceId] -> TraceId -> Instance TraceId - -> [Constr TraceId] - -> Decl TraceId-deriveEnum pos contexts cls ty constrs =- -- assert: all (== 0) (map constrArity constrs) - DeclInstance pos contexts cls [ty]- (DeclsParse- [DeclFun pos (modArity (dropModule tTokenFromEnum) 1)- (zipWith funFromEnum constrs [0..])- ,DeclFun pos (modArity (dropModule tTokenToEnum) 1)- (zipWith funToEnum constrs [0..] ++ - [Fun [PatWildcard pos] (Unguarded - (ExpApplication pos - [ExpVar pos tTokenError- ,ExpLit pos (LitString Boxed "toEnum: argument out of bounds")]))- noDecls])- ,DeclFun pos (modArity (dropModule tTokenEnumFrom) 1)- [Fun [var1] (Unguarded - (ExpApplication pos- [ExpVar pos tTokenEnumFromTo,var1- ,ExpCon pos (getConstrId (last constrs))]))- noDecls]- ,DeclFun pos (modArity (dropModule tTokenEnumFromThen) 2)- [Fun [var1,var2] (Unguarded- (ExpApplication pos- [ExpVar pos tTokenEnumFromThenTo,var1,var2- ,ExpIf pos- (ExpApplication pos - [ExpVar pos tTokenGreaterEqual- ,ExpApplication pos [ExpVar pos tTokenFromEnum,var1]- ,ExpApplication pos [ExpVar pos tTokenFromEnum,var2]])- (ExpCon pos (getConstrId (last constrs)))- (ExpCon pos (getConstrId (head constrs)))]))- noDecls]- ])- where- var1:var2:_ = traceVars pos- funFromEnum constr num =- Fun [ExpCon pos (getConstrId constr)] - (Unguarded (ExpLit pos (LitInteger Boxed num)))- noDecls- funToEnum constr num =- Fun [ExpLit pos (LitInteger Boxed num)] - (Unguarded (ExpCon pos (getConstrId constr)))- noDecls---- ------------------------------------------------------------------------------deriveShow :: Pos - -> [Context TraceId] -> TraceId -> Instance TraceId - -> [Constr TraceId] - -> Decl TraceId-deriveShow pos contexts cls ty constrs =- DeclInstance pos contexts cls [ty]- (DeclsParse- [DeclFun pos (modArity (dropModule tTokenShowsPrec) 2)- (map funShowsPrec constrs)])- where- precVar:vars = traceVars pos- funShowsPrec constr =- Fun [precVar,ExpApplication pos (ExpCon pos conId:args)] (Unguarded- (if arity == 0 - then showStringExp (getUnqualified conId)- else- case getUnqualified conId of- ':':_ -> -- is defined in infix style (and arity == 2)- ExpApplication pos - [ExpVar pos tTokenShowParen- ,ExpApplication pos - [ExpVar pos tTokenGreater,precVar- ,ExpLit pos - (LitInteger Boxed priority)]- , showPrec priorityPlus1 (head args) - `compose`- showStringExp (' ' : getUnqualified conId ++ " ")- `compose`- showPrec priorityPlus1 (args!!1)- ]- _ ->- let labels = map snd . getConstrLabels $ constr in- if null labels - then- ExpApplication pos - [ExpVar pos tTokenShowParen- ,ExpApplication pos - [ExpVar pos tTokenGreater,precVar- ,ExpLit pos (LitInteger Boxed priority)]- ,showStringExp (getUnqualified conId ++ " ")- `compose`- foldr1 composeSpace (map (showPrec priorityPlus1) args)- ]- else- showStringExp (getUnqualified conId ++ "{")- `compose`- foldr1 composeComma (zipWith showField labels args)- `compose`- showCharExp '}'- ))- noDecls- where- showStringExp s = - ExpApplication pos - [ExpVar pos tTokenShowString- ,ExpLit pos (LitString Boxed s)]- showCharExp c = - ExpApplication pos - [ExpVar pos tTokenShowChar- ,ExpLit pos (LitChar Boxed c)]- e1 `compose` e2 = ExpApplication pos [ExpVar pos tTokenCompose,e1,e2]- e1 `composeSpace` e2 = e1 `compose` showCharExp ' ' `compose` e2- e1 `composeComma` e2 = e1 `compose` showCharExp ',' `compose` e2- showField label e = - showStringExp (getUnqualified label) `compose` showCharExp '=' - `compose` showPrec 0 e - showPrec d e = - ExpApplication pos - [ExpVar pos tTokenShowsPrec,ExpLit pos (LitInteger Boxed d),e]- args = take arity vars- conId = getConstrId constr- arity = constrArity constr- priority = toInteger (tPriority conId)- priorityPlus1 = priority+1 -- --- ------------------------------------------------------------------------------deriveRead :: Pos - -> [Context TraceId] -> TraceId -> Instance TraceId - -> [Constr TraceId] - -> Decl TraceId-deriveRead pos contexts cls ty constrs =- DeclInstance pos contexts cls [ty]- (DeclsParse- [DeclFun pos (modArity (dropModule tTokenReadsPrec) 1)- [Fun [precVar] (Unguarded (foldr1 alt . map expReadsPrec $ constrs)) - noDecls]])- where- precVar:_ = traceVars pos- e1 `alt` e2 = ExpApplication pos [ExpVar pos tTokenAlt,e1,e2]- expReadsPrec constr =- if arity == 0 - then readParen (ExpCon pos tTokenFalse) - (yield (ExpCon pos conId) `thenLex` getUnqualified conId)- else- case getUnqualified conId of- ':':_ -> -- is defined in infix style (and arity == 2)- readParen precGreaterPriority- (yield (ExpCon pos conId) `thenAp`- readsArg `thenLex` getUnqualified conId `thenAp` readsArg)- _ ->- let labels = map snd . getConstrLabels $ constr in- if null labels - then- readParen precGreaterPriority- (foldl thenAp - (yield (ExpCon pos conId) `thenLex` getUnqualified conId)- (replicate arity readsArg))- else- (foldl thenCommaField- (yield (ExpCon pos conId) `thenLex` getUnqualified conId - `thenLex` "{" `thenField` (head labels))- (tail labels))- `thenLex` "}" - where- infixl 6 `thenAp`,`thenLex`, `thenField`- readParen c e = ExpApplication pos [ExpVar pos tTokenReadParen,c,e]- yield e = ExpApplication pos [ExpVar pos tTokenYield,e]- e1 `thenLex` s = ExpApplication pos [ExpVar pos tTokenThenLex,e1,string s]- e1 `thenAp` e2 = ExpApplication pos [ExpVar pos tTokenThenAp,e1,e2]- precGreaterPriority = - ExpApplication pos - [ExpVar pos tTokenGreater,precVar- ,ExpLit pos (LitInteger Boxed priority)]- string s = ExpLit pos (LitString Boxed s)- readsArg = - ExpApplication pos - [ExpVar pos tTokenReadsPrec- ,ExpLit pos (LitInteger Boxed priorityPlus1)]- readsArg0 = - ExpApplication pos - [ExpVar pos tTokenReadsPrec- ,ExpLit pos (LitInteger Boxed 0)]- p `thenField` label = - p `thenLex` getUnqualified label `thenLex` "=" - `thenAp` readsArg0 - p `thenCommaField` label = p `thenLex` "," `thenField` label- conId = getConstrId constr- arity = constrArity constr- priority = toInteger (tPriority conId)- priorityPlus1 = priority+1 ---- ------------------------------------------------------------------------------deriveIx :: Pos - -> [Context TraceId] -> TraceId -> Instance TraceId - -> [Constr TraceId] - -> Decl TraceId-deriveIx pos contexts cls ty constrs =- DeclInstance pos contexts cls [ty]- (if all (== 0) (map constrArity constrs) - then- (DeclsParse- [DeclFun pos (modArity (dropModule tTokenRange) 1)- [Fun [ExpApplication pos [ExpCon pos tTokenTuple2,lvar,uvar]] - (Unguarded - (ExpApplication pos - [ExpVar pos tTokenMap,toEnumVar- ,ExpApplication pos - [ExpVar pos tTokenEnumFromTo- ,ExpApplication pos [fromEnumVar,lvar]- ,ExpApplication pos [fromEnumVar,uvar]]]))- (DeclsParse (declsToEnum ++ declsFromEnum))]- ,DeclFun pos (modArity (dropModule tTokenIndex) 2)- [Fun [ExpApplication pos [ExpCon pos tTokenTuple2,lvar,uvar],ivar] - (Unguarded - (ExpApplication pos - [ExpVar pos tTokenMinus- ,ExpApplication pos [fromEnumVar,ivar]- ,ExpApplication pos [fromEnumVar,lvar]]))- (DeclsParse declsFromEnum)]- ,DeclFun pos (modArity (dropModule tTokenInRange) 2)- [Fun [ExpApplication pos [ExpCon pos tTokenTuple2,lvar,uvar],ivar] - (Unguarded - (ExpApplication pos - [ExpVar pos tTokenInRange- ,ExpApplication pos - [ExpCon pos tTokenTuple2- ,ExpApplication pos [fromEnumVar,lvar]- ,ExpApplication pos [fromEnumVar,uvar]]- ,ExpApplication pos [fromEnumVar,ivar]]))- (DeclsParse declsFromEnum)]- ])- else {- exactly one constructor -}- (DeclsParse- [DeclFun pos (modArity (dropModule tTokenRange) 1)- [Fun - [ExpApplication pos [ExpCon pos tTokenTuple2,conLvars,conUvars]]- (Unguarded - (foldr ($) - (ExpApplication pos [ExpVar pos tTokenReturn,conIvars]) - (zipWith3 rangeComb lvars uvars ivars)))- noDecls]- ,DeclFun pos (modArity (dropModule tTokenIndex) 2)- [Fun - [ExpApplication pos [ExpCon pos tTokenTuple2,conLvars,conUvars]- ,conIvars] - (Unguarded- (foldl (flip ($))- (indexExp (head lvars) (head uvars) (head ivars)) - (tail (zipWith3 indexComb lvars uvars ivars))))- noDecls]- ,DeclFun pos (modArity (dropModule tTokenInRange) 2)- [Fun - [ExpApplication pos [ExpCon pos tTokenTuple2,conLvars,conUvars]- ,conIvars] - (Unguarded- (foldr1 andExp (zipWith3 inRangeExp lvars uvars ivars))) - noDecls]- ]))- where- -- for enumeration type- lvar:uvar:ivar:_ = traceVars pos- fromEnumVar = ExpVar pos tTokenLocalFromEnum- toEnumVar = ExpVar pos tTokenLocalToEnum- declsFromEnum :: [Decl TraceId]- declsFromEnum = - [DeclVarsType [(pos,tTokenLocalFromEnum)] [] - (TypeCons pos tTokenFun [ty,TypeCons pos tTokenInt []])- ,DeclFun pos tTokenLocalFromEnum (zipWith funFromEnum constrs [0..])] - declsToEnum = - [DeclVarsType [(pos,tTokenLocalToEnum)] [] - (TypeCons pos tTokenFun [TypeCons pos tTokenInt [],ty])- ,DeclFun pos tTokenLocalToEnum (zipWith funToEnum constrs [0..])]- funFromEnum constr num =- Fun [ExpCon pos (getConstrId constr)] - (Unguarded (ExpLit pos (LitInteger Boxed num))) noDecls- funToEnum constr num =- Fun [ExpLit pos (LitInteger Boxed num)] - (Unguarded (ExpCon pos (getConstrId constr))) noDecls- -- for single constructor type- [constr] = constrs- conId = getConstrId constr- arity = constrArity constr- (lvars,vars1) = splitAt arity (traceVars pos)- (uvars,vars2) = splitAt arity vars1- ivars = take arity vars2- conLvars = ExpApplication pos (ExpCon pos conId:lvars)- conUvars = ExpApplication pos (ExpCon pos conId:uvars)- conIvars = ExpApplication pos (ExpCon pos conId:ivars)- rangeComb :: Exp TraceId -> Exp TraceId -> Exp TraceId -> Exp TraceId - -> Exp TraceId- rangeComb l u i cont = - ExpApplication pos - [ExpVar pos tTokenGtGtEq- ,ExpApplication pos - [ExpVar pos tTokenRange- ,ExpApplication pos [ExpCon pos tTokenTuple2,l,u]]- ,ExpLambda pos [i] cont]- indexExp l u i =- ExpApplication pos - [ExpVar pos tTokenIndex- ,ExpApplication pos [ExpCon pos tTokenTuple2,l,u]- ,i]- indexComb :: Exp TraceId -> Exp TraceId -> Exp TraceId -> Exp TraceId - -> Exp TraceId- indexComb l u i e =- ExpApplication pos - [ExpVar pos tTokenPlus- ,indexExp l u i- ,ExpApplication pos - [ExpVar pos tTokenTimes- ,ExpApplication pos - [ExpVar pos tTokenRangeSize- ,ExpApplication pos [ExpCon pos tTokenTuple2,l,u]]- ,e]]- inRangeExp l u i =- ExpApplication pos - [ExpVar pos tTokenInRange- ,ExpApplication pos [ExpCon pos tTokenTuple2,l,u]- ,i]- andExp :: Exp TraceId -> Exp TraceId -> Exp TraceId- andExp e1 e2 = ExpApplication pos [ExpVar pos tTokenAndAnd,e1,e2]---- ------------------------------------------------------------------------------- helper functions---- infinite list of variables--- only need not conflict with names of standard class methods-traceVars :: Pos -> [Exp TraceId]-traceVars pos = - map (ExpVar pos . mkLambdaBound defaultAuxInfo . mkUnqualifiedTokenId . - ('y':) . show) [1..]---------
− trans/TraceId.hs
@@ -1,316 +0,0 @@-module TraceId- ( TraceId -- abstract type- , Fixity(L,R,Pre,Def,None)- , TyCls(Ty,Cls,Syn)- -- constructors:- , mkLambdaBound -- :: InitAuxInfo -> TokenId -> TraceId- , mkModule -- :: InitAuxInfo -> TokenId -> TraceId- , mkClass -- :: InitAuxInfo -> TokenId -> TraceId- , mkTyVar -- :: InitAuxInfo -> TokenId -> TraceId- , mkTyCon -- :: InitAuxInfo -> TokenId -> TraceId- , mkField -- :: InitAuxInfo -> TokenId -> TraceId- , plus -- :: TokenId -> AuxiliaryInfo -> TraceId- -- modifiers- , dropModule -- :: TraceId -> TraceId- , modLambdaBound -- :: InitAuxInfo -> TraceId -> TraceId- , modLetBound -- :: TraceId -> TraceId- , modArity -- :: TraceId -> Int -> TraceId- -- selectors:- , tokenId -- :: TraceId -> TokenId- , arity -- :: TraceId -> Maybe Int- , isLambdaBound -- :: TraceId -> Bool- , fixPriority -- :: TraceId -> Int- , tFixity -- :: TraceId -> Fixity- , tPriority -- :: TraceId -> Int {0-9}- , getUnqualified -- :: TraceId -> String- , hasInfo -- :: TraceId -> Bool- , hasValueInfo -- :: TraceId -> Bool- , tyClsInfo -- :: TraceId -> TyCls- , isExpandableTypeSynonym -- :: TraceId -> Bool- , typeSynonymBody -- :: TraceId -> Maybe TySynBody- , isTraced -- :: TraceId -> Bool- , tTokenCons,tTokenNil,tTokenGtGt,tTokenGtGtEq,tTokenFail- , tTokenAndAnd,tTokenEqualEqual,tTokenGreaterEqual,tTokenGreater,tTokenMinus- , tTokenTrue,tTokenFalse,tTokenEQ,tTokenCompare- ,tTokenLocalFromEnum,tTokenInt,tTokenMinBound,tTokenMaxBound- ,tTokenFromEnum,tTokenToEnum,tTokenEnumFrom,tTokenEnumFromThen- ,tTokenEnumFromTo,tTokenEnumFromThenTo,tTokenError- ,tTokenCompose,tTokenShowsPrec,tTokenShowParen,tTokenShowChar- ,tTokenShowString,tTokenReadsPrec,tTokenReadParen,tTokenYield- ,tTokenAlt,tTokenThenAp,tTokenThenLex,tTokenRange,tTokenIndex,tTokenInRange- ,tTokenMap,tTokenLocalToEnum,tTokenTuple2,tTokenFun- ,tTokenRangeSize,tTokenReturn,tTokenPlus,tTokenTimes -- :: TraceId- ) where--import TokenId - (TokenId,mkQualifiedTokenId,extractV,dropM,t_Colon,t_List,t_gtgt,t_gtgteq- ,tfail,t_andand,t_equalequal,t_greater,t_greaterequal,tminus,tTrue- ,tFalse,tEQ,tcompare,visImport,tInt,tminBound,tmaxBound- ,tfromEnum,ttoEnum,tenumFrom,tenumFromThen,tenumFromTo- ,tenumFromThenTo,t_error,t_dot,tshowsPrec,tshowParen,tshowChar- ,tshowString,treadsPrec,treadParen,trange,tindex,tinRange,t_Tuple,t_Arrow)-import AuxTypes (AuxiliaryInfo(..),InitAuxInfo(..),Fixity(..),TyCls(..)- ,TySynBody,emptyAux,untracedEmptyAux)-import Data.Maybe (isJust)-import SysDeps (unpackPS)---data TraceId = TI TokenId (Maybe AuxiliaryInfo)--instance Eq TraceId where- TI t1 _ == TI t2 _ = t1 == t2----- construction functions--mkLambdaBound :: InitAuxInfo -> TokenId -> TraceId-mkLambdaBound (InitAuxInfo tr) t = - TI t (Just (Value{ args=(-1), fixity=Def, priority=9, letBound=False- , traced=tr}))--plus :: TokenId -> AuxiliaryInfo -> TraceId-t `plus` aux = TI t (Just aux)--mkModule :: InitAuxInfo -> TokenId -> TraceId-mkModule = mkLambdaBound--mkClass :: InitAuxInfo -> TokenId -> TraceId-mkClass = mkLambdaBound--mkTyVar :: InitAuxInfo -> TokenId -> TraceId-mkTyVar = mkLambdaBound--mkTyCon :: InitAuxInfo -> TokenId -> TraceId-mkTyCon = mkLambdaBound--mkField :: InitAuxInfo -> TokenId -> TraceId-mkField = mkLambdaBound------ modification functions---- drop qualifier-dropModule :: TraceId -> TraceId-dropModule (TI tokenId aux) = TI (dropM tokenId) aux--modLambdaBound :: InitAuxInfo -> TraceId -> TraceId-modLambdaBound iai (TI token (Just aux@Value{})) = - TI token (Just aux{letBound=False})-modLambdaBound iai (TI token _) = mkLambdaBound iai token--modLetBound :: TraceId -> TraceId-modLetBound (TI token (Just aux)) = TI token (Just aux{letBound=True,args=0})-modLetBound (TI token Nothing) = error "modLetBound"--modArity :: TraceId -> Int -> TraceId-modArity (TI token (Just aux)) arity = TI token (Just aux{args=arity})-modArity (TI token Nothing) arity = error "modArity"---- selection functions--tokenId :: TraceId -> TokenId-tokenId (TI t _) = t--arity :: TraceId -> Maybe Int-arity (TI _ (Just Value{args=a})) = Just a-arity (TI _ _) = Nothing- -isLambdaBound :: TraceId -> Bool-isLambdaBound (TI _ (Just Value{letBound=b})) = not b-isLambdaBound (TI _ Nothing) = - error "TraceId.isLambdaBound: no aux information"--tFixity :: TraceId -> Fixity-tFixity (TI _ Nothing) = Def-tFixity (TI _ (Just info)) = fixity info--tPriority :: TraceId -> Int {- 0-9 -}-tPriority (TI _ Nothing) = 9-tPriority (TI _ (Just info)) = priority info--fixPriority :: TraceId -> Int-fixPriority (TI _ Nothing) = 3 -- default fixity and priority-fixPriority (TI _ (Just info)) = encode (fixity info) (priority info)- where- encode Def _ = 3- encode L n = 2 + (n*4)- encode R n = 1 + (n*4)- encode None n = 0 + (n*4)- encode (Pre _) n = 0 + (n*4)--getUnqualified :: TraceId -> String-getUnqualified = reverse . unpackPS . extractV . tokenId--hasInfo :: TraceId -> Bool-hasInfo (TI _ aux) = isJust aux--hasValueInfo :: TraceId -> Bool-hasValueInfo (TI _ (Just Value{})) = True-hasValueInfo (TI _ _) = False--tyClsInfo :: TraceId -> TyCls-tyClsInfo (TI _ (Just (TyCls tyCls))) = tyCls--isExpandableTypeSynonym :: TraceId -> Bool-isExpandableTypeSynonym (TI _ (Just (TyCls (Syn n _)))) = n > 0-isExpandableTypeSynonym _ = False--typeSynonymBody :: TraceId -> Maybe TySynBody-typeSynonymBody (TI _ (Just (TyCls (Syn _ body)))) = Just body-typeSynonymBody _ = Nothing--typeSynonymHelpers :: TraceId -> Maybe Int-typeSynonymHelpers (TI _ (Just (TyCls (Syn helpers _)))) = Just helpers-typeSynonymHelpers _ = Nothing--isTraced :: TraceId -> Bool-isTraced (TI _ (Just Value{traced=tr})) = tr---- TraceId versions of some hardcoded tokens --tTokenCons :: TraceId-tTokenCons = t_Colon `plus` untracedEmptyAux{args=2}--tTokenNil :: TraceId-tTokenNil = t_List `plus` untracedEmptyAux{args=0}--tTokenGtGt :: TraceId-tTokenGtGt = t_gtgt `plus` untracedEmptyAux--tTokenGtGtEq :: TraceId-tTokenGtGtEq = t_gtgteq `plus` untracedEmptyAux--tTokenFail :: TraceId-tTokenFail = tfail `plus` untracedEmptyAux--tTokenAndAnd :: TraceId-tTokenAndAnd = t_andand `plus` untracedEmptyAux{args=2}--tTokenEqualEqual :: TraceId-tTokenEqualEqual = t_equalequal `plus` untracedEmptyAux--tTokenGreater :: TraceId-tTokenGreater = t_greater `plus` untracedEmptyAux--tTokenGreaterEqual :: TraceId-tTokenGreaterEqual = t_greaterequal `plus` untracedEmptyAux--tTokenMinus :: TraceId-tTokenMinus = tminus `plus` untracedEmptyAux--tTokenTrue :: TraceId-tTokenTrue = tTrue `plus` untracedEmptyAux{args=0}--tTokenFalse :: TraceId-tTokenFalse = tFalse `plus` untracedEmptyAux{args=0}--tTokenEQ :: TraceId-tTokenEQ = tEQ `plus` untracedEmptyAux{args=0}--tTokenCompare :: TraceId-tTokenCompare = tcompare `plus` untracedEmptyAux--tTokenLocalFromEnum :: TraceId-tTokenLocalFromEnum = visImport "localFromEnum" `plus` untracedEmptyAux{args=1}--tTokenInt :: TraceId-tTokenInt = tInt `plus` untracedEmptyAux--tTokenMinBound :: TraceId-tTokenMinBound = tminBound `plus` untracedEmptyAux--tTokenMaxBound :: TraceId-tTokenMaxBound = tmaxBound `plus` untracedEmptyAux--tTokenFromEnum :: TraceId-tTokenFromEnum = tfromEnum `plus` untracedEmptyAux--tTokenToEnum :: TraceId-tTokenToEnum = ttoEnum `plus` untracedEmptyAux--tTokenEnumFrom :: TraceId-tTokenEnumFrom = tenumFrom `plus` untracedEmptyAux--tTokenEnumFromTo :: TraceId-tTokenEnumFromTo = tenumFromTo `plus` untracedEmptyAux--tTokenEnumFromThen :: TraceId-tTokenEnumFromThen = tenumFromThen `plus` untracedEmptyAux--tTokenEnumFromThenTo :: TraceId-tTokenEnumFromThenTo = tenumFromThenTo `plus` untracedEmptyAux--tTokenError :: TraceId-tTokenError = t_error `plus` untracedEmptyAux{args=1}--tTokenCompose :: TraceId-tTokenCompose = t_dot `plus` untracedEmptyAux{args=3}--tTokenShowsPrec :: TraceId-tTokenShowsPrec = tshowsPrec `plus` untracedEmptyAux--tTokenShowParen :: TraceId-tTokenShowParen = tshowParen `plus` untracedEmptyAux{args=2}--tTokenShowString :: TraceId-tTokenShowString = tshowString `plus` untracedEmptyAux{args=0}--tTokenShowChar :: TraceId-tTokenShowChar = tshowChar `plus` untracedEmptyAux{args=0}--tTokenReadsPrec :: TraceId-tTokenReadsPrec = treadsPrec `plus` untracedEmptyAux--tTokenReadParen :: TraceId-tTokenReadParen = treadParen `plus` untracedEmptyAux{args=2}--tTokenYield :: TraceId-tTokenYield = - mkQualifiedTokenId "PreludeBasic" "yield" `plus` untracedEmptyAux{args=2}--tTokenAlt :: TraceId-tTokenAlt = - mkQualifiedTokenId "PreludeBasic" "alt" `plus` untracedEmptyAux{args=3}--tTokenThenLex :: TraceId-tTokenThenLex = - mkQualifiedTokenId "PreludeBasic" "thenLex" `plus` untracedEmptyAux{args=2}--tTokenThenAp :: TraceId-tTokenThenAp = - mkQualifiedTokenId "PreludeBasic" "thenAp" `plus` untracedEmptyAux{args=0}--tTokenRange :: TraceId-tTokenRange = trange `plus` untracedEmptyAux--tTokenIndex :: TraceId-tTokenIndex = tindex `plus` untracedEmptyAux--tTokenInRange :: TraceId-tTokenInRange = tinRange `plus` untracedEmptyAux--tTokenMap :: TraceId-tTokenMap = - mkQualifiedTokenId "PreludeBasic" "map" `plus` untracedEmptyAux{args=2}--tTokenLocalToEnum :: TraceId-tTokenLocalToEnum = visImport "localToEnum" `plus` untracedEmptyAux{args=1}--tTokenTuple2 :: TraceId-tTokenTuple2 = t_Tuple 2 `plus` untracedEmptyAux{args=2}--tTokenFun :: TraceId-tTokenFun = t_Arrow `plus` untracedEmptyAux--tTokenRangeSize :: TraceId-tTokenRangeSize = mkQualifiedTokenId "Ix" "rangeSize" `plus` untracedEmptyAux--tTokenReturn :: TraceId-tTokenReturn = mkQualifiedTokenId "PreludeBasic" "return" `plus` untracedEmptyAux--tTokenPlus :: TraceId-tTokenPlus = mkQualifiedTokenId "PreludeBasic" "+" `plus` untracedEmptyAux--tTokenTimes :: TraceId-tTokenTimes = mkQualifiedTokenId "PreludeBasic" "*" `plus` untracedEmptyAux
trans/TraceTrans.hs view
@@ -1,2643 +1,2722 @@-{- ----------------------------------------------------------------------------Transform a module for generating a trace.--Names are changed.-Module names are prefixed by 'Hat.'.-Variable names are prefixed to make room for new variable names -refering to various traces and intermediate expressions.-Details of new name scheme near the end of this module.--No monad is used in the transformation, -because there is nothing inherently sequential.-Instead, the definitions of the transformation functions `t*' remind of an -attribut grammar: the arguments are the inherited attributes, the elements-of the result tuples are the synthetic attributes.----------------------------------------------------------------------------- -}--module TraceTrans (traceTrans,maybeStripOffQual) where--import Syntax-import SyntaxPos (HasPos(getPos))-import TokenId (TokenId(TupleId,Visible,Qualified)- ,mkUnqualifiedTokenId,isTidCon,visImport- ,qualify,visible,extractV,extractM,forceM,dropM- ,tPrelude,t_Tuple,t_Arrow,tTrue,tFalse,t_otherwise,t_undef- ,tMain,tmain,tseq,t_ColonNQ,t_ListNQ,tHatHack)-import TraceDerive (derive)-import SysDeps (PackedString,packString,unpackPS)-import Extra (Pos,noPos,mergePos,strPos,fromPos,mapListSnd,mapSnd)-import TraceId (TraceId,tokenId,arity,isLambdaBound,isTraced- ,fixPriority,mkLambdaBound,mkTyCon,mkField- ,getUnqualified,modLetBound,hasValueInfo,tyClsInfo,typeSynonymBody- ,isExpandableTypeSynonym,TyCls(Ty,Cls,Syn)- ,tTokenCons,tTokenNil,tTokenGtGt,tTokenGtGtEq,tTokenFail- ,tTokenAndAnd,tTokenEqualEqual,tTokenGreaterEqual,tTokenMinus- ,tTokenFun)-import AuxTypes (AuxiliaryInfo,TySynBody(..),possTuple- ,InitAuxInfo,defaultAuxInfo,initAuxInfo) -import Data.List (isPrefixOf,union,partition,nubBy,delete)-import Data.Char (isAlpha,digitToInt)-import Data.Ratio (numerator,denominator)-import Data.Maybe (fromJust,catMaybes,isNothing,isJust)---- import Extra (strace)--infixr 6 `typeFun` -- hbc won't let me declare this later.--type Arity = Int--data Scope = Global | Local deriving Eq--isLocal :: Scope -> Bool-isLocal Local = True-isLocal Global = False----- ------------------------------------------------------------------------------- Transform a module--traceTrans :: Bool -- transform for tracing/suspect (not non-tracing/trusted)- -> String -- filename of module - -> String -- base filename for the trace files (without extension)- -> Module TraceId -> Module TokenId-traceTrans traced filename traceFilename - (Module pos modId exps impDecls fixDecls decls) =- Module pos- modId'- (if isMain modId then Just [] {- export everything -} - else tExports traced exps - (decls'++conNameDefs++globalVarNameDefs) modId')- (tImpDecls traced modId impDecls)- [] -- no fix info needed, because pretty printed output not ambiguous- (DeclsParse - (decls' - ++ [defNameMod pos modId filename traced]- ++ conNameDefs - ++ globalVarNameDefs- ++ map (defNameVar Global Local modTrace) mvars- ++ map (defNameVar Local Local modTrace) vars - ++ (if traced then map (defNamePos modTrace) poss else [])- ++ if isMain modId then [defMain traced traceFilename] else [] ))- where- conNameDefs = map (defNameCon modTrace) cons - globalVarNameDefs = map (defNameVar Global Global modTrace) tvars - modId' = nameTransModule modId- modTrace = ExpVar pos (nameTraceInfoModule modId)- (poss,tvars,vars,mvars,cons) = getModuleConsts consts- (DeclsParse decls',consts) = tDecls Global traced (mkRoot pos) decls- ---- ------------------------------------------------------------------------------- If module is part of the given module (Prelude or TPrelude),--- then strip off all of these module qualifications from identifiers.--- These qualified identifiers are introduced by desugaring in the parser--- and the fixity correction.--maybeStripOffQual :: String -> Module TokenId -> Module TokenId-maybeStripOffQual p mod@(Module pos modId exps impDecls fixDecls decls) =- if isPreModule p modId then fmap (stripModule p) mod else mod--isPreModule :: String -> TokenId -> Bool-isPreModule p = (p `isPrefixOf`) . reverse . unpackPS . extractV --stripModule :: String -> TokenId -> TokenId-stripModule qual' (Qualified qual unqual) | qual' == qualModule qual =- Visible unqual-stripModule qual token = token--qualModule :: PackedString -> String-qualModule = reverse . unpackPS- -- reverse . takeWhile (/= '.') . unpackPS---- ------------------------------------------------------------------------------- construct new main function definition---- main = T.traceIO "artFilename" gmain--- main = do--- T.openTrace "artFilename"--- case omain Prelude.undefined Prelude.undefined of--- T.R v _ -> v--- T.closeTrace-defMain :: Bool -> String -> Decl TokenId--defMain traced artFilename =- DeclFun noPos tokenmain - [Fun [] (Unguarded - (ExpApplication noPos - [ExpVar noPos tokenTraceIO- ,ExpLit noPos (LitString Boxed artFilename)- ,ExpApplication noPos - [ExpVar noPos tokengmain,mkSRExp noPos False,mkRoot noPos]]))- noDecls]- where- tokenmain = visible (reverse "main")- tokengmain = nameTransLetVar (mkLambdaBound (initAuxInfo traced) tmain)---- ------------------------------------------------------------------------------- Transform imports and exports--makeExport :: Decl TokenId -> [Export TokenId]-makeExport (DeclType (Simple _ id _) _) = - [ExportEntity noPos (EntityConClsSome noPos id [])]-makeExport (DeclData _ _ (Simple _ id _) _ _) =- [ExportEntity noPos (EntityConClsAll noPos id)]-makeExport (DeclClass _ _ id _ _ _) = - [ExportEntity noPos (EntityConClsAll noPos id)]-makeExport (DeclFun _ id _) - | (head (getUnqual id)) `elem` ['g','!','a','+','h','*'] =- -- only these functions shall be exported - [ExportEntity noPos (EntityVar noPos id)]- where- getUnqual = reverse . unpackPS . extractV-makeExport _ = [] --tExports :: Bool -> Maybe [Export TraceId] -> [Decl TokenId] -> TokenId - -> Maybe [Export TokenId]-tExports _ Nothing _ _ = Nothing-tExports _ (Just []) decls _ = Just (concatMap makeExport decls)-tExports traced (Just exports) decls thisModId = - Just (concatMap tExport exports)- where- tExport :: Export TraceId -> [Export TokenId]- tExport (ExportModid pos modId) =- if modId' == thisModId - then concatMap makeExport decls- else [ExportModid pos modId']- where- modId' = nameTransModule modId- tExport (ExportEntity pos entity) = - map (ExportEntity pos) (tEntity traced entity)---tImpDecls :: Bool -> TraceId -> [ImpDecl TraceId] -> [ImpDecl TokenId]-tImpDecls traced modId decls = - ImportQ (noPos,tPrelude) (Hiding [])- -- ^ import original Prelude qualified- -- actually should hide Prelude as far as possible using- -- ImportQ (noPos,tPrelude) (NoHiding [])- -- but nhc98 needs access to original Prelude for desugaring- :Import (noPos,tHatHack) (Hiding []) -- for list syntax : and []- :ImportQas (noPos,Visible tracingModule) - (noPos,Visible tracingModuleShort) (Hiding [])- :Import (noPos,Visible tracingModule) (NoHiding [EntityConClsSome noPos- (visImport "WrapVal") [(noPos, visImport "wrapVal")]])- -- ^ hack for nhc98 <= 1.16- :map (tImpDecl traced) decls--tImpDecl :: Bool -> ImpDecl TraceId -> ImpDecl TokenId-tImpDecl traced (Import (pos,id) spec) = - Import (pos,nameTransModule id) (tImpSpec traced spec)-tImpDecl traced (ImportQ (pos,id) spec) =- ImportQ (pos,nameTransModule id) (tImpSpec traced spec)-tImpDecl traced (ImportQas (pos1,id1) (pos2,id2) spec) =- ImportQas (pos1,nameTransModule id1) (pos2,nameTransModule id2) - (tImpSpec traced spec)-tImpDecl traced (Importas (pos1,id1) (pos2,id2) spec) =- Importas (pos1,nameTransModule id1) (pos2,nameTransModule id2) - (tImpSpec traced spec)--tImpSpec :: Bool -> ImpSpec TraceId -> ImpSpec TokenId-tImpSpec traced (NoHiding entities) = - NoHiding (concatMap (tEntity traced) entities)-tImpSpec traced (Hiding entities) = - Hiding (concatMap (tEntity traced) entities)--tEntity :: Bool -> Entity TraceId -> [Entity TokenId]-tEntity _ (EntityVar pos id) = - EntityVar pos (nameTransLetVar id) - : case arity id of- Just a | a > 0 -> [EntityVar pos (nameTraceInfoGlobalVar id)- ,EntityVar pos (nameWorker id)]- Just (-1) -> [EntityVar pos (nameShare id)]- _ -> []-tEntity traced (EntityConClsAll pos id) | hasValueInfo id = []-tEntity traced (EntityConClsAll pos id) =- case tyClsInfo id of- Ty cons labels -> (EntityConClsSome pos (nameTransTyConCls id)- (map ((,) pos . nameTransCon) consIds- ++ map ((,) pos . nameTransField) labelIds))- : map (EntityVar pos . nameTraceInfoCon) consIds- ++ map (EntityVar pos . nameTransLetVar) labelIds- ++ map (EntityVar pos . nameWorker) labelIds- ++ map (EntityVar pos . nameTraceInfoGlobalVar) labelIds- where- consIds = map (mkTyCon iai . possTuple) cons- labelIds = map (mkField iai . visImport) labels- iai = initAuxInfo traced - Syn helpers _ -> [EntityConClsSome pos (nameTransTyConCls id) []] ++- map (flip (EntityConClsSome pos) [] . - nameTransTySynHelper id) - [1..helpers] - -- Syn _ _ -> error ("tEntity: synonym with all entities: "++show (tokenId id))- Cls methods -> [EntityConClsAll pos (nameTransTyConCls id)]-tEntity _ (EntityConClsSome pos id posIds) | hasValueInfo id = []-tEntity _ (EntityConClsSome pos id posIds) =- case tyClsInfo id of- Ty _ _ -> (EntityConClsSome pos (nameTransTyConCls id)- (mapListSnd nameTransCon pCons- ++ mapListSnd nameTransField pFields))- : map (\(pos,id) -> EntityVar pos (nameTransLetVar id)) pFields- ++ map (\(pos,id) -> EntityVar pos (nameWorker id)) pFields- ++ map (\(pos,id) -> EntityVar pos (nameTraceInfoGlobalVar id)) - pFields- ++ map (\(pos,id) -> EntityVar pos (nameTraceInfoCon id)) pCons- Syn helpers _ -> [EntityConClsSome pos (nameTransTyConCls id) []] ++- map (flip (EntityConClsSome pos) [] . - nameTransTySynHelper id) - [1..helpers] - Cls _ -> [EntityConClsSome pos (nameTransTyConCls id) - (mapListSnd nameTransLetVar posIds - ++ mapListSnd nameShare posIds)]- where- (pCons,pFields) = partition (isTidCon.tokenId.snd) posIds---- ------------------------------------------------------------------------------- New top-level definitions for generating shared trace info--- --- Trace info for positions and identifier information. They have to be --- top-level, so that they (and their side-effect) are only evaluated once.--- INCOMPLETE: an optimising compiler may need noinline pragma. --- The variables referring to variable information need to include the --- position in the name, because the same variable name may be used several --- times.--defNameMod :: Pos -> TraceId -> String -> Bool -> Decl TokenId-defNameMod pos id filename traced =- DeclFun pos (nameTraceInfoModule id) - [Fun [] - (Unguarded - (ExpApplication pos - [ExpVar pos tokenMkModule- ,ExpLit pos (LitString Boxed (fixPrelude (getUnqualified id)))- ,ExpLit pos (LitString Boxed filename)- ,ExpCon pos (if traced then tTrue else tFalse)])) - noDecls]- where- fixPrelude mod | "Prelude" `isPrefixOf` mod = "Prelude"- | otherwise = mod--defNameCon :: Exp TokenId -> (Pos,TraceId,[TraceId]) -> Decl TokenId-defNameCon modTrace (pos,id,labels) =- DeclFun pos (nameTraceInfoCon id)- [Fun []- (Unguarded- (ExpApplication pos- (ExpVar pos (tokenMkAtomConstructor withLabels)- :modTrace- :encodePos pos ++- ExpLit pos (LitInt Boxed (fixPriority id))- :ExpLit pos (LitInt Boxed (fromJust (arity id)))- :ExpLit pos (LitString Boxed (getUnqualified id))- :if withLabels- then (:[]) . mkList pos . - map (ExpVar pos . nameTraceInfoVar pos Global) $- labels- else []- )))- noDecls]- where- withLabels = not (null labels)--defNameVar :: Scope -> Scope -> Exp TokenId -> (Pos,TraceId) -> Decl TokenId-defNameVar defScope visScope refMod (pos,id) =- DeclFun pos (nameTraceInfoVar pos visScope id)- [Fun []- (Unguarded- (ExpApplication pos- ( ExpVar pos tokenMkAtomVariable- : refMod- : encodePos pos ++- [ExpLit pos (LitInt Boxed (fixPriority id))- -- all identifiers in definition position are assumed to - -- be equipped with an arity; - -- only those defined by pattern bindings do not; they have arity 0.- ,ExpLit pos (LitInt Boxed - (case (arity id) of - Just a -> a- Nothing -> 0))- ,ExpLit pos (LitString Boxed (getUnqualified id))- ,ExpCon pos (if isLocal defScope then tTrue else tFalse)])))- noDecls]--defNamePos :: Exp TokenId -> Pos -> Decl TokenId-defNamePos modTrace pos =- DeclFun pos (nameTraceInfoPos pos)- [Fun []- (Unguarded- (ExpApplication pos- ( ExpVar pos tokenMkPos- : modTrace- : encodePos pos)))- noDecls]--encodePos :: Pos -> [Exp TokenId]--- encoding of positions in trace file-encodePos pos =- [ExpLit pos (LitInt Boxed (10000*beginRow + beginCol))- ,ExpLit pos (LitInt Boxed (10000*endRow + endCol))]- where - (beginRow,beginCol,endRow,endCol) = fromPos pos---- ------------------------------------------------------------------------------- abstract data type --- implements sets of positions, defined this-level and local variables, --- defined methods and defined constructors (no duplicates)--- this-level means defined on the currently considered declaration level,--- local means defined in some declaration local to the current declaration.--- variables and constructors come with the position at which they are defined--- precondition: a constructor with position is only added once--- a variable with position may be added several times, because--- position may be zero --- because same position may be used for a variable, an application etc,--- a position may be added several times.--- The scope states if the variable is defined globally or locally;--data ModuleConsts = - MC [Pos] -- positions used in traces- [(Pos,TraceId)] -- this-level variable ids for traces- [(Pos,TraceId)] -- variable ids for use in traces- [(Pos,TraceId)] -- ids for methods for use in trace- [(Pos,TraceId,[TraceId])] -- constructor ids for use in traces- -- together with field labels (global)--emptyModuleConsts :: ModuleConsts-emptyModuleConsts = MC [] [] [] [] []--addPos :: Pos -> ModuleConsts -> ModuleConsts-addPos pos (MC poss tids ids mids cons) = - MC (pos `insert` poss) tids ids mids cons--addVar :: Pos -> TraceId -> ModuleConsts -> ModuleConsts-addVar pos id (MC poss tids ids mids cons) = - MC (pos `insert` poss) ((pos,id) `insert` tids) ids mids cons--addCon :: Pos -> TraceId -> [TraceId] -> ModuleConsts -> ModuleConsts-addCon pos id labels (MC poss tids ids mids cons) =- MC (pos `insert` poss) tids ids mids ((pos,id,labels) : cons)---- reclassify this-level variables as methods-classifyMethods :: ModuleConsts -> ModuleConsts-classifyMethods (MC poss tids ids [] cons) = MC poss [] ids tids cons---- both from the same declaration level-merge :: ModuleConsts -> ModuleConsts -> ModuleConsts-merge (MC poss1 tids1 ids1 mids1 cons1) (MC poss2 tids2 ids2 mids2 cons2) = - MC (poss1 `union` poss2) (tids1 `union` tids2) (ids1 `union` ids2) - (mids1 `union` mids2) (cons1 ++ cons2)---- combine this declaration level with a local declaration level-withLocal :: ModuleConsts -> ModuleConsts -> ModuleConsts-withLocal (MC poss1 tids1 ids1 mids1 cons1) (MC poss2 tids2 ids2 [] []) =- MC (poss1 `union` poss2) tids1 (ids1 `union` tids2 `union` ids2) mids1 cons1-withLocal _ _ = - error "TraceTrans.withLocal: locally defined data constructors or method"--getModuleConsts :: ModuleConsts - -> ([Pos],[(Pos,TraceId)],[(Pos,TraceId)]- ,[(Pos,TraceId)],[(Pos,TraceId,[TraceId])])-getModuleConsts (MC pos tids ids mids cons) = (pos,tids,ids,mids,cons)---- avoid duplicate-insert :: Eq a => a -> [a] -> [a] -insert p ps = p : delete p ps---- ------------------------------------------------------------------------------- Transformation of declarations, expressions etc.---- the input of this transformation has a DeclFun for each definition equation--- the following function combines equations for a variable into one DeclFun-combineFuns :: [Decl TraceId] -> [Decl TraceId]-combineFuns (decl@(DeclFun pos id [fun]) : decls) =- case combineFuns decls of- (DeclFun pos2 id2 fun2s : decls') | tokenId id == tokenId id2- -> DeclFun (mergePos pos pos2) id (fun:fun2s) : decls'- xs -> decl : xs-combineFuns (decl : decls) = decl : combineFuns decls-combineFuns [] = []--tDecls :: Scope -> Bool -> Exp TokenId -> Decls TraceId - -> (Decls TokenId,ModuleConsts)-tDecls scope traced parent (DeclsParse decls) = (DeclsParse decls',declsConsts)- where- (decls',declsConsts) = - foldr combine ([],emptyModuleConsts) . map (tDecl scope traced parent) - . combineFuns $ decls- combine :: ([Decl id],[Decl id],ModuleConsts) -> ([Decl id],ModuleConsts)- -> ([Decl id],ModuleConsts)- combine (ds11,ds12,c1) (ds,c2) = (ds11++ds12++ds,c1 `merge` c2)---- for declarations in class and instance definitions:--- (considered local, because they have their own scope)-tDecls2 :: (TokenId -> TokenId) -> Bool -> Exp TokenId -> Decls TraceId - -> (Decls TokenId,[Decl TokenId],ModuleConsts)-tDecls2 qualify traced parent (DeclsParse decls) = - (DeclsParse (concat declss1 ++ catMaybes (map declSharedVar decls))- ,concat declss2- ,foldr merge emptyModuleConsts declsConstss)- where- (declss1,declss2,declsConstss) = - unzip3 (map (tDecl2 qualify traced parent) . combineFuns $ decls)---- for a method type declaration produce type declaration of sharing var-declSharedVar :: Decl TraceId -> Maybe (Decl TokenId)-declSharedVar (DeclVarsType vars contexts ty) =- Just (DeclVarsType (tPosShares vars) (tContexts contexts) (tConstType ty))-declSharedVar _ = Nothing--tDecl2 :: (TokenId -> TokenId) -> Bool -> Exp TokenId -> Decl TraceId - -> ([Decl TokenId],[Decl TokenId],ModuleConsts)-tDecl2 _ traced parent decl@(DeclFun pos id (Fun (x:xs) rhs localDecls : funs)) =- -- patch result of tFuns:- -- worker needs to be local, because it does not belong to the - -- class/instance nor can it be outside of it- -- (no known arity optimisation anyway)- ([DeclFun pos id' - [Fun args' rhs' (DeclsParse workerDecls')]]- ,[]- ,declConsts')- where- ((DeclFun _ id' [Fun args' rhs' _]:_:workerDecls'),[],declConsts') = - tDecl Local traced parent decl-tDecl2 qualify traced parent decl@(DeclFun pos id ([Fun [] rhs localDecls])) =- -- patch result of constant transformation- -- use of sharing variable needs to be qualified if class name needs to be- -- qualified (still covers not all necessary cases)- -- note when declaring instance the class may only be imported qualified- ([DeclFun pos id'- [Fun args' (Unguarded (ExpApplication pos- [a1,a2,a3,ExpVar pos (qualify id'')]))- noDecls]- ,shared'],[],declConsts')- where- ([DeclFun _ id'- [Fun args' - (Unguarded (ExpApplication _- [a1,a2,a3,ExpVar _ id''])) - _]- ,shared'],_,declConsts')- = tCaf Local traced parent pos id rhs localDecls-tDecl2 _ traced parent decl = - -- type signature only possible remaining case- tDecl Local traced parent decl---singleDecl :: Decl id -> ([Decl id],[a],ModuleConsts)-singleDecl decl = ([decl],[],emptyModuleConsts)---- Sharing of constants in classes/instances--- may be lost if class/instance has a context,--- because then the shareId also has this context and is no longer a constant.---- Division of result declarations into two lists seems to be rather--- pointless (needed in older version); --- could just return a single list instead.-tDecl :: Scope -> Bool -> Exp TokenId -> Decl TraceId - -> ([Decl TokenId],[Decl TokenId],ModuleConsts)--tDecl _ _ _ synDecl@(DeclType lhsTy rhsTy) = - (map tTypeSynonym (splitSynonym synDecl),[],emptyModuleConsts)- where- tTypeSynonym :: Decl TraceId -> Decl TokenId- tTypeSynonym (DeclType lhsTy rhsTy) = DeclType (tSimple lhsTy) (tType rhsTy)- splitSynonym :: Decl TraceId -> [Decl TraceId]- splitSynonym d@(DeclType (Simple pos tySyn tyVars) rhs) =- d : zipWith mkDeclType (hrhss rhs) [1..]- where- mkDeclType hrhs no = - DeclType (Simple pos (mkTyCon defaultAuxInfo - (nameTransTySynHelper tySyn no)) tyVars) hrhs- hrhss rhs = case rhs of - (TypeCons _ tyCon tys) - | isFunTyCon tyCon -> go rhs- | isExpandableTypeSynonym tyCon -> - hrhss (expandTypeSynonym tyCon tys)- (TypeApp ty1 ty2) -> go rhs- _ -> [] -- nothing to split off- -- it is vital that this `go' agrees with the `go' in `splitSynonym' in- -- AuxFile. Sadly the module structure of Hat is such that the two- -- functions cannot sit next to each other (or be combined) without- -- introducing a separate module for them.- go :: Type TraceId -> [Type TraceId]- go (TypeCons _ tyCon tys) - | isFunTyCon tyCon = case tys of- [] -> []- [ty] -> [ty]- [ty1,ty2] -> ty1 : (go ty2)- | isExpandableTypeSynonym tyCon = go (expandTypeSynonym tyCon tys)- go (TypeApp ty1 ty2) = go ty1 ++ go ty2- go (TypeVar _ _) = []- go ty = [ty]- -- The helper synonyms are necessary for the following reason:- -- The known-arity optimisation requires that workers of functions with- -- known arity are defined on the same level as their wrapper, not local- -- to them. If the original function was recursive, the worker will be- -- recursive instead of calling the wrapper (as without known-arity opt.).- -- Hence if the original definition had a type signature, then the worker- -- needs a type signature as well (the wrapper gets one anyway),- -- because otherwise its inferred type might not be general enough - -- (polymorphic recursion) or too general (type class ambiguities,- -- problems with existential types).- -- Transformation of the original type signature into the worker type- -- signature is not uniform: function types are handled specially.- -- So if the type includes a type synonym it may not be possible to use- -- the transformed type synonym, but the original one has to be expanded- -- and transformed in this non-uniform way. However, in general a type- -- synonym cannot be expanded, because the rhs might not be in scope at- -- the synonym use site. Hence a type synonym is split into an outer part- -- consisting of function types,type applications and type variables, - -- which can and may need to be expanded, and several inner type parts,- -- for which new helper type synonyms are defined. These are always- -- ex- and imported with the type synonym itself.- -- A lot of effort, but it does work in the end.-tDecl Global traced _ (DeclData sort contexts lhsTy constrs pClss) = - ([DeclData sort (tContexts contexts) (tSimple lhsTy) - (map tConstr constrs) []] - -- "derive" should be empty, because transformed classes cannot be derived- ,instDecl:fieldSelectorDecls++deriveDecls- ,foldr addConInfo (fieldSelectorConsts `merge` deriveConsts) constrs)- where- (DeclsParse deriveDecls,deriveConsts) = - tDecls Global False (mkRoot noPos) - (DeclsParse (derive contexts lhsTy constrs pClss))- instDecl = wrapValInstDecl traced (getPos lhsTy) contexts lhsTy constrs- (fieldSelectorDecls,fieldSelectorConsts) = mkFieldSelectors constrs- addConInfo :: Constr TraceId -> ModuleConsts -> ModuleConsts- addConInfo constr = - addCon (getPos constr) (getConstrId constr) - (map snd (getConstrLabels constr))-tDecl _ _ _ (DeclDataPrim pos id size) = - error ("Cannot trace primitive data type (" ++ show (tokenId id) - ++ " at position " ++ strPos pos ++ ")")-tDecl _ traced parent (DeclClass pos contexts clsId tyIds fundeps decls) = - ([DeclClass pos (tContexts contexts) (nameTransTyConCls clsId) - (map nameTransTyVar tyIds) (map (fmap nameTransTyVar) fundeps) decls1]- ,decls2 -- auxiliary definitions have to be outside the class definition- ,classifyMethods declsConsts)- where- (decls1,decls2,declsConsts) = tDecls2 id traced parent decls-tDecl _ traced parent (DeclInstance pos contexts clsId insts decls) = - ([DeclInstance pos (tContexts contexts) clsId'- (map tType insts) decls1]- ,decls2 -- auxiliary definitions have to be outside the instance definition- ,classifyMethods declsConsts)- where- clsId' = nameTransTyConCls clsId- qualify = case clsId' of- Qualified modrps _ -> forceM modrps- _ -> id- (decls1,decls2,declsConsts) = tDecls2 qualify traced parent decls-tDecl _ _ _ (DeclDefault tys) = ([],[],emptyModuleConsts) - -- defaulting does not work anyway, maybe warn about nonempty one?-tDecl _ _ _ d@(DeclPrimitive pos fnId arity ty) =- error "TraceTrans:tDecl _ _ _ (DeclPrimitive _ _ _ _) should not occur"-tDecl _ _ _ (DeclForeignImp pos Haskell hasName fnId arity _ ty _) =- tHaskellPrimitive pos - (if null revHasModNameP - then visible revHasUnqualName - else (qualify (tail revHasModNameP) revHasUnqualName))- fnId arity ty- where- (revHasUnqualName,revHasModNameP) = span (/= '.') . reverse $ hasName -tDecl _ _ _ - (DeclForeignImp pos callConv cname fnId arity fspec ty duplicateId) =- (funDecls- ,DeclForeignImp pos callConv- (if null cname then getUnqualified fnId else cname) - (nameForeign fnId) arity fspec (typePlain ty) (nameForeign fnId)- :wrapperDecls- ,consts)- where- (funDecls,wrapperDecls,consts) = - tHaskellPrimitive pos (nameForeign fnId) fnId arity ty-tDecl _ _ _ (DeclForeignExp pos callConv str fnId _) =- error ("Cannot trace foreign export (used at " ++ strPos pos ++ ")")-tDecl _ _ _ (DeclVarsType vars contexts ty) =- -- type signatures need to be preserved (i.e. transformed),- -- because e.g. polymorphic recursion needs them, more general- -- types may later lead to ambiguous types- ([DeclVarsType (tPosExps vars) (tContexts contexts) (tFunType ty)]- ++ concatMap mkWorkerVarsType nonConstVars- -- shared constants need to be typed, in case they are overloaded,- -- so that monomorphic restriction does not lead to type error- -- (actually then sharing is unfortunately lost)- ++ if null constVars then [] - else [DeclVarsType (tPosShares constVars) - (tContexts contexts) (tConstType ty)]- ,[],emptyModuleConsts)- where- (constVars,nonConstVars) = partition (isNonMethodConstant . snd) vars- isNonMethodConstant :: TraceId -> Bool- isNonMethodConstant id = - isLambdaBound id || -- variables in pattern bindings are lambda bound- (case arity id of- Just n -> n == 0- Nothing -> False)- mkWorkerVarsType :: (Pos,TraceId) -> [Decl TokenId]- mkWorkerVarsType (pos,id) =- case arity id of- Just n | n > 0 -> [DeclVarsType [(pos,nameWorker id)] - (tContexts contexts) (tWorkerType n ty)]- _ -> []--{-- -- Variables of arity 0 do not take SR and Trace argument, so that- -- their values are shared. Note that type signatures for class methods- -- are handled differently by tDecl2- ((if null constVars then [] - else [DeclVarsType (tPosExps constVars) - (tContexts contexts) (tConstType ty)])- ++- (if null nonConstVars then [] else [DeclVarsType (tPosExps nonConstVars) - (tContexts contexts) (tFunType ty)])- ,[],emptyModuleConsts)- where- (constVars,nonConstVars) = partition (isNonMethodConstant . snd) vars- isNonMethodConstant :: TraceId -> Bool- isNonMethodConstant id = - isLambdaBound id || -- variables in pattern bindings are lambda bound- (case arity id of- Just n -> n == 0- Nothing -> False)--}-tDecl scope traced parent (DeclPat (Alt (ExpVar pos id) rhs decls)) = - -- this case may occur because of the next equation- tCaf scope traced parent pos id rhs decls-tDecl scope traced parent (DeclPat (Alt (PatAs pos id pat) rhs decls)) = - (dFun1++dPat1,dFun2++dPat2,funConsts `merge` patConsts)- where- id' = modLetBound id- (dFun1,dFun2,funConsts) = tCaf scope traced parent pos id' rhs decls- (dPat1,dPat2,patConsts) = - tDecl scope traced parent - (DeclPat (Alt pat (Unguarded (ExpVar pos id')) noDecls))-tDecl scope traced parent (DeclPat (Alt pat rhs decls)) =- -- unfortunately we cannot transform a pattern binding into another pattern- -- binding; we have to introduce an explicit `case' to be able to terminate - -- with an appropriate error message when the pattern does not match.- -- first rewrite as p = e, then- -- xi sr p = constUse sr p zi- -- zi = constDef parent - -- (\_ -> (case patId of (t,y1,..,yn) -> projection sr t yi))- -- patId = case e' of - -- p' -> (t,y1,..,yn)- -- _ -> fail noPos parent- (map useDef patPosIds- ,DeclFun noPos patId - [Fun [] - (Unguarded - (ExpCase noPos exp'- [Alt pat'' (Unguarded tuple) noDecls- ,Alt (PatWildcard noPos) (Unguarded (mkFailExp noPos parent)) noDecls- ]))- decls']- : map projDef patPosIds- ,foldr (\(pos,id) -> addVar pos id) - (emptyModuleConsts `withLocal` altConsts) patPosIds)- where- pos = getPos pat- firstId = snd . head $ patPosIds- patId = nameTraceShared pos firstId- resultTraceId = nameTrace2 firstId- tuple = mkTupleExp noPos (ExpVar noPos resultTraceId : patVars')- patPosIds = map (\(ExpVar pos id) -> (pos,id)) patVars- (patVars',Nothing) = tPats patVars - patVars = getPatVars pat- pat'' = case pat' of- ExpApplication p [r,v,_] -> - ExpApplication p [r,v,ExpVar noPos resultTraceId]- (Fun [pat'] (Unguarded exp') decls',altConsts) = - tFun traced False parent failContinuation (Fun [pat] rhs decls)- useSR = ExpVar pos (nameSR firstId)- useParent = mkParentVar pos-- useDef :: (Pos,TraceId) -> Decl TokenId- useDef (pos,id) =- DeclFun pos (nameTransLetVar id)- [Fun [useSR,useParent]- (Unguarded (ExpApplication pos- [combConstUse pos traced,useSR,useParent,ExpVar pos (nameShare id)]))- noDecls]-- projDef :: (Pos,TraceId) -> Decl TokenId- projDef (pos,id) =- DeclFun pos (nameShare id) - [Fun []- (Unguarded (ExpApplication pos - [combConstDef pos traced - ,parent- ,ExpVar pos (nameTraceInfoVar pos scope id)- ,ExpLambda pos [PatWildcard pos]- (ExpCase pos (ExpVar pos patId)- [Alt tuple- (Unguarded - (if isLocal scope && not traced- then ExpVar pos (nameTransLambdaVar id)- else- ExpApplication pos - [ExpVar pos tokenProjection- ,mkSRExp pos traced- ,ExpVar pos resultTraceId- ,ExpVar pos (nameTransLambdaVar id)]))- noDecls])]))- noDecls]-- getPatVars :: Pat id -> [Pat id]- getPatVars (ExpRecord pat fields) =- getPatVars pat ++ concatMap getFieldVars fields- where- getFieldVars (FieldExp _ _ pat) = getPatVars pat- getPatVars (ExpApplication _ pats) = concatMap getPatVars pats- getPatVars pat@(ExpVar pos id) = [pat]- getPatVars (ExpCon _ _) = []- getPatVars (ExpLit _ _) = []- getPatVars (ExpList _ pats) = concatMap getPatVars pats- getPatVars (PatAs pos id pat) = ExpVar pos id : getPatVars pat- getPatVars (PatWildcard _) = []- getPatVars (PatIrrefutable _ pat) = getPatVars pat-tDecl scope traced parent (DeclFun pos id [Fun [] rhs localDecls]) = - tCaf scope traced parent pos id rhs localDecls- -- a caf has many dynamic parents and hence uses the static parent-tDecl _ _ parent (DeclFun pos id (Fun [] _ _ : _)) =- error ("Variable multiple defined: " ++ show (tokenId id))-tDecl scope traced parent (DeclFun pos id funs) = - tFuns scope traced pos id funs -- a function does not use the static parent-tDecl _ _ _ (DeclFixity _) = ([],[],emptyModuleConsts) - -- fixity declarations have been processed before - -- not needed in output, because pretty printer produces unambiguous output-tDecl _ _ _ (DeclIgnore s) = ([DeclIgnore s],[],emptyModuleConsts)-tDecl _ _ _ _ = error "tDecl: unknown sort of declaration"----- constructor definition in type definition-tConstr :: Constr TraceId -> Constr TokenId-tConstr (Constr pos conId tyArgs) =- Constr pos (nameTransCon conId) (tTyArgs tyArgs)-tConstr (ConstrCtx tyVars contexts pos conId tyArgs) =- ConstrCtx (tPosTyVars tyVars) (tContexts contexts) - pos (nameTransCon conId) (tTyArgs tyArgs)----- build the instance of class WrapVal for type with given data constructors--- this instance is needed for constructing and updating with labelled fields-wrapValInstDecl :: Bool -> Pos -> [Context TraceId] -> Simple TraceId - -> [Constr TraceId] -> Decl TokenId-wrapValInstDecl traced pos contexts ty constrs =- DeclInstance pos (map (fmap tokenId) contexts) tokenWrapValClass - [(fmap tokenId (simpleToType ty))] - (DeclsParse [DeclFun pos (dropM tokenWrapValFun) (map wrapValFun constrs)])- where- traceTokenWrapValFun = - mkLambdaBound (initAuxInfo traced) (dropM tokenWrapValFun)- sr = ExpVar pos (nameSR traceTokenWrapValFun)- parent = mkParentVar pos- varId = nameTrace2 traceTokenWrapValFun -- actually not a trace- var = ExpVar pos varId- infiniteTraces = map (ExpVar pos) . nameArgs $ traceTokenWrapValFun- wrapValFun :: Constr TraceId -> Fun TokenId- wrapValFun constr =- Fun [sr,PatAs pos varId consApp,parent] - (Unguarded (wrapExp pos var consAppTrace)) noDecls- where- consAppTrace = - if numOfArgs == 0 - then ExpApplication pos- [ExpVar pos tokenMkExpValueUse,parent,sr,funAtom]- else ExpApplication pos .- (ExpVar pos (tokenMkExpValueApp numOfArgs) :) . (parent :) .- (sr :) . (funAtom :) $ traces - funAtom = ExpVar pos (nameTraceInfoCon consId)- consApp =- if numOfArgs == 0 then ExpCon pos (tokenId consId)- else ExpApplication pos . (ExpCon pos (tokenId consId) :) .- map (wrapExp pos (PatWildcard pos)) $ traces- consId = getConstrId constr- traces = take numOfArgs infiniteTraces :: [Exp TokenId]- numOfArgs = sum . map (repeated . fst) $ constrArgs- repeated Nothing = 1- repeated (Just labels) = length labels- constrArgs :: [(Maybe [(Pos,TraceId)],Type TraceId)]- constrArgs = getConstrArgumentList constr---tHaskellPrimitive :: Pos -> TokenId -> TraceId -> Arity -> Type TraceId - -> ([Decl TokenId],[Decl TokenId],ModuleConsts)-tHaskellPrimitive pos hasId fnId arity ty - -- import of a Haskell function- -- used for defining builtin Haskell functions- -- transformation yields a wrapper to the untransformed function- | arity == 0 =- ( [ DeclVarsType [(pos,nameTransLetVar fnId)] [] (tFunType ty)- , DeclFun pos (nameTransLetVar fnId)- [ Fun [sr,parent] - (Unguarded (ExpApplication pos [combConstUse pos False,sr- ,parent,ExpVar pos shareId]))- noDecls ] ]- , [DeclFun pos shareId- [Fun []- (Unguarded (ExpApplication pos - [combConstDef pos False,mkRoot pos- ,ExpVar pos (nameTraceInfoVar pos Global fnId)- ,ExpLambda pos [parent] - (ExpApplication pos - [expFrom pos ty,parent, ExpVar pos hasId])]))- noDecls]]- , addVar pos fnId emptyModuleConsts)- | otherwise =- ([DeclVarsType [(pos,nameTransLetVar fnId)] [] (tFunType ty)- ,DeclFun pos (nameTransLetVar fnId) - [Fun [sr,parent]- (Unguarded - (ExpApplication pos - [combFun pos False arity- ,ExpVar pos (nameTraceInfoVar pos Global fnId)- ,sr,parent,ExpVar pos wrappedId']))- noDecls]]- ,[DeclFun pos wrappedId' - [Fun (args++[hidden])- (Unguarded (ExpApplication pos- [expFrom pos tyRes,hidden- ,ExpApplication pos (ExpVar pos hasId : zipWith to tyArgs args)]))- noDecls]]- ,addVar pos fnId emptyModuleConsts)- where- parent = mkParentVar pos- sr = ExpVar pos (nameSR fnId)- hidden = ExpVar pos (nameTrace2 fnId)- args = take arity . map (ExpVar pos) . nameArgs $ fnId- wrappedId' = nameWorker fnId- shareId = nameShare fnId- to :: Type TraceId -> Exp TokenId -> Exp TokenId- to ty arg = ExpApplication pos [expTo pos ty, hidden, arg]- -- assert: length (tyArgs) = arity- (tyArgs,tyRes) = decomposeFunType ty- decomposeFunType :: Type TraceId -> ([Type TraceId],Type TraceId)- decomposeFunType (TypeCons _ tyCon [ty1,ty2]) | isFunTyCon tyCon =- (ty1:args,res) - where- (args,res) = decomposeFunType ty2- decomposeFunType ty = ([],ty)---mkFieldSelectors :: [Constr TraceId] -> ([Decl TokenId],ModuleConsts)-mkFieldSelectors constrs = - foldr combine ([],emptyModuleConsts) . map (uncurry mkFieldSelector) $ - nonDuplicatePosFields- where- combine :: ([Decl TokenId],ModuleConsts) -> ([Decl TokenId],ModuleConsts) - -> ([Decl TokenId],ModuleConsts)- combine (decls1,modConsts1) (decls2,modConsts2) = - (decls1++decls2,modConsts1 `merge` modConsts2)- nonDuplicatePosFields :: [(Pos,TraceId)]- nonDuplicatePosFields = - nubBy (\(_,id1) (_,id2) -> tokenId id1 == tokenId id2) posFields- posFields = - concat [pf | (Just pf,_) <- concatMap getConstrArgumentList constrs]----- construct the traced version of a field selector, using the --- normal field selector, i.e. from zname :: T -> R Int construct--- gname :: SR -> Trace -> R (Fun T Int)--- gname sr p = fun1 "name" hname sr p--- hname :: Trace -> R T -> R Int--- hname p (R v _) = projection mkNoSrcPos p (zname v)-mkFieldSelector :: Pos -> TraceId -> ([Decl TokenId],ModuleConsts)-mkFieldSelector pos fieldId =- ([DeclFun pos (nameTransLetVar fieldId) - [Fun [sr,parent]- (Unguarded- (ExpApplication pos- [combFun pos False 1- ,ExpVar pos (nameTraceInfoVar pos Global fieldId)- ,sr,parent,ExpVar pos wrappedId']))- noDecls]- ,DeclFun pos wrappedId' - [Fun [wrapExp pos var (PatWildcard pos),parent] - (Unguarded - (ExpApplication pos - [ExpVar pos tokenProjection,mkSRExp pos False,parent- ,ExpApplication pos [ExpVar pos (nameTransField fieldId),var]- ])) - noDecls]]- ,addVar pos fieldId emptyModuleConsts)- where- sr = ExpVar pos (nameSR fieldId)- parent = mkParentVar pos- wrappedId' = nameWorker fieldId- var = ExpVar pos varId- varId:_ = nameArgs fieldId---tCaf :: Scope -> Bool -> Exp TokenId -> Pos -> TraceId -> Rhs TraceId - -> Decls TraceId- -> ([Decl TokenId],[Decl TokenId],ModuleConsts)-tCaf scope traced parent pos id rhs localDecls =- -- id sr p = constUse sr p id'- -- id' = constDef parent "id" (\p' -> [[rhs]]_p')- ([DeclFun pos (nameTransLetVar id)- [Fun [useSR,useParent] - (Unguarded (ExpApplication pos - [combConstUse pos traced,useSR,useParent,id'])) - noDecls]- ,DeclFun pos idId'- [Fun [] - (Unguarded (ExpApplication pos - [combConstDef pos traced,parent- ,ExpVar pos (nameTraceInfoVar pos scope id)- ,ExpLambda pos [useParent] (smartExpLet pos localDecls' rhs')])) - noDecls]]- ,[]- ,addVar pos id emptyModuleConsts `withLocal` - (rhsConsts `merge` localDeclsConsts))- where- idId' = nameShare id- id' = ExpVar pos idId'- useSR = ExpVar pos (nameSR id)- useParent = mkParentVar pos- (rhs',rhsConsts) = tRhs traced True useParent failContinuation rhs- (localDecls',localDeclsConsts) = tDecls Local traced useParent localDecls- smartExpLet :: Pos -> Decls a -> Exp a -> Exp a- smartExpLet pos (DeclsParse []) e = e- smartExpLet pos decls e = ExpLet pos decls e--tFuns :: Scope -> Bool -> Pos -> TraceId -> [Fun TraceId]- -> ([Decl TokenId],[Decl TokenId],ModuleConsts)--tFuns scope traced pos id funs =- (DeclFun pos (nameTransLetVar id) - [Fun [sr,parent]- (Unguarded- (ExpApplication pos- [combFun pos traced funArity- ,ExpVar pos (nameTraceInfoVar pos scope id)- ,sr,parent,ExpVar pos wrappedId']))- noDecls]- : (if isLocal scope - then (DeclFun pos (nameTraceInfoVar pos Global id) - [Fun [] (Unguarded - (ExpVar pos (nameTraceInfoVar pos Local id))) noDecls] :) - else \x->x)- (DeclFun pos wrappedId' (funs') : newDecls')- -- The known-arity application optimisation needs a nameTraceInfoVar of- -- the global kind (the name does not include the definition position)- -- Hence for local definitions we need to define the nameTraceInfoVar- -- in terms of the "local" nameTraceInfoVar that is defined globally.- -- In same scope as type decl- , []- ,addVar pos id (emptyModuleConsts `withLocal` funConsts))- where- funArity = case funs of (Fun pats _ _ : _) -> length pats- sr = ExpVar pos (nameSR id)- parent = mkParentVar pos- wrappedId' = nameWorker id- (funs',newDecls',funConsts) = - tFunClauses traced pos parent (nameFuns id) - (map (ExpVar pos) (nameArgs id)) funArity False funs--tFunClauses :: Bool- -> Pos - -> Exp TokenId -- variable that can be bound to parent- -> [TokenId] -- ids for definitions that clauses are turned into- -> [Exp TokenId] -- vars for naming arguments that are not vars- -> Arity- -> Bool -- preceeding fun-clause will never fail- -> [Fun TraceId] - -> ([Fun TokenId],[Decl TokenId],ModuleConsts)--tFunClauses _ _ _ _ _ _ True [] = ([],[],emptyModuleConsts)-tFunClauses _ pos parent ids pVars funArity False [] =- ([Fun - (replicate funArity (PatWildcard pos) ++ [parent])- (Unguarded (continuationToExp parent failContinuation)) noDecls]- ,[],emptyModuleConsts)-tFunClauses traced pos parent ids pVars funArity _ (fun@(Fun pats _ _) : funs)- | not (null funs) && funCanFail fun =- ([Fun (pats'' ++ [parent]) rhs' decls'- ,Fun (vars ++ [parent]) - (Unguarded (continuationToExp parent failCont)) noDecls]- ,DeclFun pos contId funs' : funsDecls- ,funConsts `merge` funsConsts)- where- contId = head ids- failCont = functionContinuation contId vars- (pats'',vars) = namePats pats' pVars - (Fun pats' rhs' decls',funConsts) = tFun traced True parent failCont fun- (funs',funsDecls,funsConsts) = - tFunClauses traced pos parent (tail ids) pVars - funArity (neverFailingPats pats) funs-tFunClauses traced pos parent ids pVars funArity _ (fun@(Fun pats _ _): funs) =- -- last clause or guards and numeric literals cannot fail- (Fun (pats'++[parent]) rhs' decls' : funs'- ,funsDecls- ,funConsts `merge` funsConsts)- where- (Fun pats' rhs' decls',funConsts) = - tFun traced True parent failContinuation fun- (funs',funsDecls,funsConsts) = tFunClauses traced pos parent ids pVars - funArity (neverFailingPats pats) funs---{---- Numeric literals need to be overloaded with respect to the new--- transformed numeric classes; hence they cannot just be left wrapped--- in patterns--- Transform such literals into equality conditions in guards.--- Need also to desugare ~, because that is the easiest way to deal with --- literals within the scope of a ~. NOT YET DONE.-tFun :: Bool -- traced- -> Bool -- this is reduct of parent- -> Exp TokenId -- parent- -> ContExp -- continuation in case of pattern match failure- -> Fun TraceId -> (Fun TokenId,ModuleConsts)--- Definition similar to tGuardedExps-tFun traced cr parent contExp (Fun pats rhs decls) =- if null conditions -- implies null patsDecls- then (Fun pats' (Unguarded rhs') decls',declsConsts `withLocal` rhsConsts)- else- (Fun pats' - (Unguarded (ExpApplication pos - (if traced - then- [combGuard pos True,mkSRExp pos traced,parent,cond'- ,ExpLambda pos [newParent] (ExpLet pos patsDecls' rhs')- ,ExpLambda pos [newParent] - (continuationToExp newParent contExp)]- else- [combGuard pos False,cond',ExpLet pos patsDecls' rhs'- ,continuationToExp parent contExp])- )) decls'- ,pos `addPos` condConsts `merge` patsDeclsConsts `merge` declsConsts - `withLocal` rhsConsts) - -- condConsts contains positions of the boolean expressions- -- patsDeclsConsts contains positions of the bound variables- where- (pats',conditions,patsDecls) = tPats pats- (patsDecls',patsDeclsConsts) = - tDecls Local traced (if traced then newParent else parent) - (DeclsParse patsDecls) - (cond',condConsts) = tExp traced False parent (foldr1 andExp conditions)- (rhs',rhsConsts) = - tRhs traced cr - (if null conditions || not traced then parent else newParent) contExp rhs- (decls',declsConsts) = tDecls Local traced parent decls- andExp :: Exp TraceId -> Exp TraceId -> Exp TraceId- andExp e1 e2 = ExpApplication pos [ExpVar pos tTokenAndAnd,e1,e2]- pos = getPos pats- newParent = ExpVar pos (nameFromPos pos)--}---- Numeric literals need to be overloaded with respect to the new--- transformed numeric classes; hence they cannot just be left wrapped--- in patterns--- Transform such literals and n+k patterns into conditions in guards.--- Have to be careful to preserve left-to-right pattern matching,--- e.g. f 1 True = ... -> f x True | x == 1 = ... is wrong.--- Assume that ~ has been removed before.-tFun :: Bool -- traced- -> Bool -- this is reduct of parent- -> Exp TokenId -- parent- -> ContExp -- continuation in case of pattern match failure- -> Fun TraceId -> (Fun TokenId,ModuleConsts)--- Definition similar to tGuardedExps-tFun traced cr parent contExp (Fun pats rhs decls) =- if isNothing numericLitInfos- then (Fun pats' (Unguarded rhs') decls',declsConsts `withLocal` rhsConsts)- else- (Fun pats' - (Unguarded (ExpApplication pos - (if traced - then- [combGuard pos True,mkSRExp pos traced,parent,cond'- ,ExpLambda pos [parent]- (ExpApplication pos (ExpVar pos nameFun:argvars++[parent]))- ,ExpLambda pos [parent] - (continuationToExp parent contExp)]- else- [combGuard pos False,cond'- ,ExpApplication pos (ExpVar pos nameFun:argvars++[parent])- ,continuationToExp parent contExp])- )) - (DeclsParse (def:decl'))- ,pos `addPos` condConsts `merge` declConsts `merge` funConsts) - -- condConsts contains positions of the boolean expressions- -- patsDeclsConsts contains positions of the bound variables- where- (pats',numericLitInfos) = tPats pats- (rhs',rhsConsts) = - tRhs traced cr parent contExp rhs- (decls',declsConsts) = tDecls Local traced parent decls- Just (cond,bindings,argvars,argpats) = numericLitInfos-- (cond',condConsts) = tExp traced False parent cond- (DeclsParse decl',declConsts) = - tDecls Local traced parent (DeclsParse bindings)- def = DeclFun pos nameFun - [Fun (fpats'++[parent]) frhs' fdecls'- ,Fun (replicate funArity (PatWildcard pos) ++ [parent])- (Unguarded (continuationToExp parent contExp)) - noDecls]- funArity = length argpats- (Fun fpats' frhs' fdecls',funConsts) = - tFun traced cr parent contExp (Fun argpats rhs decls)- pos = getPos pats----funCanFail :: Fun TraceId -> Bool-funCanFail (Fun pats rhs _) = - any numericLitIn pats || case rhs of- Unguarded _ -> False- Guarded gdExps -> gdExpsCanFail gdExps--numericLitIn :: Pat TraceId -> Bool-numericLitIn (ExpRecord pat fields) = - numericLitIn pat || any numericLitInField fields- where- numericLitInField (FieldExp _ _ pat) = numericLitIn pat-numericLitIn (ExpApplication _ pats) = any numericLitIn pats-numericLitIn (ExpList _ pats) = any numericLitIn pats-numericLitIn (PatAs _ _ pat) = numericLitIn pat-numericLitIn (PatIrrefutable _ pat) = numericLitIn pat-numericLitIn (ExpLit _ (LitInteger _ _)) = True-numericLitIn (ExpLit _ (LitRational _ _)) = True-numericLitIn _ = False----- Returns False only if one of the guards definitely evaluates to True.-gdExpsCanFail :: [(Exp TraceId,Exp TraceId)] -> Bool-gdExpsCanFail [] = True-gdExpsCanFail ((ExpCon _ cid, _) : gdExps) = - not (isTrue cid) && gdExpsCanFail gdExps-gdExpsCanFail ((ExpVar _ cid, _) : gdExps) = - not (isOtherwise cid) && gdExpsCanFail gdExps-gdExpsCanFail (_ : gdExps) = gdExpsCanFail gdExps---namePats :: [Pat TokenId] -> [Pat TokenId] -> ([Pat TokenId],[Pat TokenId])-namePats pats vars = unzip (zipWith namePat pats vars)---- Obtain a variable that names the given pattern;--- straightforward if pattern has variable at top-level;--- otherwise use provided variable-namePat :: Pat TokenId -- pattern to name- -> Pat TokenId -- default variable- -> (Pat TokenId,Pat TokenId) -- named pattern, name variable-namePat pat@(ExpVar _ _) _ = (pat,pat)-namePat pat@(PatAs pos id pat') _ = (pat,ExpVar pos id)-namePat pat var@(ExpVar pos id) = (PatAs pos id pat,var)---tRhs :: Bool -- traced?- -> Bool -- equal to parent? - -> Exp TokenId -- parent- -> ContExp -- continuation in case of pattern match failure- -> Rhs TraceId - -> (Exp TokenId,ModuleConsts)--tRhs traced cr parent failCont (Unguarded exp) = tExp traced cr parent exp-tRhs traced cr parent failCont (Guarded gdExps) =- tGuardedExps traced cr parent failCont gdExps---tGuardedExps :: Bool -- traced?- -> Bool -- equal to parent? - -> Exp TokenId -- parent- -> ContExp -- continuation in case of pattern match failure- -> [(Exp TraceId,Exp TraceId)] - -> (Exp TokenId,ModuleConsts)-tGuardedExps _ cr parent failCont [] = - (continuationToExp parent failCont,emptyModuleConsts)-tGuardedExps True cr parent failCont ((guard,exp):gdExps) =- (ExpApplication pos - [combGuard pos True,mkSRExp pos True,parent,guard'- ,ExpLambda pos [parent] exp',ExpLambda pos [parent] gdExps']- ,pos `addPos` guardConsts `merge` expConsts `merge` gdExpsConsts)- where- (guard',guardConsts) = tExp True False parent guard- (exp',expConsts) = tExp True cr parent exp- (gdExps',gdExpsConsts) = tGuardedExps True cr parent failCont gdExps- pos = getPos guard-tGuardedExps False cr parent failCont ((guard,exp):gdExps) =- (ExpApplication pos - [combGuard pos False,guard',exp',gdExps']- ,guardConsts `merge` expConsts `merge` gdExpsConsts)- where- (guard',guardConsts) = tExp False False parent guard- (exp',expConsts) = tExp False cr parent exp- (gdExps',gdExpsConsts) = tGuardedExps False cr parent failCont gdExps- pos = getPos guard---- -------------------------------------------- Abstract continuation for guards------ To correctly create the trace within guards, a continuation is used.--- The type ContExp should be abstract. Its implementation is only used in --- the following three functions.--data ContExp = Fail | Function TokenId [Exp TokenId]--failContinuation :: ContExp-failContinuation = Fail--functionContinuation :: TokenId -> [Exp TokenId] -> ContExp-functionContinuation = Function--continuationToExp :: Exp TokenId -- trace- -> ContExp - -> Exp TokenId-continuationToExp parent Fail = mkFailExp noPos parent-continuationToExp parent (Function fun args) =- ExpApplication noPos (ExpVar noPos fun : args ++ [parent])---mapMerge2 :: (a -> (b,ModuleConsts)) -> [a] -> ([b],ModuleConsts)-mapMerge2 f = mapSnd (foldr merge emptyModuleConsts) . unzip . map f----- Transform expressions--tExps :: Bool -- traced- -> Exp TokenId -- parent- -> [Exp TraceId] -- expressions- -> ([Exp TokenId],ModuleConsts)-tExps traced parent = mapMerge2 (tExp traced False parent)-tExpsC traced parent = mapMerge2 (tExp traced True parent)----- Second argument True iff the parent is equal to this expression, i.e.,--- the result of this expression is the same as the result of the parent.-tExp :: Bool -> Bool -> Exp TokenId -> Exp TraceId - -> (Exp TokenId,ModuleConsts)-tExp traced cr parent (ExpScc _ l@(ExpLambda _ _ _)) =- -- ExpScc is a hack to inform that this lambda is really a do-stmt.- (ExpApplication pos [fun, ExpVar pos tokenMkAtomDoLambda, sr, par, lambda]- ,rpos)- where- (ExpApplication pos [fun, _, sr, par, lambda],rpos) = tExp traced cr parent l-tExp traced cr parent (ExpLambda pos pats body) =- (ExpApplication pos - [combFun pos traced funArity- ,ExpVar pos tokenMkAtomLambda- ,mkSRExp pos traced- ,parent- ,if neverFailingPats pats - then ExpLambda pos (pats' ++ [parent]) body'- else ExpLambda pos (vars ++ [parent])- (ExpCase pos (mkTupleExp pos vars)- [Alt (mkTupleExp pos pats') (Unguarded body') noDecls- ,Alt (PatWildcard pos) - (Unguarded (mkFailExp pos parent)) noDecls])]- ,pos `addPos` bodyConsts)- where- (Fun pats' (Unguarded body') _,bodyConsts) = - tFun traced True parent failContinuation - (Fun pats (Unguarded body) noDecls)- vars = map (ExpVar pos) . take funArity $ varsIds- varsIds = namesFromPos pos- funArity = length pats-tExp traced cr parent (ExpLet pos decls body) =- (ExpLet pos decls' body'- ,declConsts `withLocal` bodyConsts)- where- (decls',declConsts) = tDecls Local traced parent decls- (body',bodyConsts) = tExp traced cr parent body-tExp traced cr parent (ExpDo pos stmts) =- tExp traced cr parent (removeDo traced stmts)-tExp traced cr parent (ExpCase pos e alts) =- (ExpApplication pos - [combCase pos traced,mkSRExp pos traced,parent- ,ExpLet pos (DeclsParse (DeclFun pos varId fun' : defs')) - (ExpVar pos varId)- ,e']- ,pos `addPos` eConsts `merge` funConsts)- where- (varId:argId:funsIds) = namesFromPos pos- (e',eConsts) = tExp traced False parent e- (fun',defs',funConsts) = - tFunClauses traced pos parent funsIds - [ExpVar pos argId] 1 False- . map alt2Fun $ alts-tExp True cr parent (ExpIf pos cond e1 e2) =- (ExpApplication pos - [combIf pos True,mkSRExp pos True,parent,cond'- ,ExpLambda pos [parent] e1',ExpLambda pos [parent] e2']- ,pos `addPos` condConsts `merge` e1Consts `merge` e2Consts)- where- (cond',condConsts) = tExp True False parent cond- (e1',e1Consts) = tExp True True parent e1- (e2',e2Consts) = tExp True True parent e2-tExp False cr parent (ExpIf pos cond e1 e2) =- (ExpApplication pos [combIf pos False,parent,cond',e1',e2']- ,condConsts `merge` e1Consts `merge` e2Consts)- where- (cond',condConsts) = tExp False False parent cond- (e1',e1Consts) = tExp False True parent e1- (e2',e2Consts) = tExp False True parent e2-tExp traced cr parent (ExpType pos e contexts ty) =- (ExpType pos e' (tContexts contexts) (wrapType (tType ty))- ,eConsts)- where- (e',eConsts) = tExp traced cr parent e-tExp traced cr parent (ExpApplication pos (f@(ExpCon _ _) : es))=- tConApp pos traced parent f es-tExp traced cr parent (ExpApplication pos (f@(ExpVar idPos id) : es)) - | case arity id of- Nothing -> False- Just a -> a > 0 && a == length es && a <= 5 = - -- optimised for this special case- (if traced || isTraced id- then ExpApplication pos (combApplyArity pos (isTraced id) (length es):- mkSRExp pos traced:mkSRExp idPos traced:parent:- ExpVar pos (nameTraceInfoVar pos Global id):- ExpVar pos (nameWorker id):es')- else ExpApplication pos (ExpVar pos tokenUWrapForward:parent: - [ExpApplication pos (ExpVar pos (nameWorker id):es'++[parent])])- ,pos `addPos` (idPos `addPos` esConsts))- where- (es',esConsts) = tExps traced parent es-tExp traced cr parent (ExpApplication pos es) =- (ExpApplication pos - (combApply pos traced (length es - 1):mkSRExp pos traced:parent:es')- ,pos `addPos` esConsts)- where- (es',esConsts) = tExps traced parent es-tExp traced cr parent (ExpVar pos id) =- if isLambdaBound id - then - let e' = ExpVar pos (nameTransLambdaVar id) - in- if cr - then (ExpApplication pos - [ExpVar pos tokenProjection,mkSRExp pos traced,parent,e']- ,pos `addPos` emptyModuleConsts) - else (e',emptyModuleConsts)- else - (ExpApplication pos - [ExpVar pos (nameTransLetVar id),mkSRExp pos traced,parent]- ,pos `addPos` emptyModuleConsts)-tExp traced cr parent e@(ExpCon pos id) =- tConApp pos traced parent e []-tExp traced cr parent (ExpLit pos litstr@(LitString _ s)) =- -- Because the result is very large use special combinator that- -- transforms string in traced string at runtime instead- (ExpApplication pos- [ExpVar pos tokenFromLitString,mkSRExp pos traced,parent- ,ExpLit pos litstr]- ,pos `addPos` emptyModuleConsts)-tExp traced cr parent (ExpLit pos lit@(LitChar _ _)) =- (ExpApplication pos - [ExpVar pos tokenConChar,mkSRExp pos traced,parent,ExpLit pos lit]- ,pos `addPos` emptyModuleConsts)-tExp traced cr parent (ExpLit pos lit@(LitRational b r)) =- -- desugar rational constant into explicit use of ":%",- -- because Rational is not a primitive type but defined in PreludeBasic- -- however, this way mkNTRational is not used at all- (ExpApplication pos - [combApply pos traced 1,sr,parent- ,ExpApplication pos [ExpVar pos tokenFromRational,sr,parent]- ,ExpApplication pos - [ExpCon pos tokenR- ,ExpApplication pos - [ExpCon pos tokenConRational- ,ExpApplication pos [ExpVar pos tokenConInteger,sr,parent,num]- ,ExpApplication pos [ExpVar pos tokenConInteger,sr,parent,denom]]- ,ExpApplication pos - [ExpVar pos tokenMkAtomRational,sr,parent,ExpLit pos lit]]]- ,pos `addPos` emptyModuleConsts)- where- num = ExpLit pos (LitInteger b (numerator r))- denom = ExpLit pos (LitInteger b (denominator r))- sr = mkSRExp pos traced-tExp traced cr parent (ExpLit pos lit@(LitInteger _ _)) =- (ExpApplication pos - [combApply pos traced 1,sr- ,parent- ,ExpApplication pos [ExpVar pos tokenFromInteger,sr,parent]- ,ExpApplication pos [ExpVar pos tokenConInteger,sr,parent,ExpLit pos lit]]- ,pos `addPos` emptyModuleConsts)- where- sr = mkSRExp pos traced-tExp traced cr parent (ExpList pos es) =- -- use special combinator that transforms list at runtime;- -- desugaring and subsequent transformation would lead to large program.- (ExpApplication pos- [ExpVar pos tokenFromExpList,sr,parent,ExpList pos es']- ,pos `addPos` esConsts)- where- (es',esConsts) = tExps traced parent es- sr = mkSRExp pos traced-tExp traced cr parent (ExpRecord (ExpCon pos consId) fields) = -- construction- (ExpApplication pos - [ExpVar pos tokenWrapValFun,sr,ExpRecord consUndefined fields',parent]- ,pos `addPos` fieldsConsts)- where- consUndefined = - if consArity == 0 then ExpCon pos (nameTransCon consId)- else ExpApplication pos . (ExpCon pos (nameTransCon consId) :) .- take consArity . repeat $ - ExpApplication pos - [ExpVar pos tokenUndefined,mkSRExp pos False,parent]- Just consArity = arity consId- sr = mkSRExp pos traced- (fields',fieldsConsts) = mapMerge2 (tField traced parent) fields-tExp True cr parent (ExpRecord exp fields) = -- update- (ExpLet pos - (DeclsParse $ - zipWith (DeclFun pos) fieldVarIds - (map ((:[]) . flip (Fun []) noDecls . Unguarded) fieldExps'))- (ExpApplication pos- (combUpdate pos True (length labels):mkSRExp pos True:parent:exp'- :ExpLambda pos [var] (ExpRecord var varFields')- :labels ++ fieldVars))- ,pos `addPos` expConsts `merge` fieldsConsts)- where- (exp',expConsts) = tExp True False parent exp- (fields',fieldsConsts) = mapMerge2 (tField True parent) fields- labels = map (ExpVar pos . nameTraceInfoVar noPos Global) labelIds- varFields' = zipWith (FieldExp pos) (map fieldLabel fields') fieldVars- fieldExps' = map fieldExp fields'- fieldVars = map (ExpVar pos) fieldVarIds- fieldVarIds = map nameShare labelIds- labelIds = map fieldLabel fields- var = ExpVar pos (nameFromPos pos)- pos = getPos fields- fieldLabel (FieldExp _ labelId _) = labelId- fieldExp (FieldExp _ _ exp) = exp-tExp False cr parent (ExpRecord exp fields) = -- update- (ExpApplication pos- [combUpdate pos False (-1),parent,exp'- ,ExpLambda pos [var] (ExpRecord var fields')]- ,expConsts `merge` fieldsConsts)- where- (exp',expConsts) = tExp False False parent exp- (fields',fieldsConsts) = mapMerge2 (tField False parent) fields- var = ExpVar pos (nameFromPos pos)- pos = getPos fields-tExp _ _ _ _ = error "tExp: unknown sort of expression"---tField :: Bool -> Exp TokenId -> Field TraceId - -> (Field TokenId,ModuleConsts)-tField traced parent (FieldExp pos labelId exp) =- (FieldExp pos (nameTransField labelId) exp',expConsts)- where- (exp',expConsts) = tExp traced False parent exp----- return False if matching the pattern may fail--- otherwise try to return True--- (safe approximation)-neverFailingPat :: Pat id -> Bool-neverFailingPat (ExpVar _ _) = True-neverFailingPat (PatAs _ _ pat) = neverFailingPat pat-neverFailingPat (PatIrrefutable _ _) = True-neverFailingPat (PatWildcard _ ) = True-neverFailingPat _ = False--neverFailingPats :: [Pat id] -> Bool-neverFailingPats = all neverFailingPat---- conversion of case alternative into function definition alternative -alt2Fun :: Alt a -> Fun a-alt2Fun (Alt pat rhs decls) = Fun [pat] rhs decls --fun2Alt :: Fun a -> Alt a-fun2Alt (Fun [pat] rhs decls) = Alt pat rhs decls----- Transform data constructor application.--- Number of arguments may be smaller than arity of the data constructor.-tConApp :: Pos -- of application- -> Bool -- traced?- -> Exp TokenId -- parent- -> Exp TraceId -- data constructor- -> [Exp TraceId] -- arguments- -> (Exp TokenId,ModuleConsts) --tConApp pos traced parent c@(ExpCon _ id) args - | conArity > numberOfArgs = -- undersaturated application- (ExpApplication pos - (combPartial pos numberOfArgs- :ExpCon pos (nameTransCon id)- :combCn pos (conArity-numberOfArgs)- :mkSRExp pos traced- :parent- :ExpVar pos (nameTraceInfoCon id)- :args')- ,pos `addPos` argsConsts)- | otherwise = tSatConApp pos traced parent c args- where- Just conArity = arity id -- a constructor always has an arity- numberOfArgs = length args- (args',argsConsts) = tExps traced parent args----- Transform data constructor application with number of args equal arity.-tSatConApp :: Pos -- of application- -> Bool -- traced?- -> Exp TokenId -- parent- -> Exp TraceId -- data constructor- -> [Exp TraceId] -- arguments - -> (Exp TokenId,ModuleConsts)-tSatConApp pos traced parent (ExpCon _ id) args =- (ExpApplication pos - (combCon pos (length args)- :mkSRExp pos traced- :parent- :ExpCon pos (nameTransCon id)- :ExpVar pos (nameTraceInfoCon id)- :args')- ,pos `addPos` argsConsts)- where- (args',argsConsts) = tExps traced parent args---- Desugar do-statements -removeDo :: Bool -> [Stmt TraceId] -> Exp TraceId-removeDo traced [StmtExp e] = e-removeDo traced (StmtExp e : stmts) =- ExpApplication pos [ExpVar pos tTokenGtGt,e,removeDo traced stmts] - where- pos = getPos e-removeDo traced (StmtLet decls : stmts) =- ExpLet pos decls (removeDo traced stmts)- where- pos = getPos decls-removeDo traced (StmtBind pat e : stmts) =- ExpApplication pos - [ExpVar pos tTokenGtGtEq,e- ,ExpScc "" $ -- hack to inform this is really a do-stmt- if neverFailingPat pat - then ExpLambda pos [pat] (removeDo traced stmts)- else ExpLambda pos [newVar] - (ExpCase pos newVar - [Alt pat (Unguarded (removeDo traced stmts)) noDecls- ,Alt (PatWildcard pos) - (Unguarded - (ExpApplication pos - [ExpVar pos tTokenFail- ,ExpLit pos - (LitString Boxed - "pattern-match failure in do expression")]))- noDecls])- ]- where- newVar = ExpVar pos (mkLambdaBound (initAuxInfo traced) newId)- newId:_ = namesFromPos pos- pos = getPos e--{--mapCombine3 :: (a -> (b,[c],[d])) -> [a] -> ([b],[c],[d])-mapCombine3 f = (\(p,es,ds) -> (p,concat es,concat ds)) . unzip3 . map f---- the first part of the result is transformed pattern--- the transformation has to remove numeric constants and--- n+k patterns from a pattern, because numeric arguments are--- wrapped and hence translating into constants and n+k patterns is impossible.--- Furthermore we want their reductions in the trace as well.--- the second part contains boolean expressions that are--- implicitly tested in the original pattern but have to be made--- explicit in the transformed program, e.g.--- tPats 3 = (x,{x==3},{})--- the third part contains definitions of numeric variables --- that orginate from n+k patterns--- e.g.: tPats (n+2) = (x,{x>=2},{n=x-2})--- Note that variables in patterns are always lambda bound--- (pattern bindings are treated specially anyway)-tPats :: [Pat TraceId] -> ([Pat TokenId],[Exp TraceId],[Decl TraceId])-tPats = mapCombine3 tPat--tPat :: Pat TraceId -> (Pat TokenId,[Exp TraceId],[Decl TraceId])-tPat (ExpRecord (ExpCon pos id) fields) = - (wrapExp pos (ExpRecord (ExpCon pos (nameTransCon id)) fields') - (PatWildcard pos)- ,fieldsExps- ,fieldsDecls)- where- (fields',fieldsExps,fieldsDecls) = mapCombine3 tField fields- tField (FieldExp pos id pat) = - (FieldExp pos (nameTransField id) pat',patExps,patDecls)- where- (pat',patExps,patDecls) = tPat pat-tPat (ExpApplication pos (ExpCon pos2 id : pats)) = - (wrapExp pos - (ExpApplication pos (ExpCon pos2 (nameTransCon id) : pats'))- (PatWildcard pos)- ,patsExps,patsDecls)- where- (pats',patsExps,patsDecls) = tPats pats- -- negative numeric literals are represented as (negate number):-tPat (ExpApplication _ [_,ExpLit pos (LitInteger boxed i)]) =- tPat (ExpLit pos (LitInteger boxed (-i)))-tPat (ExpApplication _ [_,ExpLit pos (LitRational boxed r)]) =- tPat (ExpLit pos (LitRational boxed (-r)))-tPat (ExpApplication _ [_,ExpLit pos _]) = error "tPat: app expLit"-tPat (ExpVar pos id) = (ExpVar pos (nameTransLambdaVar id),[],[])-tPat (ExpCon pos id) = - (wrapExp pos (ExpCon pos (nameTransCon id)) (PatWildcard pos),[],[])-tPat (ExpLit pos (LitString _ s)) =- tPat . mkTList pos . map (ExpLit pos . LitChar Boxed) $ s-tPat (ExpLit pos lit@(LitChar _ _)) = - (wrapExp pos (ExpLit pos lit) (PatWildcard pos),[],[]) -tPat e@(ExpLit pos lit) = -- only LitInteger and LitRational left- (ExpVar pos (nameTransLambdaVar tid)- ,[ExpApplication pos - [ExpVar pos tTokenEqualEqual,ExpVar pos tid,e]]- ,[])- where- tid = mkLambdaBound (nameFromPos pos)-tPat (ExpList pos pats) = tPat . mkTList pos $ pats-tPat (PatAs pos id pat) = - (PatAs pos (nameTransLambdaVar id) pat',patExps,patDecls)- where- (pat',patExps,patDecls) = tPat pat-tPat (PatWildcard pos) = (PatWildcard pos,[],[]) -- type change-tPat (PatIrrefutable pos pat) = - if null patExps - then- (case pat' of- ExpApplication pos' [r,p',t'] -> - ExpApplication pos' [r,PatIrrefutable pos p',t']- x -> x- ,[],[])- else error "Numeric pattern inside ~ is currently not implemented."- where- (pat',patExps,patDecls) = tPat pat -tPat (PatNplusK pos id _ k _ _) = - (ExpVar pos (nameTransLambdaVar tid2)- ,[ExpApplication pos - [ExpVar pos tTokenGreaterEqual,var2,k]]- ,[DeclFun pos id- [Fun []- (Unguarded (ExpApplication pos [ExpVar pos tTokenMinus,var2,k]))- noDecls]])- where- var2 = ExpVar pos tid2- tid2 = mkLambdaBound (nameFromPos pos)-tPat p = error ("tPat: unknown pattern at " ++ strPos (getPos p))--}---- new:--mapCombinePats :: (Pat TraceId - -> (Exp TokenId, Maybe (c,d,[Exp TokenId],[Pat TraceId])))- -> [Pat TraceId] - -> ([Exp TokenId], Maybe (c,d,[Exp TokenId],[Pat TraceId]))-mapCombinePats f [] = ([],Nothing)-mapCombinePats f (x:xs) = - case f x of- (pat,Nothing) -> (pat:pats,numPatInfos)- (pat,Just (e,d,vs,ps)) -> (pat:xvs,Just (e,d,vs++xvs,ps++xs))- where- (pats,numPatInfos) = mapCombinePats f xs- xvs = map patToVar xs--patToVar :: Pat TraceId -> Exp TokenId-patToVar (ExpVar pos id) = ExpVar pos (nameTransLambdaVar id)-patToVar (PatAs pos id _) = ExpVar pos (nameTransLambdaVar id)-patToVar pat = ExpVar pos (nameFromPos pos)- where- pos = getPos pat---tPats :: [Pat TraceId] - -> ([Pat TokenId] -- transformed patterns- ,Maybe -- only if there is a numeric pattern (k or n+k)- (Exp TraceId -- test for the numeric pattern (e.g. x==k)- ,[Decl TraceId] -- binding for n if there is an n+k pattern- ,[Exp TokenId] -- variables inserted in pattern after num literal- ,[Pat TraceId])) -- original patterns after num literal-tPats = mapCombinePats tPat--tPat :: Pat TraceId - -> (Pat TokenId- ,Maybe (Exp TraceId,[Decl TraceId],[Exp TokenId],[Pat TraceId]))-tPat (ExpRecord (ExpCon pos id) fields) = - (wrapExp pos (ExpRecord (ExpCon pos (nameTransCon id)) fields') - (PatWildcard pos)- ,numInfos)- where- (poss,ids,pats) = unzipFields fields- (pats',numInfos) = mapCombinePats tPat pats- fields' = zipFields poss (map nameTransField ids) pats'- unzipFields :: [Field a] -> ([Pos],[a],[Pat a])- unzipFields = unzip3 . map (\(FieldExp pos id pat) -> (pos,id,pat))- zipFields :: [Pos] -> [a] -> [Pat a] -> [Field a]- zipFields = zipWith3 FieldExp -tPat (ExpApplication pos (ExpCon pos2 id : pats)) = - (wrapExp pos - (ExpApplication pos (ExpCon pos2 (nameTransCon id) : pats'))- (PatWildcard pos)- ,patsNumInfo)- where- (pats',patsNumInfo) = tPats pats- -- negative numeric literals are represented as (negate number):-tPat (ExpApplication _ [_,ExpLit pos (LitInteger boxed i)]) =- tPat (ExpLit pos (LitInteger boxed (-i)))-tPat (ExpApplication _ [_,ExpLit pos (LitRational boxed r)]) =- tPat (ExpLit pos (LitRational boxed (-r)))-tPat (ExpApplication _ [_,ExpLit pos _]) = error "tPat: app expLit"-tPat (ExpVar pos id) = (ExpVar pos (nameTransLambdaVar id),Nothing)-tPat (ExpCon pos id) = - (wrapExp pos (ExpCon pos (nameTransCon id)) (PatWildcard pos),Nothing)-tPat (ExpLit pos (LitString _ s)) =- tPat . mkTList pos . map (ExpLit pos . LitChar Boxed) $ s-tPat (ExpLit pos lit@(LitChar _ _)) = - (wrapExp pos (ExpLit pos lit) (PatWildcard pos),Nothing) -tPat e@(ExpLit pos lit) = -- only LitInteger and LitRational left- (ExpVar pos (nameTransLambdaVar tid)- ,Just (ExpApplication pos [ExpVar pos tTokenEqualEqual,ExpVar pos tid,e]- ,[],[],[]))- where- tid = mkLambdaBound defaultAuxInfo (nameFromPos pos)-tPat (ExpList pos pats) = tPat . mkTList pos $ pats-tPat (PatAs pos id pat) = - (PatAs pos (nameTransLambdaVar id) pat',patNumInfos)- where- (pat',patNumInfos) = tPat pat-tPat (PatWildcard pos) = (PatWildcard pos,Nothing) -- type change-tPat (PatIrrefutable pos pat) = - if isNothing patNumInfos- then- (case pat' of- ExpApplication pos' [r,p',t'] -> - ExpApplication pos' [r,PatIrrefutable pos p',t']- x -> x- ,Nothing)- else error "Numeric literal or n+k inside ~ is currently not implemented."- where- (pat',patNumInfos) = tPat pat -tPat (PatNplusK pos id _ k _ _) = - (ExpVar pos (nameTransLambdaVar tid2)- ,Just (ExpApplication pos [ExpVar pos tTokenGreaterEqual,var2,k]- ,[DeclFun pos id- [Fun []- (Unguarded (ExpApplication pos [ExpVar pos tTokenMinus,var2,k]))- noDecls]]- ,[],[]))- where- var2 = ExpVar pos tid2- tid2 = mkLambdaBound defaultAuxInfo (nameFromPos pos)-tPat p = error ("tPat: unknown pattern at " ++ strPos (getPos p))----- Convert a list of expressions into a list expression (with TraceIds).--- Needed for list literals in patterns.-mkTList :: Pos -> [Exp TraceId] -> Exp TraceId-mkTList pos = - foldr (\x xs -> ExpApplication pos [cons,x,xs]) (ExpCon pos tTokenNil)- where- cons = ExpCon pos tTokenCons--mkList :: Pos -> [Exp TokenId] -> Exp TokenId-mkList pos = - foldr (\x xs -> ExpApplication pos [cons,x,xs]) (ExpCon pos t_ListNQ)- where- cons = ExpCon pos t_ColonNQ---- ------------------------------------------------------------------------------- Transform types--tTyArgs :: [(Maybe [(Pos,TraceId)],Type TraceId)] - -> [(Maybe [(Pos,TokenId)],Type TokenId)]-tTyArgs = map tTyArg--tTyArg :: (Maybe [(Pos,TraceId)],Type TraceId)- -> (Maybe [(Pos,TokenId)],Type TokenId)-tTyArg (maybePosIds,ty) = - (fmap (mapListSnd nameTransField) maybePosIds,wrapType (tType ty))------ ty ==> R [[ty]]-tConstType :: Type TraceId -> Type TokenId-tConstType ty = wrapType (tType ty)----- ty ==> RefSrcPos -> Trace -> R [[ty]]-tFunType :: Type TraceId -> Type TokenId-tFunType ty = - TypeCons pos tokenRefSrcPos [] `typeFun` TypeCons pos tokenRefExp [] - `typeFun` wrapType (tType ty)- where- pos = getPos ty---- create type of worker from original type-tWorkerType :: Arity -> Type TraceId -> Type TokenId-tWorkerType 0 ty = - TypeCons (getPos ty) tokenRefExp [] `typeFun` wrapType (tType ty)-tWorkerType a ty = tWorkerSynExpand a ty []---- expand a type synonym and then apply worker type transformation--- need to collect type arguments-tWorkerSynExpand :: Arity -> Type TraceId -> [Type TraceId] -> Type TokenId-tWorkerSynExpand a (TypeCons pos tyCon []) [ty1,ty2] | isFunTyCon tyCon =- wrapType (tType ty1) `typeFun` tWorkerType (a-1) ty2-tWorkerSynExpand a (TypeCons pos tyCon []) tys =- tWorkerType a (expandTypeSynonym tyCon tys)-tWorkerSynExpand a (TypeCons pos tyCon ty1s) ty2s = - tWorkerSynExpand a (TypeCons pos tyCon []) (ty1s++ty2s)-tWorkerSynExpand a (TypeApp ty1 ty2) tys = - tWorkerSynExpand a ty1 (ty2:tys)-tWorkerSynExpand _ _ _ = - error "tWorkerSynExpand: type must be a function but is not"--expandTypeSynonym :: TraceId -> [Type TraceId] -> Type TraceId-expandTypeSynonym tySyn tys =- case typeSynonymBody tySyn of- Nothing -> error ("expandTypeSynonym: " ++ show (tokenId tySyn) ++ - " is not a type synonym")- Just body -> fst (go body 1)- where- go :: TySynBody -> Int -> (Type TraceId,Int)- go THelper n = - (TypeCons noPos (mkTyCon defaultAuxInfo (nameTransTySynHelper tySyn n)) tys- ,n+1)- go (TVar v) n = (tys!!v,n)- go TFun n = (TypeCons noPos tTokenFun [],n)- go (TApp ty1 ty2) n = (TypeApp ty1' ty2',n2)- where- (ty1',n1) = go ty1 n- (ty2',n2) = go ty2 n1---- just rewrite function types:--- t1 -> t2 ==> Fun [[t1]] [[t2]]-tType :: Type TraceId -> Type TokenId-tType (TypeCons pos tyCon tys) =- TypeCons pos (nameTransTyConCls tyCon) (map tType tys)-tType (TypeApp lTy rTy) = TypeApp (tType lTy) (tType rTy)-tType (TypeVar pos tyId) = TypeVar pos (nameTransTyVar tyId)-tType (TypeStrict pos ty) = TypeStrict pos (tType ty)---- ty ==> R ty (!ty ==> ! (R ty))-wrapType :: Type TokenId -> Type TokenId-wrapType (TypeStrict pos ty) = TypeStrict pos (wrapType ty)-wrapType ty = TypeCons noPos tokenR [ty]---- replace TraceIds by TokenIds (renaming -> to T.Fun, [] -> T.List etc)-tokenIdType :: Type TraceId -> Type TokenId-tokenIdType (TypeCons pos tyCon tys) =- TypeCons pos (nameTransTyConCls tyCon) (map tokenIdType tys)-tokenIdType (TypeApp lTy rTy) = TypeApp (tokenIdType lTy) (tokenIdType rTy)-tokenIdType (TypeVar pos tyId) = TypeVar pos (nameTransTyVar tyId)-tokenIdType (TypeStrict pos ty) = TypeStrict pos (tokenIdType ty) ---- replace TraceIds by TokenIds (no renaming - just plain original types)-typePlain :: Type TraceId -> Type TokenId-typePlain (TypeCons pos tyCon tys) =- TypeCons pos (tokenId tyCon) (map typePlain tys)-typePlain (TypeApp lTy rTy) = TypeApp (typePlain lTy) (typePlain rTy)-typePlain (TypeVar pos tyId) = TypeVar pos (tokenId tyId)-typePlain (TypeStrict pos ty) = TypeStrict pos (typePlain ty) ---- function type constructor--- infixr 6 `typeFun`-typeFun :: Type TokenId -> Type TokenId -> Type TokenId-typeFun ty1 ty2 = TypeCons noPos t_Arrow [ty1,ty2]---tContexts :: [Context TraceId] -> [Context TokenId]-tContexts = map tContext--tContext :: Context TraceId -> Context TokenId-tContext (Context pos clsId posTyVarIds) =- Context pos (nameTransTyConCls clsId)- (map (\(pos',tyVarId)->(pos',nameTransTyVar tyVarId)) posTyVarIds)--tSimple :: Simple TraceId -> Simple TokenId -tSimple (Simple pos tycon posArgs) =- Simple pos (nameTransTyConCls tycon) (tPosTyVars posArgs)--tPosShares :: [(Pos,TraceId)] -> [(Pos,TokenId)]-tPosShares = mapListSnd nameShare--tPosExps :: [(Pos,TraceId)] -> [(Pos,TokenId)]-tPosExps = mapListSnd nameTransLetVar--tPosClss :: [(Pos,TraceId)] -> [(Pos,TokenId)]-tPosClss = mapListSnd nameTransTyConCls--tPosTyVars :: [(Pos,TraceId)] -> [(Pos,TokenId)]-tPosTyVars = mapListSnd nameTransTyVar----- ------------------------------------------------------------------------------- New names--- Module names and hence all qualifications are prefixed.--- Names of classes, type constructors and type variables remain unchanged.--- Names of data constructors remain unchanged.--- (everything but expression variables)--- As prefix characters only those characters can be chosen that do--- not start a reserved identifier or operator. Otherwise the transformation--- might create a reserved identifier.--- (uppercase identifiers can be prefixed by such a character, because--- a reserved identifier will never be created by prefixing)---- names referring to traces (or parts thereof) of program fragments:--nameTraceInfoModule :: TraceId -> TokenId-nameTraceInfoModule = prefixModName 't'--nameTraceInfoVar :: Pos -> Scope -> TraceId -> TokenId-nameTraceInfoVar pos Global = prefixName 'a' '+'-nameTraceInfoVar pos Local = prefixPosName 'a' '+' pos--nameTraceInfoGlobalVar :: TraceId -> TokenId-nameTraceInfoGlobalVar = prefixName 'a' '+'--nameTraceInfoCon :: TraceId -> TokenId-nameTraceInfoCon = prefixName 'a' '+'--nameTraceInfoPos :: Pos -> TokenId-nameTraceInfoPos pos = mkUnqualifiedTokenId (('p':) . showsEncodePos pos $ "")---- names referring to transformed program fragments:--nameTransModule :: TraceId -> TokenId-nameTransModule = updateToken updateModule- where- updateModule ('N':'o':'t':'H':'a':'t':'.':orgName) = orgName- updateModule (name@"Main") = name -- if the module is `Main', then unchanged- updateModule name = modulePrefix ++ name--nameTransTyConCls :: TraceId -> TokenId-nameTransTyConCls = updateToken id -- only module name is changed---- names of helper synonyms are a bit of a hack; a name conflict is possible-nameTransTySynHelper :: TraceId -> Int -> TokenId-nameTransTySynHelper tySyn no = updateToken (++ ("___" ++ show no)) tySyn--nameTransTyVar :: TraceId -> TokenId-nameTransTyVar = updateToken id -- only module name is changed--nameTransCon :: TraceId -> TokenId-nameTransCon = updateToken id -- only module name is changed--nameTransField :: TraceId -> TokenId-nameTransField = prefixName 'b' '^'--nameTransLetVar :: TraceId -> TokenId-nameTransLetVar = prefixName 'g' '!'--nameTransLambdaVar :: TraceId -> TokenId-nameTransLambdaVar = prefixName 'f' '&'---- internal, local names---- refering to partially transformed expression-nameWorker :: TraceId -> TokenId-nameWorker = prefixName 'h' '*'---- refering to original (unwrapped) foreign import-nameForeign :: TraceId -> TokenId-nameForeign = prefixName 'f' '&'---- names for new variables in transformed expressions:--- variable for sharing in transformation of pattern binding-nameShare :: TraceId -> TokenId-nameShare = prefixName 's' '|'---- variable for a trace including position-nameTraceShared :: Pos -> TraceId -> TokenId-nameTraceShared = prefixPosName 'j' '$'---- variable for parent-nameParent :: TokenId-nameParent = mkUnqualifiedTokenId "p"---- variable for a trace-nameTrace :: TraceId -> TokenId-nameTrace = prefixName 'j' '$'---- second variable for a trace-nameTrace2 :: TraceId -> TokenId-nameTrace2 = prefixName 'k' '@'---- name for a local variable for a source reference-nameSR :: TraceId -> TokenId-nameSR = prefixName 'p' '%'---- intermediate function-nameFun :: TokenId-nameFun = mkUnqualifiedTokenId "h"---- infinite list of var ids made from one id (for function clauses)-nameFuns :: TraceId -> [TokenId]-nameFuns = prefixNames 'y' '>'---- infinite list of var ids made from one id (for naming arguments)-nameArgs :: TraceId -> [TokenId]-nameArgs = prefixNames 'z' '^'---- a single id made from a position (different from below)-nameFromPos :: Pos -> TokenId-nameFromPos pos = mkUnqualifiedTokenId . ('v':) . showsEncodePos pos $ "n"---- infinite list of ids made from a position-namesFromPos :: Pos -> [TokenId]-namesFromPos pos =- map (mkUnqualifiedTokenId . ('v':) . showsEncodePos pos . ('v':) . show) - [1..]---- Generation of new variables--showsEncodePos :: Pos -> ShowS-showsEncodePos pos = shows beginRow . ('v':) . shows beginColumn . ('v':) - . shows endRow . ('v':) . shows endColumn- where- (beginRow,beginColumn,endRow,endColumn) = fromPos pos--showsSymEncodePos :: Pos -> ShowS-showsSymEncodePos pos = - \xs -> numToSym (show beginRow) ++ '=' : numToSym (show beginColumn) ++ '=' - : numToSym (show endRow) ++ '=' : numToSym (show endColumn) ++ xs - where- (beginRow,beginColumn,endRow,endColumn) = fromPos pos--prefixName :: Char -> Char -> TraceId -> TokenId-prefixName c d = updateToken update- where- update name = if isOperatorName name then d:name else c:name--prefixModName :: Char -> TraceId -> TokenId-prefixModName c = updateToken update- where- update name = c: map (\c->if c=='.' then '_' else c) name--prefixPosName :: Char -> Char -> Pos -> TraceId -> TokenId-prefixPosName c d pos = updateToken update- where- update name = if isOperatorName name - then (d:) . showsSymEncodePos pos $ name - else (c:) . showsEncodePos pos $ name--prefixNames :: Char -> Char -> TraceId -> [TokenId]-prefixNames c d token = map (($ token) . updateToken . update) [1..]- where- update no name = if isOperatorName name- then (d:) . (++ name) . numToSym . show $ no- else (c:) . (++ name) . show $ no--isOperatorName :: String -> Bool-isOperatorName = not . (\c -> isAlpha c || c == '_') . head--numToSym :: String -> String-numToSym = map (("!#$%&*+^@>" !!) . digitToInt)---- Tokens--modulePrefix = "Hat."---- apply function to unqualified name part --- and prefix module name (if qualified)-updateToken :: (String -> String) -> TraceId -> TokenId-updateToken f traceId | isFunTyCon traceId = - Qualified tracingModuleShort (packString . reverse $ "Fun")-updateToken f traceId = - case tokenId (traceId) of- t | eqPredefined "[]" t -> - Qualified tracingModuleShort (packString . reverse . f $ "List")- t | eqPredefined ":" t -> - Qualified tracingModuleShort (packString . reverse . f $ "Cons")- t@(TupleId n) -> - Qualified - tracingModuleShort- (packString . reverse . f $ ("Tuple"++show n)) - Visible n -> - Visible (packString . reverse . f . unqual $ n) - Qualified m n -> - Qualified - (packString . reverse . updateModule . reverse . unpackPS $ m)- (packString . reverse . f . unqual $ n) - _ -> error "TraceTrans: updateToken"- where- updateModule (name@"Main") = name -- if module is `Main', then unchanged- updateModule name = modulePrefix ++ name- unqual :: PackedString -> String- unqual = reverse . unpackPS---- case reverse . unpackPS $ n of -- change predefined names--- -- "->" -> "Fun"--- ":" -> "Cons" --- "[]" -> "List" -- here both type and data constructor--- s -> s----- ------------------------------------------------------------------------------- hardwired Haskell combinators and other names used by transformed modules--mkRoot :: Pos -> Exp TokenId-mkRoot pos = ExpVar pos tokenMkRoot--mkParentVar :: Pos -> Exp TokenId-mkParentVar pos = ExpVar pos nameParent--mkSRExp :: Pos -> Bool -> Exp TokenId-mkSRExp pos traced = - ExpVar pos (if traced then nameTraceInfoPos pos else tokenMkNoPos)--combApply :: Pos -> Bool -> Arity -> Exp TokenId-combApply pos traced a = - testArity pos (if traced then 15 else 8) a "application with more than "- " arguments."- (ExpVar pos ((if traced then tokenAp else tokenUAp) a))--combApplyArity :: Pos -> Bool -> Arity -> Exp TokenId-combApplyArity pos traced a =- ExpVar pos ((if traced then tokenApp else tokenUApp) a)--combFun :: Pos -> Bool -> Arity -> Exp TokenId-combFun pos traced a = - testArity pos (if traced then 15 else 8) a - "function definition with more than " " arguments."- (ExpVar pos ((if traced then tokenFun else tokenUFun) a))--combConstUse :: Pos -> Bool -> Exp TokenId-combConstUse pos traced = - ExpVar pos (if traced then tokenConstUse else tokenUConstUse)--combConstDef :: Pos -> Bool -> Exp TokenId -combConstDef pos traced = - ExpVar pos (if traced then tokenConstDef else tokenUConstDef)--combGuard :: Pos -> Bool -> Exp TokenId-combGuard pos traced =- ExpVar pos (if traced then tokenGuard else tokenUGuard)--combIf :: Pos -> Bool -> Exp TokenId-combIf pos traced =- ExpVar pos (if traced then tokenIf else tokenUIf)--combCase :: Pos -> Bool -> Exp TokenId-combCase pos traced =- ExpVar pos (if traced then tokenCase else tokenUCase)--combCon :: Pos -> Arity -> Exp TokenId-combCon pos arity =- testArity pos 15 arity "application of constructor to more than "- " arguments."- (ExpVar pos (tokenCon arity))--combPartial :: Pos -> Arity -> Exp TokenId-combPartial pos arity =- testArity pos 8 arity "partial application of constructor to more than "- " arguments."- (ExpVar pos (tokenPa arity))--combCn :: Pos -> Arity -> Exp TokenId-combCn pos arity =- testArity pos 12 arity "partial application of constructor with more than "- " missing arguments."- (ExpVar pos (tokenCn arity)) --combUpdate :: Pos -> Bool -> Arity -> Exp TokenId-combUpdate pos traced arity = - testArity pos (if traced then 10 else maxBound) arity - "field update with more than " " labels."- (ExpVar pos (if traced then tokenUpdate arity else tokenUUpdate))--testArity :: Pos -> Arity -> Arity -> String -> String -> a -> a-testArity pos maxArity arity str1 str2 x =- if arity > maxArity - then error ("Cannot handle " ++ str1 ++ show maxArity ++ str2- ++ "\nAttempted arity " ++ show arity ++ " at " ++ strPos pos)- else x---- apply data constructor R-wrapExp :: Pos -> Exp TokenId -> Exp TokenId -> Exp TokenId-wrapExp pos ev et = ExpApplication pos [ExpCon pos tokenR,ev,et]---- hardwired tokens:--- constants are here just for sharing--tracingModule :: PackedString -- name of module with combinators-tracingModule = packString . reverse $ "Hat.Hat"--tracingModuleShort :: PackedString-tracingModuleShort = packString . reverse $ "T" -- abbreviation--tPreludeModule :: PackedString-tPreludeModule = packString . reverse $ "Hat.PreludeBasic"--mkTPreludeToken :: String -> TokenId-mkTPreludeToken s = Qualified tPreludeModule (packString . reverse $ s)--mkTracingToken :: String -> TokenId-mkTracingToken s = Qualified tracingModuleShort (packString . reverse $ s)--mkTracingTokenArity :: String -> Arity -> TokenId-mkTracingTokenArity s a = mkTracingToken (s ++ show a)--mkTypeToken :: String -> TokenId-mkTypeToken s@"fromId" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toId" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"fromIO" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toIO" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"fromTuple0" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toTuple0" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"fromTuple2" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toTuple2" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toChar" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"fromChar" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toInt" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"fromInt" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toInteger" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"fromInteger" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toFloat" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"fromFloat" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"toDouble" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s@"fromDouble" = Qualified tracingModuleShort (packString . reverse $ s)-mkTypeToken s = Visible (packString . reverse $ s)----- tokens for trace constructors:--tokenMkRoot :: TokenId-tokenMkRoot = mkTracingToken "mkRoot"--tokenR :: TokenId-tokenR = mkTracingToken "R"--tokenMkModule :: TokenId-tokenMkModule = mkTracingToken "mkModule"--tokenMkPos :: TokenId-tokenMkPos = mkTracingToken "mkSrcPos" --tokenMkNoPos :: TokenId-tokenMkNoPos = mkTracingToken "mkNoSrcPos"--tokenMkAtomConstructor :: Bool -> TokenId-tokenMkAtomConstructor withFields = - mkTracingToken - (if withFields then "mkConstructorWFields" else "mkConstructor")--tokenMkAtomVariable :: TokenId-tokenMkAtomVariable = mkTracingToken "mkVariable"--tokenMkExpValueApp :: Arity -> TokenId-tokenMkExpValueApp = mkTracingTokenArity "mkValueApp"--tokenMkExpValueUse :: TokenId-tokenMkExpValueUse = mkTracingToken "mkValueUse"--tokenMkAtomRational :: TokenId-tokenMkAtomRational = mkTracingToken "mkAtomRational"--tokenMkAtomLambda :: TokenId-tokenMkAtomLambda = mkTracingToken "mkLambda"--tokenMkAtomDoLambda :: TokenId-tokenMkAtomDoLambda = mkTracingToken "mkDoLambda"---- tokens for expression combinators:--tokenAp :: Arity -> TokenId-tokenAp = mkTracingTokenArity "ap" -tokenUAp :: Arity -> TokenId-tokenUAp = mkTracingTokenArity "uap"--tokenApp :: Arity -> TokenId-tokenApp = mkTracingTokenArity "app" -tokenUApp :: Arity -> TokenId-tokenUApp = mkTracingTokenArity "uapp"--tokenFun :: Arity -> TokenId-tokenFun = mkTracingTokenArity "fun"-tokenUFun :: Arity -> TokenId-tokenUFun = mkTracingTokenArity "ufun"--tokenCon :: Arity -> TokenId-tokenCon = mkTracingTokenArity "con"--tokenPa :: Arity -> TokenId-tokenPa = mkTracingTokenArity "pa"--tokenCn :: Arity -> TokenId-tokenCn = mkTracingTokenArity "cn"--tokenConstUse :: TokenId-tokenConstUse = mkTracingToken "constUse"-tokenUConstUse :: TokenId-tokenUConstUse = mkTracingToken "uconstUse"--tokenConstDef :: TokenId-tokenConstDef = mkTracingToken "constDef"-tokenUConstDef :: TokenId-tokenUConstDef = mkTracingToken "uconstDef"--tokenGuard :: TokenId-tokenGuard = mkTracingToken "cguard"-tokenUGuard :: TokenId-tokenUGuard = mkTracingToken "ucguard"--tokenIf :: TokenId-tokenIf = mkTracingToken "cif"-tokenUIf :: TokenId-tokenUIf = mkTracingToken "ucif"--tokenCase :: TokenId-tokenCase = mkTracingToken "ccase"-tokenUCase :: TokenId-tokenUCase = mkTracingToken "uccase"--tokenUpdate :: Arity -> TokenId-tokenUpdate = mkTracingTokenArity "update"-tokenUUpdate :: TokenId-tokenUUpdate = mkTracingToken "uupdate"--tokenProjection :: TokenId-tokenProjection = mkTracingToken "projection"--tokenConChar :: TokenId-tokenConChar = mkTracingToken "conChar"--tokenConInteger :: TokenId-tokenConInteger = mkTracingToken "conInteger"--tokenFromLitString :: TokenId-tokenFromLitString = mkTracingToken "fromLitString"-tokenFromExpList :: TokenId-tokenFromExpList = mkTracingToken "fromExpList"--tokenWrapValClass :: TokenId-tokenWrapValClass = mkTracingToken "WrapVal"-tokenWrapValFun :: TokenId-tokenWrapValFun = mkTracingToken "wrapVal"--tokenUWrapForward :: TokenId-tokenUWrapForward = mkTracingToken "uwrapForward"---- tokens of the Prelude--tokenUndefined :: TokenId-tokenUndefined = mkTPreludeToken "gundefined"---- for integer literals-tokenFromInteger :: TokenId-tokenFromInteger = mkTPreludeToken "gfromInteger"---- for rational literals-tokenConRational :: TokenId-tokenConRational = mkTPreludeToken ":%"-tokenFromRational :: TokenId-tokenFromRational = mkTPreludeToken "gfromRational"---- function for pattern-match failure error message-tokenFatal :: TokenId-tokenFatal = mkTracingToken "fatal"---- other hardcoded tokens:--tokenTraceIO :: TokenId-tokenTraceIO = mkTracingToken "traceIO"--tokenRefSrcPos :: TokenId-tokenRefSrcPos = mkTracingToken "RefSrcPos"--tokenRefExp :: TokenId-tokenRefExp = mkTracingToken "RefExp"---- ------------------------------------------------------------------------------expTo :: Pos -> Type TraceId -> Exp TokenId-expTo = expType True--expFrom :: Pos -> Type TraceId -> Exp TokenId-expFrom = expType False--expType :: Bool -> Pos -> Type TraceId -> Exp TokenId-expType to pos (TypeVar _ tyId) = - ExpVar pos (mkTypeToken (prefix to ++ "Id"))-expType to pos (TypeCons _ tyCon []) = - ExpVar pos (mkTypeToken (prefix to ++ typeName tyCon))-expType to pos (TypeCons _ tyCon [ty1,ty2]) | isFunTyCon tyCon =- ExpApplication pos - [ExpVar pos (mkTypeToken (prefix to ++ "Fun")) - ,expType (not to) pos ty1 - ,expType to pos ty2] -expType to pos (TypeCons _ tyCon tys) = - ExpApplication pos - (ExpVar pos (mkTypeToken (prefix to ++ typeName tyCon)) - : map (expType to pos) tys)--prefix :: Bool -> String-prefix True = "to"-prefix False = "from"--typeName :: TraceId -> String-typeName aId = - case tokenId aId of- TupleId n -> "Tuple" ++ show n- t | eqPredefined "[]" t -> "List"- _ -> getUnqualified aId---- ------------------------------------------------------------------------------- various little helper functions--extractUnqual :: TokenId -> String-extractUnqual = reverse . unpackPS . extractV---eqPredefinedTrace :: String -> TraceId -> Bool-eqPredefinedTrace s id = eqPredefined s (tokenId id)--eqPredefined :: String -> TokenId -> Bool-eqPredefined s id = - -- a bit of a hack- -- without qualification and even with qualification "Prelude"- -- the token does not necessarily originate from Prelude- -- but we pretend it does- ((==) s . extractUnqual $ id) && - ((==) "Prelude" . qualModule . extractM $ id)---- test for specific tokens--isFunTyCon :: TraceId -> Bool-isFunTyCon = eqPredefinedTrace "->"--- (tokenId id) == t_Arrow--isTrue :: TraceId -> Bool-isTrue = eqPredefinedTrace "True"--- (tokenId id) == tTrue--isOtherwise :: TraceId -> Bool-isOtherwise = eqPredefinedTrace "otherwise"--- (tokenId id) == t_otherwise--isMain :: TraceId -> Bool-isMain = eqPredefinedTrace "Main"--- (tokenId id) == tMain---- other stuff--mkFailExp :: Pos -> Exp TokenId -> Exp TokenId-mkFailExp pos parent = ExpApplication pos [ExpVar pos tokenFatal,parent]--mkTupleExp :: Pos -> [Exp TokenId] -> Exp TokenId-mkTupleExp pos es = ExpApplication pos (ExpCon pos (t_Tuple (length es)): es)----- ------------------------------------------------------------------------------instance Functor Module where - fmap f (Module pos id mayExports imps fixs decls) =- Module pos (f id) (fmap (map (fmap f)) mayExports) (map (fmap f) imps) - (map (mapDeclFixity f) fixs) (fmap f decls)--instance Functor Export where- fmap f (ExportEntity pos entity) = ExportEntity pos (fmap f entity)- fmap f (ExportModid pos id) = ExportModid pos (f id)--instance Functor ImpDecl where- fmap f (Import (pos,id) impSpec) = Import (pos,f id) (fmap f impSpec)- fmap f (ImportQ (pos,id) impSpec) = ImportQ (pos,f id) (fmap f impSpec)- fmap f (ImportQas (pos,id) (pos2,id2) impSpec) =- ImportQas (pos,f id) (pos2,f id2) (fmap f impSpec)- fmap f (Importas (pos,id) (pos2,id2) impSpec) =- Importas (pos,f id) (pos2,f id2) (fmap f impSpec)--instance Functor ImpSpec where- fmap f (NoHiding entities) = NoHiding (map (fmap f) entities)- fmap f (Hiding entities) = Hiding (map (fmap f) entities)--instance Functor Entity where- fmap f (EntityVar pos id) = EntityVar pos (f id)- fmap f (EntityConClsAll pos id) = EntityConClsAll pos (f id)- fmap f (EntityConClsSome pos id pids) =- EntityConClsSome pos (f id) (mapListSnd f pids)--instance Functor InfixClass where- fmap f InfixDef = InfixDef- fmap f InfixL = InfixL- fmap f InfixR = InfixR- fmap f Infix = Infix- fmap f (InfixPre a) = InfixPre (f a)--mapDeclFixity :: (a -> b) -> FixDecl a -> FixDecl b-mapDeclFixity f (iclass,fix,fixIds) = (fmap f iclass,fix,map (fmap f) fixIds)--instance Functor FixId where- fmap f (FixCon pos id) = FixCon pos (f id)- fmap f (FixVar pos id) = FixVar pos (f id)--instance Functor Decls where- fmap f (DeclsParse decls) = DeclsParse (map (fmap f) decls)- fmap f (DeclsScc decldeps) = DeclsScc (map (fmap f) decldeps)--instance Functor DeclsDepend where- fmap f (DeclsNoRec d) = DeclsNoRec (fmap f d)- fmap f (DeclsRec ds) = DeclsRec (map (fmap f) ds)--instance Functor Decl where- fmap f (DeclType simple ty) = DeclType (fmap f simple) (fmap f ty)- fmap f (DeclTypeRenamed pos id) = DeclTypeRenamed pos id- fmap f (DeclData sort contexts simple constrs derive) = - DeclData sort (map (fmap f) contexts) (fmap f simple) - (map (fmap f) constrs) (map (\(p,i)->(p,f i)) derive)- fmap f (DeclDataPrim pos id size) = DeclDataPrim pos (f id) size- fmap f (DeclConstrs pos id fields) =- DeclConstrs pos (f id) (map (\(p,i1,i2)->(p,f i1,f i2)) fields)- fmap f (DeclClass pos contexts cls tys fundeps decls) =- DeclClass pos (map (fmap f) contexts) (f cls) (map f tys)- (map (fmap f) fundeps) (fmap f decls)- fmap f (DeclInstance pos contexts cls insts decls) =- DeclInstance pos (map (fmap f) contexts) (f cls) (map (fmap f) insts) - (fmap f decls)- fmap f (DeclDefault tys) = DeclDefault (map (fmap f) tys)- fmap f (DeclPrimitive pos id a ty) = DeclPrimitive pos (f id) a (fmap f ty)- fmap f (DeclForeignImp pos callconv extfun id a fspec ty id') =- DeclForeignImp pos callconv extfun (f id) a fspec (fmap f ty) (f id')- fmap f (DeclVarsType vars contexts ty) =- DeclVarsType (mapListSnd f vars) (map (fmap f) contexts) (fmap f ty)- fmap f (DeclPat alt) = DeclPat (fmap f alt)- fmap f (DeclFun pos id funs) = DeclFun pos (f id) (map (fmap f) funs)- fmap f (DeclIgnore s) = DeclIgnore s- fmap f (DeclError s) = DeclError s- fmap f (DeclAnnot decl annots) = - DeclAnnot (fmap f decl) (map (fmap f) annots)- fmap f (DeclFixity fixity) = - DeclFixity (mapDeclFixity f fixity)--instance Functor Annot where- fmap f (AnnotArity (p,id) i) = AnnotArity (p,f id) i- fmap f (AnnotPrimitive (p,id) s) = AnnotPrimitive (p, f id) s- fmap f (AnnotNeed idss) = AnnotNeed (map (map f) idss)- fmap f AnnotUnknown = AnnotUnknown--instance Functor FunDep where- fmap f (as :->: bs) = (map f as) :->: (map f bs)--instance Functor Fun where- fmap f (Fun pats rhs decls) = - Fun (map (fmap f) pats) (fmap f rhs) (fmap f decls)--instance Functor Alt where- fmap f (Alt pat rhs decls) =- Alt (fmap f pat) (fmap f rhs) (fmap f decls)--instance Functor Rhs where- fmap f (Unguarded exp) = Unguarded (fmap f exp)- fmap f (Guarded gdexps) = - Guarded (map (\(e1,e2)->(fmap f e1,fmap f e2)) gdexps)--instance Functor Type where- fmap f (TypeCons pos id tys) = TypeCons pos (f id) (map (fmap f) tys)- fmap f (TypeApp ty1 ty2) = TypeApp (fmap f ty1) (fmap f ty2)- fmap f (TypeVar pos id) = TypeVar pos (f id)- fmap f (TypeStrict pos ty) = TypeStrict pos (fmap f ty)--instance Functor Simple where- fmap f (Simple pos id ids) = Simple pos (f id) (mapListSnd f ids)--instance Functor Context where- fmap f (Context pos id pis) =- Context pos (f id) (map (\(p,id2)->(p,f id2)) pis)--instance Functor Constr where- fmap f (Constr pos id fields) = Constr pos (f id) (mapFields f fields)- fmap f (ConstrCtx vars contexts pos id fields) =- ConstrCtx (mapListSnd f vars) (map (fmap f) contexts) pos (f id) - (mapFields f fields)--mapFields :: (a -> b) - -> [(Maybe [(Pos,a)],Type a)] -> [(Maybe [(Pos,b)],Type b)]-mapFields f = map (\(may,ty)-> (fmap (mapListSnd f) may, fmap f ty))--instance Functor Stmt where- fmap f (StmtExp exp) = StmtExp (fmap f exp)- fmap f (StmtBind e1 e2) = StmtBind (fmap f e1) (fmap f e2)- fmap f (StmtLet decls) = StmtLet (fmap f decls)--instance Functor Exp where- fmap f (ExpScc s e) = ExpScc s (fmap f e)- fmap f (ExpDict e) = ExpDict (fmap f e)- fmap f (ExpLambda pos pats e) = ExpLambda pos (map (fmap f) pats) (fmap f e)- fmap f (ExpLet pos decls e) = ExpLet pos (fmap f decls) (fmap f e)- fmap f (ExpDo pos stmts) = ExpDo pos (map (fmap f) stmts)- fmap f (ExpCase pos e alts) = ExpCase pos (fmap f e) (map (fmap f) alts)- fmap f (ExpFatbar e1 e2) = ExpFatbar (fmap f e1) (fmap f e2)- fmap f ExpFail = ExpFail- fmap f (ExpIf pos e1 e2 e3) = ExpIf pos (fmap f e1) (fmap f e2) (fmap f e3)- fmap f (ExpType pos e contexts ty) = - ExpType pos (fmap f e) (map (fmap f) contexts) (fmap f ty)- fmap f (ExpRecord e fields) = ExpRecord (fmap f e) (map (fmap f) fields)- fmap f (ExpApplication pos es) = ExpApplication pos (map (fmap f) es)- fmap f (ExpVar pos id) = ExpVar pos (f id)- fmap f (ExpCon pos id) = ExpCon pos (f id)- fmap f (ExpInfixList pos es) = ExpInfixList pos (map (fmap f) es)- fmap f (ExpVarOp pos id) = ExpVarOp pos (f id)- fmap f (ExpConOp pos id) = ExpConOp pos (f id)- fmap f (ExpLit pos lit) = ExpLit pos lit- fmap f (ExpList pos es) = ExpList pos (map (fmap f) es)- fmap f (Exp2 pos id1 id2) = Exp2 pos (f id1) (f id2)- fmap f (PatAs pos id pat) = PatAs pos (f id) (fmap f pat)- fmap f (PatWildcard pos) = PatWildcard pos- fmap f (PatIrrefutable pos pat) = PatIrrefutable pos (fmap f pat)- fmap f (PatNplusK pos id1 id2 e1 e2 e3) =- PatNplusK pos (f id1) (f id2) (fmap f e1) (fmap f e2) (fmap f e3)--instance Functor Field where- fmap f (FieldExp pos id e) = FieldExp pos (f id) (fmap f e)- fmap f (FieldPun pos id) = FieldPun pos (f id)---- ------------------------------------------------------------------------------- End+{-# LANGUAGE PatternGuards #-}+{- ---------------------------------------------------------------------------+Transform a module for generating a trace.++Names are changed.+Module names are prefixed by 'Hat.'.+Variable names are prefixed to make room for new variable names +refering to various traces and intermediate expressions.+Details of new name scheme near the end of this module.++No monad is used in the transformation, +because there is nothing inherently sequential.+Instead, the definitions of the transformation functions `t*' remind of an +attribut grammar: the arguments are the inherited attributes, the elements+of the result tuples are the synthetic attributes.+---------------------------------------------------------------------------- -}++module TraceTrans (traceTrans, Tracing(..)) where++import Language.Haskell.Exts.Annotated+import System.FilePath (FilePath,takeBaseName)+import Data.Maybe (fromMaybe,isNothing,isJust,fromJust)+import Data.List (stripPrefix,nubBy,partition)+import Data.Char (digitToInt,isAlpha)+import Data.Ratio (numerator,denominator)+import Data.Set (Set)+import qualified Data.Set as Set+import Relation (emptyRelation,unionLocalRelation)+import Environment (Environment,Scope(..),isLocal+ ,TySynBody(TApp,TFun,THelper,TVar)+ ,lookupExpEnv, lookupTypeEnv+ ,eArity, eNo, eBody, eCons, eFields+ ,Entity,isClass, isSyn, isType+ ,arity,isLambdaBound,isTracedQName+ ,fixPriority,isUndefinedMethod+ ,isExpandableTypeSynonym,typeSynonymBody+ ,nameTransTySynHelper,expandTypeSynonym+ ,declsEnv,instanceEnv,moduleDefines,maybeBindsEnv,bindsEnv,patsEnv,defineNameEnv+ ,lambdaVarEnv,makeAllLambdaBound)+import Wired+import SynHelp+import Derive (derive)++import Environment (prettyEnv)+import Debug.Trace++-- ----------------------------------------------------------------------------+-- central types++data Tracing = Traced | Trusted deriving Eq++isTraced :: Tracing -> Bool+isTraced Traced = True+isTraced Trusted = False++-- ----------------------------------------------------------------------------+-- Transform a module++traceTrans :: + FilePath -> -- complete filename of the module (essential for module Main)+ Tracing -> -- whether transforming for tracing or trusting+ Environment -> -- contains already info about all imported identifiers+ Module SrcSpanInfo -> + Module SrcSpanInfo -- some srcSpanInfo will be fake+traceTrans moduleFilename tracing env+ mod@(Module span maybeModuleHead modulePragmas impDecls decls) =+ Module span (adaptMain (fmap (tModuleHead env declsExported) maybeModuleHead))+ (map tModulePragma modulePragmas) + (tImpDecls env impDecls)+ (declsExported +++ [PatBind span patParent Nothing + (UnGuardedRhs span expRoot) Nothing] +++ [defNameMod modName moduleFilename tracing] +++ (if isTraced tracing then map (defNameSpan modTrace) ls else []))+ where+ modName = getModuleNameFromModule mod+ declsExported = decls' ++ map (\f -> f modTrace) defFuns +++ if isMain modName+ then [defMain tracing (traceBaseFilename moduleFilename)] + else []+ -- conNameDefs = map (defNameCon env modTrace) cons + -- globalVarNameDefs = map (defNameVar env Global Global modTrace) tvars + modName' = nameTransModule modName+ modTrace = Var span (UnQual span (nameTraceInfoModule modName))+ -- (poss,tvars,vars,mvars,cons) = getModuleConsts consts+ (decls',consts) = tDecls env Global tracing decls+ definedEnv = moduleDefines (isTraced tracing) env mod+ (ls,defFuns) = moduleConstsGet (moduleConstsEnv Global definedEnv `moduleConstsUnion` consts)+ adaptMain maybeModuleHead = if isMain modName then Nothing else maybeModuleHead+traceTrans _ _ _ (XmlPage span _ _ _ _ _ _) = notSupported span "XmlPage"+traceTrans _ _ _ (XmlHybrid span _ _ _ _ _ _ _ _) = notSupported span "XmlHybrid"++-- For the complete filename of a module yields the base filename for the +-- trace file.+-- Pre-condition: The module is a Main module+traceBaseFilename :: FilePath -> FilePath+traceBaseFilename = takeBaseName++-- obtain the module identifier+getModuleId :: ModuleHead l -> String+getModuleId (ModuleHead _ (ModuleName _ modId) _ _) = modId++tModuleHead :: Environment -> + [Decl SrcSpanInfo] -> -- transformed declarations of this module+ ModuleHead SrcSpanInfo -> ModuleHead SrcSpanInfo+tModuleHead env decls+ (ModuleHead span moduleName maybeWarningText maybeExportSpecList) =+ ModuleHead span (nameTransModule moduleName) + (fmap tWarningText maybeWarningText)+ (tMaybeExportSpecList ((\(ModuleName _ modId) -> modId) moduleName)+ env maybeExportSpecList decls)++-- warnings stay unchanged+tWarningText :: WarningText l -> WarningText l+tWarningText w = w++-- not all module pragmas can be transformed+tModulePragma :: ModulePragma SrcSpanInfo -> ModulePragma SrcSpanInfo+tModulePragma (LanguagePragma l names) = LanguagePragma l names+tModulePragma (OptionsPragma l maybeTool string) = + OptionsPragma l maybeTool string+tModulePragma (AnnModulePragma l _) = + notSupported l "ANN pragma with module scope"++-- ----------------------------------------------------------------------------+-- construct new main function definition++-- main = T.traceIO "artFilename" gmain+-- equivalent to+-- main = do+-- T.openTrace "artFilename"+-- case omain Prelude.undefined Prelude.undefined of+-- T.R v _ -> v+-- T.closeTrace+defMain :: Tracing -> String -> Decl SrcSpanInfo+defMain tracing artFileName =+ PatBind noSpan (PVar noSpan (nameMain noSpan)) Nothing+ (UnGuardedRhs noSpan (appN+ [expTraceIO+ ,litString noSpan artFileName+ ,appN [Var noSpan qNameGMain, mkExpSR noSpan Trusted, expRoot]]))+ Nothing+ where+ qNameGMain = nameTransLetVar (UnQual noSpan (nameMain noSpan))+ +++-- ----------------------------------------------------------------------------+-- Produce export list++tMaybeExportSpecList :: String -> -- name of this module+ Environment ->+ Maybe (ExportSpecList SrcSpanInfo) -> -- original list+ [Decl SrcSpanInfo] -> -- new declarations+ Maybe (ExportSpecList SrcSpanInfo)+tMaybeExportSpecList _ _ Nothing decls = + Just (ExportSpecList noSpan (concatMap makeExport decls)) +tMaybeExportSpecList thisModuleId env + (Just (ExportSpecList l exportSpecs)) decls =+ Just (ExportSpecList l + (concatMap (tExportSpec env decls thisModuleId) exportSpecs))+ +tExportSpec :: Environment -> [Decl SrcSpanInfo] -> + String -> -- name of *this* module, being transformed+ ExportSpec SrcSpanInfo ->+ [ExportSpec SrcSpanInfo]+tExportSpec env _ _ (EVar span qname) = + map (EVar span) (tEntityVar env qname)+tExportSpec env _ _ (EAbs span qname) =+ map (EAbs span) qnames'+ where+ qnames' = tEntityAbs env qname+tExportSpec env decls thisModule (EThingAll span qName) + | isClass e = [EThingAll span (nameTransCls qName)]+ | isType e = tExportSpec env decls thisModule + (EThingWith span qName (map conName (eCons e) ++ map fieldName (eFields e)))+ | otherwise = error "TraceTrans.tExportSpec: type synonym with (..)."+ where+ e = lookupTypeEnv env qName+ conName str = ConName span (Symbol span str)+ fieldName str = VarName span (Ident span str)+tExportSpec env _ _ (EThingWith span qname cnames) =+ EThingWith span qname' cnames' : map (EVar span) qnames'+ where+ (qname', cnames', qnames') = tEntityThingWith env qname cnames+tExportSpec env decls thisModuleId + (EModuleContents span moduleName@(ModuleName _ moduleId)) =+ if thisModuleId == moduleId + then concatMap makeExport decls+ else [EModuleContents span (nameTransModule moduleName)]++-- Produce export entities from the declarations generated by the transformation+-- These are all entities defined in this module and meant for export.+makeExport :: Decl SrcSpanInfo -> [ExportSpec SrcSpanInfo]+makeExport (TypeDecl l declHead _) = + [EAbs l (UnQual l (getDeclHeadName declHead))]+makeExport (TypeFamDecl l declHead _) = + [EAbs l (UnQual l (getDeclHeadName declHead))]+makeExport (DataDecl l _ _ declHead _ _) =+ [EThingAll l (UnQual l (getDeclHeadName declHead))]+makeExport (GDataDecl l _ _ declHead _ _ _) =+ [EThingAll l (UnQual l (getDeclHeadName declHead))]+makeExport (ClassDecl l _ declHead _ _) =+ [EThingAll l (UnQual l (getDeclHeadName declHead))]+makeExport (FunBind l matches) =+ if exportedTransName name then [EVar l (UnQual l name)] else []+ where+ name = getMatchName (head matches)+makeExport (PatBind l (PVar l' name) _ _ _) =+ if exportedTransName name then [EVar l (UnQual l name)] else []+makeExport _ = []++-- Checks whether this is the name of a function that should be exported +-- by the module.+exportedTransName :: Name l -> Bool+exportedTransName (Ident _ name) = head name `elem` ['g','a','h']+exportedTransName (Symbol _ name) = head name `elem` ['!','+','*']++getMatchName :: Match l -> Name l+getMatchName (Match _ name _ _ _) = name+getMatchName (InfixMatch _ _ name _ _ _) = name++getMatchArity :: Match l -> Arity+getMatchArity (Match _ _ pats _ _) = length pats+getMatchArity (InfixMatch _ _ _ pats _ _) = 1 + length pats++getDeclHeadName :: DeclHead l -> Name l+getDeclHeadName (DHead _ name _) = name+getDeclHeadName (DHInfix _ _ name _) = name+getDeclHeadName (DHParen _ declHead) = getDeclHeadName declHead++-- ----------------------------------------------------------------------------+-- Produce imports++tImpDecls :: Environment -> [ImportDecl SrcSpanInfo] -> [ImportDecl SrcSpanInfo]+tImpDecls env impDecls = + ImportDecl {importAnn = noSpan,+ importModule = ModuleName noSpan "Prelude",+ importQualified = True,+ importSrc = False,+ importPkg = Nothing,+ importAs = Nothing,+ importSpecs = Nothing}+ -- Avoid default import of Prelude by importing it qualified.+ -- Transformed program still uses a few (qualified) Prelude+ -- functions and data constructors.+-- : ImportDecl {importAnn = noSpan,+-- importModule = ModuleName noSpan "Hat.Hack",+-- importQualified = False,+-- importSrc = False,+-- importPkg = Nothing,+-- importAs = Nothing,+-- importSpecs = Nothing}+-- -- For list syntax : and [].+-- -- Is that really needed?+ : ImportDecl {importAnn = noSpan,+ importModule = ModuleName noSpan "Hat.Hat",+ importQualified = True,+ importSrc = False,+ importPkg = Nothing,+ importAs = Just (ModuleName noSpan "T"),+ importSpecs = Nothing}+ -- All types and combinators for tracing, inserted by the transformation+ : map (tImportDecl env) impDecls++tImportDecl :: Environment -> ImportDecl SrcSpanInfo -> ImportDecl SrcSpanInfo+tImportDecl env importDecl = + if importSrc importDecl + then notSupported (importAnn importDecl) "{-# SOURCE #-}"+ else if isJust (importPkg importDecl)+ then notSupported (importAnn importDecl) "explicit package name"+ else + importDecl{importModule = nameTransModule (importModule importDecl),+ importAs = fmap nameTransModule (importAs importDecl),+ importSpecs = fmap (tImportSpecList env) (importSpecs importDecl)+ }++tImportSpecList :: Environment -> ImportSpecList SrcSpanInfo -> + ImportSpecList SrcSpanInfo+tImportSpecList env (ImportSpecList l hiding importSpecs) =+ ImportSpecList l hiding (concatMap (tImportSpec env) importSpecs)+ +-- Nearly identical with tExportSpec except for the types. +tImportSpec :: Environment -> ImportSpec SrcSpanInfo -> [ImportSpec SrcSpanInfo] +tImportSpec env (IVar span name) = + map (IVar span . qName2Name) qnames'+ where+ qnames' = tEntityVar env (UnQual (ann name) name)+tImportSpec env (IAbs span name) =+ map (IAbs span . qName2Name) qnames'+ where+ qnames' = tEntityAbs env (UnQual (ann name) name)+tImportSpec env (IThingAll span name) + | isClass e = [IThingAll span (nameTransCls name)]+ | isType e = tImportSpec env (IThingWith span name + (map conName (eCons e) ++ map fieldName (eFields e)))+ | otherwise = error "TraceTrans.tImportSpec: unexpected type synonym with (..)"+ where+ e = lookupTypeEnv env (UnQual (ann name) name)+ conName str = ConName span (mkName span str)+ fieldName str = VarName span (mkName span str)+tImportSpec env (IThingWith span name cnames) =+ IThingWith span (qName2Name qname') cnames' : + map (IVar span . qName2Name) qnames'+ where+ (qname', cnames', qnames') = + tEntityThingWith env (UnQual (ann name) name) cnames++-- ----------------------------------------------------------------------------+-- Produce entities in either import or export list++tEntityVar :: SrcInfo l => Environment -> QName l -> [QName l]+tEntityVar env qname = + nameTransLetVar qname : + case arity env qname of+ Just a | a > 0 -> [nameTraceInfoGlobalVar qname, nameWorker qname] + Just (-1) -> [nameShare qname]+ _ -> []++-- a class or datatype ex-/imported abstractly, or a type synonym+tEntityAbs :: SrcInfo l => Environment -> QName l -> [QName l]+tEntityAbs env qname + | isClass e = [nameTransCls qname]+ | isType e = [nameTransTy qname]+ | isSyn e = nameTransSyn qname : + map (nameTransTySynHelper qname) [1..eNo e]+ where+ e = lookupTypeEnv env qname++-- a class with some methods or a datatype with some constructors/fields+tEntityThingWith :: SrcInfo l => Environment -> QName l -> [CName l] -> + (QName l, [CName l], [QName l])+tEntityThingWith env qname cnames + | isClass e = (nameTransCls qname, + map nameTransLetVar cnames ++ + map nameShare cnames,+ [])+ | isType e = (nameTransTy qname,+ map nameTransCon consNames ++ map nameTransField fieldNames,+ map nameTransLetVar qFieldNames +++ map nameWorker qFieldNames +++ map nameTraceInfoGlobalVar qFieldNames +++ map nameTraceInfoCon qConsNames) + | otherwise = error "TraceTrans.tEntityThingWith: unexpected sort of type." + where+ e = lookupTypeEnv env qname+ qConsNames = map (cName2QName qname) consNames+ qFieldNames = map (cName2QName qname) fieldNames+ (consNames, fieldNames) = partition isSymbol cnames++-- ----------------------------------------------------------------------------+-- New top-level definitions for generating shared trace info+-- +-- Trace info for positions and identifier information. They have to be +-- top-level, so that they (and their side-effect) are only evaluated once.+-- INCOMPLETE: an optimising compiler may need noinline pragma. +-- The variables referring to variable information need to include the +-- position in the name, because the same variable name may be used several +-- times.++defNameMod :: ModuleName SrcSpanInfo -> String -> Tracing -> Decl SrcSpanInfo+defNameMod modName@(ModuleName l modId) filename tracing =+ PatBind l (PVar l (nameTraceInfoModule modName)) Nothing+ (UnGuardedRhs l+ (appN+ [Var l (qNameMkModule l)+ ,litString l modId+ ,litString l filename+ ,Con l (if isTraced tracing then qNamePreludeTrue l + else qNamePreludeFalse l)]))+ Nothing+++-- The span in the name is used in the declared name and its definition.+defNameCon :: Name SrcSpanInfo -> [Name SrcSpanInfo] -> Int -> Int -> Exp SrcSpanInfo -> Decl SrcSpanInfo+defNameCon conName fieldNames fixPri arity moduleTrace =+ PatBind l (PVar l (nameTraceInfoCon conName)) Nothing+ (UnGuardedRhs l+ (appN+ (Var l (qNameMkAtomConstructor l withFields) :+ moduleTrace :+ encodeSpan l +++ litInt l fixPri :+ Paren l (litInt l arity) :+ litString l ident :+ if withFields+ then (:[]) . mkExpList .+ map (Var l . UnQual l . nameTraceInfoVar l Global) $ + fieldNames+ else [] )+ ))+ Nothing+ where+ l = ann conName+ ident = getId conName+ withFields = not (null fieldNames)++{-+defNameCon :: Environment -> + Exp SrcSpanInfo -> + (Name SrcSpanInfo, [Name SrcSpanInfo]) -> + Decl SrcSpanInfo+defNameCon env moduleTrace (conName, fieldNames) =+ PatBind l (PVar l (nameTraceInfoCon conName)) Nothing+ (UnGuardedRhs l+ (appN+ (Var l (qNameMkAtomConstructor l withFields) :+ moduleTrace :+ encodeSpan l +++ litInt l (fixPriority env conName) :+ litInt l (fromJust (arity env (UnQual l conName))) :+ litString l ident :+ if withFields+ then (:[]) . mkExpList .+ map (Var l . UnQual l . nameTraceInfoVar l Global) $ + fieldNames+ else [] )+ ))+ Nothing+ where+ l = ann conName+ ident = getId conName+ withFields = not (null fieldNames)+-}++-- The span in the name is used in the declared name and its definition.+defNameVar :: Name SrcSpanInfo -> Int -> Int -> Scope -> Scope -> Exp SrcSpanInfo -> Decl SrcSpanInfo+defNameVar varName fixPri arity defScope visScope moduleTrace =+ PatBind l (PVar l (nameTraceInfoVar l visScope varName)) Nothing+ (UnGuardedRhs l+ (appN+ (Var l (qNameMkAtomVariable l) :+ moduleTrace :+ encodeSpan l +++ [litInt l fixPri,+ Paren l (litInt l arity),+ litString l (getId varName),+ Con l (if isLocal defScope then qNamePreludeTrue l + else qNamePreludeFalse l)])))+ Nothing+ where+ l = ann varName++{-+defNameVar :: Environment -> Scope -> Scope -> + Exp SrcSpanInfo -> Name SrcSpanInfo -> + Decl SrcSpanInfo+defNameVar env defScope visScope moduleTrace varName =+ PatBind l (PVar l (nameTraceInfoVar l visScope varName)) Nothing+ (UnGuardedRhs l+ (appN+ (Var l (qNameMkAtomVariable l) :+ moduleTrace :+ encodeSpan l +++ [litInt l (fixPriority env varName),+ -- all identifiers in definition position are assumed to + -- be equipped with an arity; + -- only those defined by pattern bindings do not; they have arity 0.+ litInt l (fromMaybe 0 (arity env (UnQual l varName))),+ litString l (getId varName),+ Con l (if isLocal defScope then qNamePreludeTrue l + else qNamePreludeFalse l)])))+ Nothing+ where+ l = ann varName+-}++defNameSpan :: Exp SrcSpanInfo -> SrcSpan -> Decl SrcSpanInfo+defNameSpan moduleTrace span =+ PatBind l (PVar l (nameTraceInfoSpan l)) Nothing+ (UnGuardedRhs l+ (appN+ (Var l (qNameMkSpan l) :+ moduleTrace :+ encodeSpan l)))+ Nothing+ where+ l = noInfoSpan span++-- Encode a span in the trace file+encodeSpan :: SrcSpanInfo -> [Exp SrcSpanInfo]+encodeSpan span =+ [litInt noSpan (10000*beginRow + beginCol)+ ,litInt noSpan (10000*endRow + endCol)]+ where+ (beginRow,beginCol,endRow,endCol) = getSpan span++-- Obtain start line, column and end line, column+-- Try to get correct end, as parser gives start of next construct instead.+getSpan :: SrcSpanInfo -> (Int,Int,Int,Int)+getSpan SrcSpanInfo{srcInfoSpan=srcSpan,srcInfoPoints=points} =+ (srcSpanStartLine srcSpan, srcSpanStartColumn srcSpan, erow, ecol)+ where+ end = if null points + then srcSpanEnd srcSpan+ else srcSpanEnd (last points) + correct (row,col) = (row,if col > 0 then col-1 else col) + (erow,ecol) = correct end ++-- Compress data.+dropInfo :: SrcSpanInfo -> SrcSpan+dropInfo SrcSpanInfo{srcInfoSpan=srcSpan,srcInfoPoints=points} =+ srcSpan{srcSpanEndLine = line, srcSpanEndColumn = col}+ where+ (line,col) = if null points then srcSpanEnd srcSpan else srcSpanEnd (last points) + + +-- ----------------------------------------------------------------------------+-- Abstract data type for keeping track of two sorts of constants introduced +-- by the transformation.+-- +-- 1. Collects all spans used in source references of transformed code, +-- so that corresponding variables can be defined at the top-level of the module.+-- The same span can be added repeatedly, but doubtful this ever happens.+-- 2. Collects information about defined expression names +-- (let-bound variables, fields, methods and data constructors) +-- from the environment of every scope. From this corresponding variables +-- describing the namse and definition locations are obtained at the end.+-- Needs to know whether a scope is local or global, to produce appropriate+-- variable names. +--+-- Have compositional union operator to combine constants.++data ModuleConsts = MC (Set SrcSpan) ([DeclFun] -> [DeclFun])+type DeclFun = Exp SrcSpanInfo -> Decl SrcSpanInfo++moduleConstsEmpty :: ModuleConsts+moduleConstsEmpty = MC Set.empty id++moduleConstsSpan :: SrcSpanInfo -> ModuleConsts+moduleConstsSpan l = MC (Set.singleton (dropInfo l)) id++-- Add a name declaration for every unqualified value name (not type/class) in the environment.+moduleConstsEnv :: Scope -> Environment -> ModuleConsts+moduleConstsEnv scope env = MC Set.empty (\xs -> defineNameEnv scope env defNameVar defNameCon ++ xs)++infixl 5 `moduleConstsUnion`+moduleConstsUnion :: ModuleConsts -> ModuleConsts -> ModuleConsts+moduleConstsUnion (MC spans1 dfs1) (MC spans2 dfs2) = MC (spans1 `Set.union` spans2) (dfs1 . dfs2)++moduleConstsGet :: ModuleConsts -> ([SrcSpan], [DeclFun])+moduleConstsGet (MC spans dfs) = (Set.elems spans, dfs [])+++-- ----------------------------------------------------------------------------+-- Transformation of declarations, expressions etc.++-- pre-condition: The environment contains information about all+-- identifiers declared on this level and more global,+-- but not the local scopes inside.+tDecls :: Environment -> Scope -> Tracing -> + [Decl SrcSpanInfo] ->+ ([Decl SrcSpanInfo], ModuleConsts)+tDecls env scope tracing decls = + foldr combine ([], moduleConstsEmpty) + (map (tDecl env scope tracing) decls)+ where+ combine :: ([Decl SrcSpanInfo], ModuleConsts) -> + ([Decl SrcSpanInfo], ModuleConsts) -> + ([Decl SrcSpanInfo], ModuleConsts)+ combine (ds1, c1) (ds2, c2) = (ds1 ++ ds2, c1 `moduleConstsUnion` c2)+++tDecl :: Environment -> Scope -> Tracing ->+ Decl SrcSpanInfo ->+ ([Decl SrcSpanInfo], ModuleConsts)+tDecl env _ _ synDecl@(TypeDecl span declHead ty) =+ (map tTypeSynonym (splitSynonym env synDecl), moduleConstsEmpty)+ where+ tTypeSynonym :: Decl SrcSpanInfo -> Decl SrcSpanInfo+ tTypeSynonym (TypeDecl span declHead ty) =+ TypeDecl span (declHead) (tType ty)+tDecl _ _ _ (TypeFamDecl l _ _) =+ notSupported l "type family declaration"+tDecl env Global tracing d@(DataDecl span dataOrNew maybeContext declHead + qualConDecls maybeDeriving) =+ (DataDecl span dataOrNew (fmap tContext maybeContext) + (declHead) (map tQualConDecl qualConDecls) Nothing :+ -- "derive" must be empty, because transformed classes cannot be derived+ instDecl : fieldSelectorDecls ++ deriveDecls'+ ,derivedConsts `moduleConstsUnion` fieldSelectorConsts `moduleConstsUnion` deriveConsts)+ where+ derivedDecls = derive env d+ derivedConsts = moduleConstsEnv Local (declsEnv False env derivedDecls)+ (deriveDecls', deriveConsts) = + tDecls env Global Trusted derivedDecls+ instDecl = wrapValInstDecl env tracing maybeContext declHead qualConDecls+ (fieldSelectorDecls, fieldSelectorConsts) = mkFieldSelectors qualConDecls+tDecl _ _ _ (GDataDecl l _ _ _ _ _ _) =+ notSupported l "generalized algebraic data type declaration"+tDecl _ _ _ (DataFamDecl l _ _ _) =+ notSupported l "data family declaration"+tDecl _ _ _ (TypeInsDecl l _ _) =+ notSupported l "type family instance declaration"+tDecl _ _ _ (DataInsDecl l _ _ _ _) =+ notSupported l "data family instance declaration"+tDecl _ _ _ (GDataInsDecl l _ _ _ _ _) =+ notSupported l "GADT family instance declaration"+tDecl env _ tracing -- class without methods+ (ClassDecl l maybeContext declHead fundeps Nothing) =+ onlyDecl (ClassDecl l (fmap tContext maybeContext) + (mapDeclHead (updateId id) declHead) + (map tFunDep fundeps) Nothing)+tDecl env _ tracing -- class with methods+ (ClassDecl l maybeContext declHead fundeps (Just classDecls)) =+ ([ClassDecl l (fmap tContext maybeContext) + (mapDeclHead (updateId id) declHead) + (map tFunDep fundeps) (Just classDecls')]+ ,declsConsts)+ where+ (classDecls', declsConsts) = tClassDecls env tracing classDecls+tDecl env _ tracing -- class instance without methods+ (InstDecl l maybeContext instHead Nothing) =+ onlyDecl (InstDecl l (fmap tContext maybeContext) (tInstHead instHead) + Nothing)+tDecl env _ tracing -- class instance with methods+ inst@(InstDecl l maybeContext instHead (Just instDecls)) =+ ([InstDecl l (fmap tContext maybeContext) (tInstHead instHead) + (Just instDecls')]+ ,declsConsts `moduleConstsUnion` moduleConstsEnv Local localEnv)+ where+ (instDecls', declsConsts) = tInstDecls env2 tracing instDecls+ -- Add unqualified method names to environment.+ -- Qualfied ones should already be in environment but unqualfied may not.+ localEnv = instanceEnv (isTraced tracing) env inst+ env2 = env `unionLocalRelation` localEnv++tDecl _ _ _ (DerivDecl l _ _) =+ notSupported l "standalone deriving declaration"+tDecl _ _ _ (InfixDecl l assoc priority ops) =+ ([],moduleConstsEmpty)+ -- Not needed, because pretty printer produces unambgious output.+ -- Transforming would require to differentiate between normal + -- functions and data constructors.+ -- onlyDecl (InfixDecl l assoc priority (map nameTransLetVar ops))+tDecl env _ _ (DefaultDecl l tys) =+ ([DefaultDecl l []+ ,WarnPragmaDecl l [([], "Defaulting doesn't work in traced programs. Add type annotations to resolve ambiguities.")]]+ ,moduleConstsEmpty)+tDecl _ _ _ (SpliceDecl l _) =+ notSupported l "Template Haskell splicing declaration"+tDecl env _ _ (TypeSig l names ty) =+ -- Type signatures need to be preserved (i.e. transformed),+ -- because polymorphic recursion needs them or more general+ -- types may later lead to ambiguous types+ -- Also shared constants need to be typed, in case they are overloaded,+ -- so that the monomorphic restriction does not lead to type error+ -- (actually then sharing is unfortunately lost)+ (TypeSig l (map nameTransLetVar names) (tMapType tFunType ty) :+ concatMap mkWorkerTypeSig nonConstNames +++ if null constNames then []+ else [TypeSig l (map nameShare constNames) (tMapType tConstType ty)]+ ,moduleConstsEmpty)+ where+ (constNames, nonConstNames) = Data.List.partition isNonMethodConstant names+ isNonMethodConstant :: Name SrcSpanInfo -> Bool+ isNonMethodConstant name =+ isLambdaBound env qName || maybe False (==0) (arity env qName)+ where+ qName = UnQual l name+ mkWorkerTypeSig :: Name SrcSpanInfo -> [Decl SrcSpanInfo]+ mkWorkerTypeSig name =+ case arity env (UnQual l name) of+ Just n | n > 0 -> [TypeSig l [nameWorker name] (tMapType (tWorkerType env n) ty)]+ _ -> []+tDecl env scope tracing (FunBind l matches) =+ tFunBind env scope tracing l matches + -- a function does not use the static parent+tDecl env scope tracing (PatBind l pat maybeTy rhs maybeBinds) =+ tPatBind env scope tracing l pat maybeTy rhs maybeBinds+tDecl env _ _ (ForImp l callConv maybeSafety maybeString name ty) =+ case maybeString >>= stripPrefix "NotHat." of+ Just origName -> tForeignImp l (mkQName l origName) name ty+ Nothing -> + (ForImp l callConv maybeSafety maybeString (nameForeign name) ty :+ -- type is not renamed, original given type left unchanged + wrapperDecls+ ,consts)+ where+ (wrapperDecls, consts) = tForeignImp l (UnQual l (nameForeign name)) name ty+tDecl _ _ _ (ForExp l _ _ _ _) =+ notSupported l "foreign export declaration"+tDecl _ _ _ (RulePragmaDecl l _) =+ notSupported l "RULES pragma"+tDecl _ _ _ (DeprPragmaDecl l list) = onlyDecl (DeprPragmaDecl l list)+tDecl _ _ _ (WarnPragmaDecl l list) = onlyDecl (WarnPragmaDecl l list)+tDecl _ _ _ (InlineSig l _ _ _) =+ onlyDecl (WarnPragmaDecl l [([], "ignore INLINE pragma")])+tDecl _ _ _ (InlineConlikeSig l _ _) =+ onlyDecl (WarnPragmaDecl l [([], "ignore INLINE CONLIKE pragma")])+tDecl _ _ _ (SpecSig l _ _) =+ onlyDecl (WarnPragmaDecl l [([], "ignore SPECIALISE pragma")])+tDecl _ _ _ (SpecInlineSig l _ _ _ _) =+ onlyDecl (WarnPragmaDecl l [([], "ignore SPECIALISE INLINE pragma")])+tDecl _ _ _ (InstSig l _ _) =+ onlyDecl (WarnPragmaDecl l [([], "ignore SPECIALISE instance pragma")])+tDecl _ _ _ (AnnPragma l _) =+ onlyDecl (WarnPragmaDecl l [([], "ignore ANN pragma")])++onlyDecl :: Decl l -> ([Decl l], ModuleConsts)+onlyDecl d = ([d], moduleConstsEmpty)+++-- Process pattern binding:++tPatBind :: Environment -> Scope -> Tracing -> SrcSpanInfo ->+ Pat SrcSpanInfo -> Maybe (Type SrcSpanInfo) -> Rhs SrcSpanInfo ->+ Maybe (Binds SrcSpanInfo) ->+ ([Decl SrcSpanInfo], ModuleConsts)+tPatBind env scope tracing l (PVar _ name) maybeType rhs maybeBinds =+ -- simple case+ tCaf env scope tracing l name maybeType rhs maybeBinds+tPatBind env scope tracing l (PAsPat _ name pat) maybeType rhs maybeBinds =+ -- can break off simple case+ (cafDecls ++ patDecls, cafConsts `moduleConstsUnion` patConsts)+ where+ (cafDecls, cafConsts) = + tCaf env scope tracing l name maybeType rhs maybeBinds+ (patDecls, patConsts) = tDecl env scope tracing+ (PatBind l pat maybeType (UnGuardedRhs l (Var l (UnQual l name))) Nothing)+tPatBind env scope tracing l pat maybeType rhs maybeBinds =+ -- unfortunately we cannot transform a pattern binding into another pattern+ -- binding; we have to introduce an explicit `case' to be able to terminate + -- with an appropriate error message when the pattern does not match.+ -- first rewrite as p = e, then+ -- xi sr p = constUse sr p zi+ -- zi = constDef parent + -- (\_ -> (case patId of (t,y1,..,yn) -> projection sr t yi))+ -- patId = case e' of + -- p' -> (t,y1,..,yn)+ -- _ -> fail noPos parent+ (map (useDef tracing) patNames +++ map (projDef scope tracing l patTuple + (Var l (UnQual l resultTraceName)) patName resultTraceName) patNames +++ [PatBind l (PVar l patName) Nothing (UnGuardedRhs l (+ (Case l exp'+ [Alt l pat'' (UnGuardedAlt l expTuple) Nothing+ ,Alt l (PWildCard l) (UnGuardedAlt l (mkFailExp expParent)) Nothing])))+ Nothing]+ ,foldr moduleConstsUnion altConsts (map (moduleConstsSpan . ann) patNames))+ where+ firstName = head patNames+ patNames = map (\(PVar _ name) -> name) patVars+ patName = nameTraceShared l firstName+ resultTraceName = nameTrace2 firstName+ expTuple = Tuple l (map (Var l . UnQual l) (resultTraceName : patNames'))+ patTuple = PTuple l (map (PVar l) (resultTraceName : patNames'))+ patNames' = map (\(PVar _ name) -> name) patVars'+ (patVars', Nothing) = tPats patVars+ -- Nothing means that we do not support numeric patterns (k and n+k)+ patVars = getPatVars pat+ pat'' = patAddReference resultTraceName pat'+ (Match _ _ [pat'] (UnGuardedRhs _ exp') maybeBinds', altConsts) =+ tMatch env tracing False undefined failContinuation + (Match l firstName [pat] rhs maybeBinds)++patAddReference :: Name l -> Pat l -> Pat l+patAddReference n (PParen l pat) = PParen l (patAddReference n pat)+patAddReference n (PApp l r [v,_]) = PApp l r [v,PVar l n]+ +-- Build the first set of definitions for pattern bindings.+useDef :: Tracing -> Name SrcSpanInfo -> Decl SrcSpanInfo+useDef tracing name =+ FunBind l [Match l (nameTransLetVar name) [PVar l sr, patParent]+ (UnGuardedRhs l (appN+ [mkExpConstUse tracing + ,Var l (UnQual l sr)+ ,expParent+ ,Var l (UnQual l (nameShare name))]))+ Nothing]+ where+ l = ann name+ sr = nameSR name ++-- Caf for one variable in a pattern binding+projDef :: Scope -> Tracing -> SrcSpanInfo -> Pat SrcSpanInfo -> Exp SrcSpanInfo -> + Name SrcSpanInfo -> Name SrcSpanInfo -> Name SrcSpanInfo -> Decl SrcSpanInfo+projDef scope tracing l patTuple expVarResultTrace patName resultTraceName name =+ PatBind l (PVar l (nameShare name)) Nothing + (UnGuardedRhs l (appN + [mkExpConstDef tracing+ ,expParent+ ,Var l (UnQual l (nameTraceInfoVar l scope name))+ ,Lambda l [PWildCard l]+ (Case l (Var l (UnQual l patName))+ [Alt l patTuple (UnGuardedAlt l + (if isLocal scope && tracing == Trusted+ then varLambdaName+ else appN+ [Var l (qNameProjection l)+ ,mkExpSR (ann name) tracing+ ,Var l (UnQual l resultTraceName)+ ,varLambdaName]))+ Nothing])]))+ Nothing+ where+ varLambdaName = Var l (UnQual l (nameTransLambdaVar name))++-- Extract all variables from a pattern, left-to-right+getPatVars :: Pat SrcSpanInfo -> [Pat SrcSpanInfo]+getPatVars p@(PVar _ _) = [p]+getPatVars (PLit _ _) = []+getPatVars (PNeg _ p) = getPatVars p+getPatVars (PNPlusK l _ _) = notSupported l "n+k pattern in pattern binding"+getPatVars (PInfixApp _ pl _ pr) = getPatVars pl ++ getPatVars pr+getPatVars (PApp _ _ ps) = concatMap getPatVars ps+getPatVars (PTuple _ ps) = concatMap getPatVars ps+getPatVars (PList _ ps) = concatMap getPatVars ps+getPatVars (PParen _ p) = getPatVars p+getPatVars (PRec _ _ patFields) = concatMap getPatFieldVars patFields+ where+ getPatFieldVars :: PatField SrcSpanInfo -> [Pat SrcSpanInfo]+ getPatFieldVars (PFieldPat _ _ p) = getPatVars p+ getPatFieldVars (PFieldPun _ _) = []+ getPatFieldVars (PFieldWildcard _) = []+getPatVars (PAsPat _ n p) = PVar (ann n) n : getPatVars p+getPatVars (PWildCard _) = []+getPatVars (PIrrPat _ p) = getPatVars p+getPatVars (PatTypeSig _ p _) = getPatVars p+getPatVars (PViewPat _ _ p) = getPatVars p+getPatVars (PBangPat _ p) = getPatVars p+getPatVars p = notSupported (ann p) "in pattern binding"+++-- Binding of a single variable+-- The second binding is similar to what projDef produces+tCaf :: Environment -> Scope -> Tracing -> SrcSpanInfo -> + Name SrcSpanInfo -> -- name of original caf+ Maybe (Type SrcSpanInfo) -> + Rhs SrcSpanInfo -> Maybe (Binds SrcSpanInfo) -> + ([Decl SrcSpanInfo], ModuleConsts)+tCaf env scope tracing l name maybeType rhs maybeBinds =+ -- Produce a wrapper and a worker, the latter must be a caf+ -- to avoid reevaluation.+ -- name sr p = constUse sr p name'+ -- name' = constDef parent "name" (\p -> [[rhs]]_p)+ ([useDef tracing name+ ,PatBind l (PVar l (nameShare name)) (fmap tType maybeType)+ (UnGuardedRhs l (appN+ [mkExpConstDef tracing+ ,expParent+ ,Var l (UnQual l (nameTraceInfoVar l scope name))+ ,Lambda l [patParent] (smartExpLet maybeBinds' rhs')]))+ Nothing]+ ,moduleConstsEnv Local envLocal `moduleConstsUnion` rhsConsts `moduleConstsUnion` bindsConsts)+ --,addVar l name moduleConstsEmpty `withLocal` + -- (rhsConsts `moduleConstsUnion` bindsConsts))+ where+ envLocal = maybeBindsEnv (isTraced tracing) maybeBinds+ env2 = env `unionLocalRelation` envLocal+ (rhs', rhsConsts) = tRhs env2 tracing True failContinuation rhs+ (maybeBinds', bindsConsts) = tMaybeBinds env2 tracing maybeBinds+ smartExpLet :: Maybe (Binds SrcSpanInfo) -> Exp SrcSpanInfo -> Exp SrcSpanInfo+ smartExpLet Nothing exp = exp+ smartExpLet (Just binds) exp = Let noSpan binds exp++tMaybeBinds :: Environment -> Tracing -> Maybe (Binds SrcSpanInfo) ->+ (Maybe (Binds SrcSpanInfo), ModuleConsts)+tMaybeBinds env tracing Nothing =+ (Nothing, moduleConstsEmpty)+tMaybeBinds env tracing (Just binds) =+ (Just binds', bindsConsts)+ where+ (binds', bindsConsts) = tBinds env tracing binds++tBinds :: Environment -> Tracing -> Binds SrcSpanInfo ->+ (Binds SrcSpanInfo, ModuleConsts)+tBinds env tracing (BDecls l decls) =+ (BDecls l decls', declsConsts)+ where+ (decls', declsConsts) = tDecls env Local tracing decls+tBinds env tracing (IPBinds l _) =+ notSupported l "binding group for implicit parameters"+++-- Process function binding:++tFunBind :: Environment -> Scope -> Tracing -> SrcSpanInfo -> + [Match SrcSpanInfo] ->+ ([Decl SrcSpanInfo], ModuleConsts)+tFunBind env scope tracing l matches =+ -- Define the wrapper and the worker.+ (FunBind l [Match l (nameTransLetVar orgName) + [PVar l sr, patParent]+ (UnGuardedRhs l + (mkExpFun tracing (Var l (UnQual l sr)) + (Var l (UnQual l (nameTraceInfoVar l scope orgName)))+ (Var l (UnQual l wrappedId')) funArity))+ Nothing]+ :(if isLocal scope + then (PatBind l (PVar l (nameTraceInfoVar l Global orgName)) Nothing + (UnGuardedRhs l+ (Var l (UnQual l (nameTraceInfoVar l Local orgName)))) + Nothing :)+ else \x->x)+ (FunBind l matches' : newDecls')+ -- The known-arity application optimisation needs a nameTraceInfoVar of+ -- the global kind (the name does not include the definition position)+ -- Hence for local definitions we need to define the nameTraceInfoVar+ -- in terms of the "local" nameTraceInfoVar that is defined globally.+ -- In same scope as type decl+ ,funConsts)+ -- ,addVar l orgName (moduleConstsEmpty `withLocal` funConsts))+ where+ funArity = getMatchArity (head matches)+ orgName = getMatchName (head matches)+ sr = nameSR orgName+ wrappedId' = nameWorker orgName+ (matches', newDecls', funConsts) =+ tMatches env tracing l (nameFuns orgName)+ (map (PVar l) (nameArgs orgName)) wrappedId'+ (matchArity (head matches)) False + (map changeInfixMatch matches)+++-- Transformation of matches is complex because guarded equations may fail+-- and thus 'fall' to next equation.+-- This is simulated here by a sequence of functions, each possibly calling+-- the next, i.e., we use continuation passing style.+tMatches :: Environment -> Tracing -> SrcSpanInfo -> + [Name SrcSpanInfo] -> -- names for definitions that clauses become+ [Pat SrcSpanInfo] -> -- vars for naming arguments that are not vars+ Name SrcSpanInfo -> -- name of this definition+ Arity -> + Bool -> -- preceeding match will never fail+ [Match SrcSpanInfo] ->+ ([Match SrcSpanInfo], [Decl SrcSpanInfo], ModuleConsts)+tMatches _ _ _ _ _ _ _ True [] = + -- Preceeding match never fails, so no further match required.+ ([], [], moduleConstsEmpty)+tMatches env tracing l ids pVars funName funArity False [] =+ -- End of matches, but add catch-all match to explicitly raise an error.+ ([Match l funName (replicate funArity (PWildCard l) ++ [patParent])+ (UnGuardedRhs l (continuationToExp failContinuation))+ Nothing]+ ,[]+ ,moduleConstsEmpty)+tMatches env tracing l ids pVars funName funArity _+ (m@(Match _ _ pats _ _) : matches) | not (null matches) && matchCanFail m =+ -- Normal sort of match: further matches afterwards and guard or numeric literals may fail.+ ([Match l funName (pats'' ++ [patParent]) rhs' decls'+ ,Match l funName (vars ++ [patParent]) + (UnGuardedRhs l (continuationToExp failCont)) Nothing]+ ,FunBind l matches' : matchesDecls+ ,matchConsts `moduleConstsUnion` matchesConsts)+ where+ contId = head ids+ failCont = functionContinuation (UnQual l contId) (map pVarToVar vars)+ (pats'', vars) = namePats pats' pVars+ (Match _ _ pats' rhs' decls', matchConsts) =+ tMatch env tracing True funName failCont m+ (matches', matchesDecls, matchesConsts) =+ tMatches env tracing l (tail ids) pVars contId funArity + (neverFailingPats pats) matches+tMatches env tracing l ids pVars funName funArity _ + (m@(Match _ _ pats _ _) : matches) =+ -- Last match or guards and numeric literals cannot fail.+ (Match l funName (pats' ++ [patParent]) rhs' decls' : matches'+ ,matchesDecls+ ,matchConsts `moduleConstsUnion` matchesConsts)+ where+ (Match _ _ pats' rhs' decls', matchConsts) =+ tMatch env tracing True funName failContinuation m+ (matches', matchesDecls, matchesConsts) =+ tMatches env tracing l ids pVars funName funArity + (neverFailingPats pats) matches++namePats :: [Pat SrcSpanInfo] -> [Pat SrcSpanInfo] -> + ([Pat SrcSpanInfo], [Pat SrcSpanInfo])+namePats pats vars = unzip (zipWith namePat pats vars)++-- Obtain a variable that names the given pattern;+-- straightforward if pattern has variable at top-level;+-- otherwise use provided variable+namePat :: Pat SrcSpanInfo -- pattern to name+ -> Pat SrcSpanInfo -- default variable+ -> (Pat SrcSpanInfo,Pat SrcSpanInfo) -- named pattern, name variable+namePat pat@(PVar _ _) _ = (pat,pat)+namePat pat@(PAsPat l name pat') _ = (pat,PVar l name)+namePat pat var@(PVar l name) = (PAsPat l name pat,var)+++-- Numeric literals need to be overloaded with respect to the new+-- transformed numeric classes; hence they cannot just be left wrapped+-- in patterns+-- Transform such literals and n+k patterns into conditions in guards.+-- Have to be careful to preserve left-to-right pattern matching,+-- e.g. f 1 True = ... -> f x True | x == 1 = ... is wrong.+-- Correct: f 1 True = M -> f v1 v2 | v1 == 1 = h v2 where h True = M+-- Assume that ~ has been removed before.+-- Cannot remove numeric patterns in a separate, earlier phase, because+-- need to handle continuation correctly when already a guard exists.+-- Definition similar to tGuardedExps+tMatch :: Environment ->+ Tracing ->+ Bool -> -- whether this is reduct of the parent+ Name SrcSpanInfo -> -- name for function this match partially defines+ ContExp SrcSpanInfo -> -- continuation in case of match failure+ Match SrcSpanInfo ->+ (Match SrcSpanInfo, ModuleConsts)+tMatch env tracing cr funName contExp m@(Match l _ pats rhs maybeBinds) =+ if isNothing numericLitInfos+ then (Match l funName pats' (UnGuardedRhs l rhs') maybeBinds'+ ,moduleConstsEnv Local envLocal `moduleConstsUnion` bindsConsts `moduleConstsUnion` rhsConsts)+ else (Match l funName pats' (UnGuardedRhs l (appN (case tracing of+ Traced -> [mkExpGuard Traced+ ,mkExpSR l tracing+ ,expParent+ ,cond'+ ,Lambda l [patParent]+ (appN (varFun : argvars ++ [expParent]))+ ,Lambda l [patParent]+ (continuationToExp contExp)]+ Trusted -> [mkExpGuard Trusted+ ,cond'+ ,appN (varFun : argvars ++ [expParent])+ ,continuationToExp contExp])))+ (Just (BDecls l (def:decl')))+ ,moduleConstsSpan l `moduleConstsUnion` condConsts `moduleConstsUnion` + declConsts `moduleConstsUnion` matchConsts `moduleConstsUnion` rhsConsts)+ -- condConsts contains locations of the Boolean guards+ -- declsConsts contains locations of the bound variables+ where+ envLocal = maybeBindsEnv (isTraced tracing) maybeBinds+ envLambdas = makeAllLambdaBound (patsEnv l (isTraced tracing) pats)+ env2 = (env `unionLocalRelation` envLambdas) `unionLocalRelation` envLocal + (pats', numericLitInfos) = tPats pats+ (rhs', rhsConsts) = tRhs env2 tracing cr contExp rhs+ (maybeBinds', bindsConsts) = tMaybeBinds env2 tracing maybeBinds+ -- from here for else branch above:+ nameFun = nameFunFromSpan l+ varFun = Var l (UnQual l nameFun)+ Just (qName, cond, bindings, argvars, argpats) = numericLitInfos+ envLocalExtra = declsEnv (isTraced tracing) env2 bindings+ env3 = (env2 `unionLocalRelation` envLocalExtra) `unionLocalRelation` lambdaVarEnv (isTraced tracing) qName+ (cond', condConsts) = tExp env3 tracing False cond+ (decl', declConsts) = tDecls env3 Local tracing bindings+ def = FunBind l [Match l nameFun (mpats'++[patParent]) mrhs' mmdecls'+ ,Match l nameFun + (replicate funArity (PWildCard l) ++ [patParent])+ (UnGuardedRhs l (continuationToExp contExp))+ Nothing]+ funArity = length argpats+ (Match _ _ mpats' mrhs' mmdecls', matchConsts) =+ tMatch env3 tracing cr funName contExp + (Match l nameFun argpats rhs maybeBinds)++-- Here failure means a failed test that can be observed in the trace,+-- not simply non-matching of data constructors.+matchCanFail :: Match l -> Bool+matchCanFail (Match _ _ pats rhs _) =+ any numericLitIn pats || case rhs of+ UnGuardedRhs _ _ -> False+ GuardedRhss _ gdRhss -> gdRhssCanFail gdRhss++numericLitIn :: Pat l -> Bool+numericLitIn (PLit _ (Int _ _ _)) = True+numericLitIn (PLit _ (Frac _ _ _)) = True+numericLitIn (PNeg _ pat) = numericLitIn pat+numericLitIn (PInfixApp _ pL _ pR) = numericLitIn pL || numericLitIn pR+numericLitIn (PApp _ _ pats) = any numericLitIn pats+numericLitIn (PTuple _ pats) = any numericLitIn pats+numericLitIn (PList _ pats) = any numericLitIn pats+numericLitIn (PParen _ p) = numericLitIn p+numericLitIn (PRec _ _ patFields) = any numericLitInField patFields+ where+ numericLitInField (PFieldPat _ _ pat) = numericLitIn pat+ numericLitInField _ = False+numericLitIn (PAsPat _ _ p) = numericLitIn p+numericLitIn (PIrrPat _ p) = numericLitIn p+numericLitIn (PatTypeSig _ p _) = numericLitIn p+numericLitIn (PViewPat _ _ p) = numericLitIn p+numericLitIn (PBangPat _ p) = numericLitIn p +numericLitIn _ = False++-- Returns False only if one of the guards definitely evaluates to True+-- Note this is an approximation, no guarantee that failure is possible.+gdRhssCanFail :: [GuardedRhs l] -> Bool+gdRhssCanFail = all gdRhsCanFail++gdRhsCanFail :: GuardedRhs l -> Bool+gdRhsCanFail (GuardedRhs _ [Qualifier _ (Var _ name)] _) =+ not (isTrue name || isOtherwise name)+gdRhsCanFail _ = True+++tRhs :: Environment ->+ Tracing ->+ Bool -> -- equal to parent?+ ContExp SrcSpanInfo -> -- continuation in case of match failure+ Rhs SrcSpanInfo ->+ (Exp SrcSpanInfo, ModuleConsts)+tRhs env tracing cr failCont (UnGuardedRhs _ exp) = + tExp env tracing cr exp+tRhs env tracing cr failCont (GuardedRhss _ gdRhss) =+ tGuardedRhss env tracing cr failCont gdRhss++tGuardedRhss :: Environment ->+ Tracing ->+ Bool -> -- equal to parent?+ ContExp SrcSpanInfo -> -- continuation in case of match failure+ [GuardedRhs SrcSpanInfo] ->+ (Exp SrcSpanInfo, ModuleConsts)+tGuardedRhss _ _ _ failCont [] =+ (continuationToExp failCont, moduleConstsEmpty)+tGuardedRhss env Traced cr failCont + (GuardedRhs _ [Qualifier l guard] exp : gdRhss) =+ (appN+ [mkExpGuard Traced+ ,mkExpSR l Traced+ ,expParent+ ,guard'+ ,Lambda l [patParent] exp'+ ,Lambda l [patParent] gdRhss']+ ,moduleConstsSpan l `moduleConstsUnion` guardConsts `moduleConstsUnion` + expConsts `moduleConstsUnion` gdRhssConsts)+ where+ (guard', guardConsts) = tExp env Traced False guard+ (exp', expConsts) = tExp env Traced cr exp+ (gdRhss', gdRhssConsts) = + tGuardedRhss env Traced cr failCont gdRhss+tGuardedRhss env Trusted cr failCont + (GuardedRhs _ [Qualifier l guard] exp : gdRhss) =+ (appN+ [mkExpGuard Trusted+ ,guard'+ ,exp'+ ,gdRhss']+ ,guardConsts `moduleConstsUnion` expConsts `moduleConstsUnion` gdRhssConsts)+ where+ (guard', guardConsts) = tExp env Trusted False guard+ (exp', expConsts) = tExp env Trusted cr exp+ (gdRhss', gdRhssConsts) = tGuardedRhss env Trusted cr failCont gdRhss+tGuardedRhss _ _ _ _ (GuardedRhs l _ _ : _) =+ notSupported l "statements in pattern guards"+ ++-- Process foreign import:++tForeignImp :: SrcSpanInfo -> QName SrcSpanInfo -> Name SrcSpanInfo -> + Type SrcSpanInfo -> + ([Decl SrcSpanInfo], ModuleConsts)+tForeignImp l foreignName name ty =+ if arity == 0 + then ([TypeSig l [letVarName] (tFunType ty)+ ,FunBind l [Match l letVarName [PVar l sr, patParent]+ (UnGuardedRhs l (appN + [mkExpConstUse Trusted+ ,Var l (UnQual l sr)+ ,expParent+ ,Var l (UnQual l shareName)]))+ Nothing]+ ,PatBind l (PVar l shareName) Nothing + (UnGuardedRhs l (appN + [mkExpConstDef Trusted+ ,expParent+ ,Var l (UnQual l (nameTraceInfoVar l Global name))+ ,Lambda l [patParent]+ (appN+ [expFrom ty, expParent, Var l foreignName])]))+ Nothing]+ ,moduleConstsEmpty)+ else ([TypeSig l [letVarName] (tFunType ty)+ ,FunBind l [Match l letVarName [PVar l sr, patParent]+ (UnGuardedRhs l + (mkExpFun Trusted (Var l (UnQual l sr))+ (Var l (UnQual l (nameTraceInfoVar l Global name)))+ (Var l (UnQual l workerName)) arity))+ Nothing]+ ,FunBind l [Match l workerName (map (PVar l) (args++[hidden]))+ (UnGuardedRhs l (appN+ [expFrom tyRes+ ,Var l (UnQual l hidden)+ ,appN (Var l foreignName : zipWith to tyArgs args)]))+ Nothing]]+ ,moduleConstsEmpty)+ where+ sr = nameSR name+ workerName = nameWorker name+ letVarName = nameTransLetVar name+ shareName = nameShare name+ args = take arity (nameArgs name)+ hidden = nameTrace2 name+ to :: Type SrcSpanInfo -> Name SrcSpanInfo -> Exp SrcSpanInfo+ to ty arg = appN [expTo ty, Var l (UnQual l hidden), Var l (UnQual l arg)]+ where+ l = ann ty+ arity = length tyArgs+ (tyArgs, tyRes) = decomposeFunType ty+++-- Process class instances:++tInstHead :: InstHead SrcSpanInfo -> InstHead SrcSpanInfo+tInstHead (IHead l qname tys) = IHead l (nameTransCls qname) (map tType tys)+tInstHead (IHInfix l tyL qname tyR) = + IHInfix l (tType tyL) (nameTransCls qname) (tType tyR)+tInstHead (IHParen l instHead) = IHParen l (tInstHead instHead)++tInstDecls :: Environment -> Tracing ->+ [InstDecl SrcSpanInfo] ->+ ([InstDecl SrcSpanInfo], ModuleConsts)+tInstDecls env tracing instDecls =+ (concat instDeclss', foldr moduleConstsUnion moduleConstsEmpty declsConsts)+ where+ (instDeclss', declsConsts) = + unzip (map (tInstDecl env tracing) instDecls)++tInstDecl :: Environment -> Tracing ->+ InstDecl SrcSpanInfo -> + ([InstDecl SrcSpanInfo], ModuleConsts)+tInstDecl env tracing (InsDecl l decl) =+ (map (InsDecl l) decls', moduleConsts) + where+ (decls', moduleConsts) = tClassInstDecl env tracing decl+tInstDecl env tracing (InsType l _ _) =+ notSupported l "associated type definition"+tInstDecl env tracing (InsData l _ _ _ _) = + notSupported l "associated data type implementation"+tInstDecl env tracing (InsGData l _ _ _ _ _) =+ notSupported l "associated data type implementation using a GADT"+ ++-- Process class declarations:++-- Transform any declarations in a class declaration.+tClassDecls :: Environment -> Tracing -> + [ClassDecl SrcSpanInfo] ->+ ([ClassDecl SrcSpanInfo], ModuleConsts)+tClassDecls env tracing classDecls =+ (concat classDeclss', foldr moduleConstsUnion moduleConstsEmpty declsConsts)+ where+ (classDeclss', declsConsts) = + unzip (map (tClassDecl env tracing) classDecls)++tClassDecl :: Environment -> Tracing -> + ClassDecl SrcSpanInfo -> + ([ClassDecl SrcSpanInfo], ModuleConsts)+tClassDecl env tracing (ClsDecl l decl) =+ (map (ClsDecl l) decls', moduleConsts) + where+ (decls', moduleConsts) = tClassInstDecl env tracing decl+tClassDecl env tracing (ClsDataFam l _ _ _) = + notSupported l "declaration of an associated data type"+tClassDecl env tracing (ClsTyFam l _ _) =+ notSupported l "declaration of an associated type synonym"+tClassDecl env tracing (ClsTyDef l _ _) =+ notSupported l "default choice for an associated type synonym"++-- Transform a standard declaration inside a class or instance declaration.+-- Basically patch the result of the standard transformation of such a +-- declaration.+tClassInstDecl :: Environment -> Tracing ->+ Decl SrcSpanInfo ->+ ([Decl SrcSpanInfo], ModuleConsts)+tClassInstDecl env tracing decl@(FunBind _ _) =+ -- Worker needs to be local, because it does not belong to the + -- class / instance, nor can it be outside of it.+ -- (Cannot use arity optimisation for a method anyway.)+ ([FunBind l [addToWhere match workerDecls]], moduleConsts)+ where+ (FunBind l [match] : _ : workerDecls, moduleConsts) =+ tDecl env Local tracing decl+tClassInstDecl env tracing decl@(PatBind _ _ _ _ _) =+ -- Currently don't do any patching!+ -- Use of sharing variable needs to be qualified if class name needs to be+ -- qualified (still covers not all necessary cases)+ -- note when declaring instance the class may only be imported qualified+ -- What does the above mean??+ tDecl env Local tracing decl+tClassInstDecl env tracing decl@(TypeSig l names ty) =+ -- For every method type declaration produce an additional type declaration+ -- of the sharing variable.+ (tySig' :+ TypeSig l (map nameShare names) (tMapType tConstType ty) :+ map (\name -> PatBind l (PVar l (nameShare name)) Nothing + (UnGuardedRhs l (appN [expUndefined,expSR,expParent])) Nothing)+ (filter (isUndefinedMethod env) names)+ ,moduleConsts)+ where+ expSR = mkExpSR l Trusted+ ([tySig'], moduleConsts) = tDecl env Local tracing decl+ -- This should cover all declarations that can occur.++-- No changes in functional dependencies; all names are type variables.+tFunDep :: FunDep l -> FunDep l+tFunDep (FunDep l names1 names2) = FunDep l names1 names2++addToWhere :: Match l -> [Decl l] -> Match l+addToWhere (Match l name pats rhs Nothing) decls =+ Match l name pats rhs (Just (BDecls l decls))+addToWhere (Match l name pats rhs (Just (BDecls l' ds))) decls =+ Match l name pats rhs (Just (BDecls l' (ds ++ decls)))+addToWhere (InfixMatch l pl name pr rhs Nothing) decls =+ InfixMatch l pl name pr rhs (Just (BDecls l decls))+addToWhere (InfixMatch l pl name pr rhs (Just (BDecls l' ds))) decls =+ InfixMatch l pl name pr rhs (Just (BDecls l' (ds ++ decls)))++ -- Split a synonym into a core synonym plus several helpers.+ -- pre-condition: the declaration is a type synonym declaration.+ -- post-condition: all resulting declarations are type synonym declarations.+ -- The helper synonyms are necessary for the following reason:+ -- The known-arity optimisation requires that workers of functions with+ -- known arity are defined on the same level as their wrapper, not local+ -- to them. If the original function was recursive, the worker will be+ -- recursive instead of calling the wrapper (as without known-arity opt.).+ -- Hence if the original definition had a type signature, then the worker+ -- needs a type signature as well (the wrapper gets one anyway),+ -- because otherwise its inferred type might not be general enough + -- (polymorphic recursion) or too general (type class ambiguities,+ -- problems with existential types).+ -- Transformation of the original type signature into the worker type+ -- signature is not uniform: function types are handled specially.+ -- So if the type includes a type synonym it may not be possible to use+ -- the transformed type synonym, but the original one has to be expanded+ -- and transformed in this non-uniform way. However, in general a type+ -- synonym cannot be expanded, because the rhs might not be in scope at+ -- the synonym use site. Hence a type synonym is split into an outer part+ -- consisting of function types, type applications and type variables, + -- which can and may need to be expanded, and several inner type parts,+ -- for which new helper type synonyms are defined. These are always+ -- ex- and imported with the type synonym itself.+ -- A lot of effort, but it does work in the end.+splitSynonym :: Environment -> Decl SrcSpanInfo -> [Decl SrcSpanInfo]+splitSynonym env typeDecl@(TypeDecl span declHead ty) =+ typeDecl : zipWith mkTypeDecl (hrhss ty) [1..]+ where+ mkTypeDecl :: Type SrcSpanInfo -> Int -> Decl SrcSpanInfo+ mkTypeDecl hrhs no =+ TypeDecl span (mapDeclHead (flip nameTransTySynHelper no) declHead) hrhs+ hrhss ty = if tys == [ty] then [] else tys+ where+ tys = go ty []++ -- It is vital that this `go' agrees with the `go' in `splitSynonym' in+ -- AuxFile. Sadly the module structure of Hat is such that the two+ -- functions cannot sit next to each other (or be combined) without+ -- introducing a separate module for them.+ go :: Type SrcSpanInfo -> [Type SrcSpanInfo] -> [Type SrcSpanInfo]+ go ty@(TyForall l _ _ _) [] = [ty]+ go (TyFun l tyL tyR) [] = tyL : go tyR []+ go ty@(TyTuple _ _ _) [] = [ty]+ go ty@(TyList _ _) [] = [ty]+ go (TyApp l tyL tyR) tys = go tyL (tyR:tys)+ go (TyVar _ _) tys = []+ go ty@(TyCon l tyCon) tys + | isFunTyCon tyCon = case tys of+ [] -> []+ [ty] -> [ty]+ [ty1,ty2] -> ty1 : (go ty2 [])+ | isExpandableTypeSynonym env tyCon + = go (expandTypeSynonym env tyCon tys) [] + | otherwise = [tyAppN (ty:tys)]+ go (TyParen l ty) tys = map (TyParen l) (go ty tys) -- a bit dubious+ go (TyInfix l tyL tyCon tyR) tys =+ if isExpandableTypeSynonym env tyCon+ then go (expandTypeSynonym env tyCon (tyL:tyR:tys)) []+ else []+ go (TyKind l ty kind) tys = notSupported l "kind annotation in type synonym"++mapDeclHead :: (Name l -> Name l) -> DeclHead l -> DeclHead l+mapDeclHead f (DHead l name tyVarBinds) = DHead l (f name) tyVarBinds+mapDeclHead f (DHInfix l tyVarBindL name tyVarBindR) = + DHInfix l tyVarBindL (f name) tyVarBindR+mapDeclHead f (DHParen l declHead) = DHParen l (mapDeclHead f declHead)++-- Process data type declarations:++{-+addConInfo :: QualConDecl SrcSpanInfo -> ModuleConsts -> ModuleConsts+addConInfo (QualConDecl _ _ _ condecl) =+ addConDeclModuleConsts condecl++addConDeclModuleConsts :: ConDecl SrcSpanInfo -> ModuleConsts -> ModuleConsts+addConDeclModuleConsts (ConDecl l name bangtypes) =+ addCon name [] +addConDeclModuleConsts (InfixConDecl l btL name btR) =+ addCon name []+addConDeclModuleConsts (RecDecl l name fieldDecls) =+ addCon name (concatMap (\(FieldDecl _ names _) -> names) fieldDecls)+-}++tQualConDecl :: QualConDecl SrcSpanInfo -> QualConDecl SrcSpanInfo+tQualConDecl (QualConDecl l maybeTyVarBinds maybeContext condecl) =+ QualConDecl l (fmap (map tTyVarBind) maybeTyVarBinds)+ (fmap tContext maybeContext) (tConDecl condecl)++-- Just identity, no change.+tTyVarBind :: TyVarBind SrcSpanInfo -> TyVarBind SrcSpanInfo+tTyVarBind (KindedVar l name kind) = KindedVar l name kind+tTyVarBind (UnkindedVar l name) = UnkindedVar l name++tConDecl :: ConDecl SrcSpanInfo -> ConDecl SrcSpanInfo+tConDecl (ConDecl l name bangTys) = + ConDecl l (nameTransCon name) (map tBangType bangTys)+tConDecl (InfixConDecl l btL name btR) =+ InfixConDecl l (tBangType btL) (nameTransCon name) (tBangType btR)+tConDecl (RecDecl l name fieldDecls) =+ RecDecl l (nameTransCon name) (map tFieldDecl fieldDecls)++tFieldDecl :: FieldDecl SrcSpanInfo -> FieldDecl SrcSpanInfo+tFieldDecl (FieldDecl l fieldNames bangTy) =+ FieldDecl l (map nameTransField fieldNames) (tBangType bangTy)++tBangType :: BangType SrcSpanInfo -> BangType SrcSpanInfo+tBangType (BangedTy l ty) = BangedTy l (wrapType (tType ty))+tBangType (UnBangedTy l ty) = UnBangedTy l (wrapType (tType ty))+tBangType (UnpackedTy l ty) = UnpackedTy l (wrapType (tType ty))+++++-- Build field selectors:++mkFieldSelectors :: [QualConDecl SrcSpanInfo] -> + ([Decl SrcSpanInfo], ModuleConsts)+mkFieldSelectors qualConDecls =+ foldr combine ([], moduleConstsEmpty) . map mkFieldSelector . nubBy eqName . + concatMap getFieldNamesFromQualConDecl $ qualConDecls+ where+ combine :: ([Decl SrcSpanInfo], ModuleConsts) -> + ([Decl SrcSpanInfo], ModuleConsts) -> + ([Decl SrcSpanInfo], ModuleConsts)+ combine (decls1, modConsts1) (decls2, modConsts2) = + (decls1++decls2, modConsts1 `moduleConstsUnion` modConsts2)++-- construct the traced version of a field selector, using the +-- normal field selector, i.e. from zname :: T -> R Int construct+-- gname :: SR -> Trace -> R (Fun T Int)+-- gname sr p = fun1 "name" hname sr p+-- hname :: Trace -> R T -> R Int+-- hname p (R v _) = projection mkNoSrcPos p (zname v)+mkFieldSelector :: Name SrcSpanInfo -> ([Decl SrcSpanInfo], ModuleConsts)+mkFieldSelector fieldName =+ ([FunBind l [Match l (nameTransLetVar fieldName) + [PVar l (nameSR fieldName), patParent]+ (UnGuardedRhs l + (mkExpFun Trusted (Var l (UnQual l (nameSR fieldName)))+ (Var l (UnQual l (nameTraceInfoVar l Global fieldName)))+ (Var l (UnQual l wrappedName)) 1))+ Nothing]+ ,FunBind l [Match l wrappedName+ [wrapPat (PVar l varName) (PWildCard l), patParent]+ (UnGuardedRhs l (appN+ [Var l (qNameProjection l)+ ,mkExpSR l Trusted+ ,expParent+ ,App l (Var l (UnQual l (nameTransField fieldName))) + (Var l (UnQual l varName))]))+ Nothing]]+ ,moduleConstsEmpty)+ where+ l = ann fieldName+ wrappedName = nameWorker fieldName+ varName:_ = nameArgs fieldName++-- Build the instance of class WrapVal for type with given data constructors.+-- This instance is needed for constructing and updating with labelled fields.+wrapValInstDecl :: Environment -> Tracing ->+ Maybe (Context SrcSpanInfo) -> + DeclHead SrcSpanInfo ->+ [QualConDecl SrcSpanInfo] -> + Decl SrcSpanInfo+wrapValInstDecl env tracing maybeContext declHead qualConDecls =+ InstDecl l maybeContext + (IHead l (qNameWrapValClass l) [dataDeclHeadToType declHead])+ (Just [InsDecl l (FunBind l (map wrapValMatch conDecls))])+ where+ l = ann declHead+ conDecls = map (\(QualConDecl _ _ _ conDecl) -> conDecl) qualConDecls+ +dataDeclHeadToType :: DeclHead l -> Type l+dataDeclHeadToType (DHead l name tyVarBinds) =+ tyAppN (TyCon l (UnQual l name) : map tyVarBindToType tyVarBinds)+++tyVarBindToType :: TyVarBind l -> Type l+tyVarBindToType (KindedVar l name kind) = + TyParen l (TyKind l (TyVar l name) kind)+tyVarBindToType (UnkindedVar l name) = TyVar l name++wrapValMatch :: ConDecl SrcSpanInfo -> Match SrcSpanInfo+wrapValMatch conDecl =+ Match l (nameWrapValFun l) + [PVar l (nameSR (nameWrapValFun l))+ ,PAsPat l varName patConsApp+ ,patParent]+ (UnGuardedRhs l (wrapExp (Var l (UnQual l varName)) consAppTrace))+ Nothing+ where+ l = ann conDecl+ consAppTrace =+ if numOfArgs == 0+ then appN (Var l (qNameMkExpValueUse l) : expParent :+ map (Var l . UnQual l) [srName, funAtom])+ else appN (Var l (qNameMkExpValueApp l numOfArgs) : expParent :+ map (Var l . UnQual l) (srName : funAtom : traces))+ funAtom = nameTraceInfoCon consName+ patConsApp =+ PApp l (UnQual l consName) (map (wrapPat (PWildCard l) . PVar l) traces)+ consName = getConstructorFromConDecl conDecl+ traces = take numOfArgs (nameArgs (nameWrapValFun l)) :: [Name SrcSpanInfo]+ numOfArgs = getArityFromConDecl conDecl+ varName = nameTrace2 (nameWrapValFun l)+ srName = nameSR (nameWrapValFun l)+ +-- ---------------------------------------------------------------------------- -- Transform expressions+++-- Boolean argument True iff the parent is equal to this expression, i.e.,+-- the result of this expression is the same as the result of the parent.+tExp :: Environment -> Tracing -> Bool -> Exp SrcSpanInfo ->+ (Exp SrcSpanInfo, ModuleConsts)+tExp env tracing cr exp = tExpA env tracing cr exp [] []++-- Order of both lists is innermost first.+-- All input expressions still need to be transformed.+tExpA :: Environment -> Tracing -> Bool -> Exp SrcSpanInfo -> + [SrcSpanInfo] -> -- locations of applications of arguments in list+ [Exp SrcSpanInfo] -> -- arguments from surrounding applications+ (Exp SrcSpanInfo, ModuleConsts)+tExpA env tracing cr (Var l qName) ls es + | Just a <- ari, a > 0, a <= length es, a <= 5, + let lApp = ls!!(a-1) =+ -- Known arity optimisation that calls worker directly+ tExpF env tracing (drop a ls) (drop a es) $+ (if isTraced tracing || isTracedQName env qName+ then mkExpApplyArity (isTracedQName env qName) (mkExpSR lApp tracing) (mkExpSR l tracing)+ a (Var noSpan (nameTraceInfoVar l Global qName)) expWorker es'+ else mkExpUWrapForward (appN (expWorker : es' ++ [expParent]))+ ,moduleConstsSpan l `moduleConstsUnion` moduleConstsSpan lApp `moduleConstsUnion` esConsts)+ where+ ari = arity env qName+ (es', esConsts) = tExps env tracing (take (fromJust ari) es)+ expWorker = Var noSpan (nameWorker qName)+tExpA env tracing cr (Var l qName) ls es =+ -- Unknown arity.+ tExpF env tracing ls es $+ if isLambdaBound env qName+ then + let e' = Var l (nameTransLambdaVar qName)+ in if cr+ then (mkExpProjection sr e', moduleConstsSpan l)+ else (e', moduleConstsEmpty)+ else+ (appN [Var l (nameTransLetVar qName), sr, expParent]+ ,moduleConstsSpan l)+ where+ sr = mkExpSR l tracing+tExpA _ _ _ (IPVar l _) _ _ =+ notSupported l "implicit parameter variable"+tExpA env tracing cr (Con l qName) ls es =+ tConApp env tracing qName ls es+tExpA env tracing cr (Lit l literal) [] [] = -- no arguments possible+ (tLiteral env tracing literal, moduleConstsSpan (ann literal))+tExpA env tracing cr (InfixApp l e1 qop e2) ls es =+ tExpA env tracing cr + (App l (App (ann e1 <++> ann qop) (qOp2Exp qop) e1) e2) ls es+tExpA env tracing cr (App l e1 e2) ls es = + tExpA env tracing cr e1 (l:ls) (e2:es)+tExpA env tracing cr (NegApp l e) ls es =+ tExpA env tracing cr (App l (Var l (qNameDeriveIdent "negate" l)) e) ls es+ -- Use identifier negate, otherwise confusion with binary (-).+tExpA env tracing cr (Lambda l pats body) ls es =+ tExpF env tracing ls es+ (mkExpFun tracing (mkExpSR l tracing) expMkAtomLambda fun funArity+ ,moduleConstsSpan l `moduleConstsUnion` bodyConsts)+ where+ fun = if neverFailingPats pats+ then Lambda l (pats' ++ [patParent]) body'+ else Lambda l (map (PVar l) nameVars ++ [patParent])+ (Case l (mkExpTuple (map (Var l . UnQual l) nameVars))+ [Alt l (mkPatTuple pats') (UnGuardedAlt l body') Nothing+ ,Alt l (PWildCard l) (UnGuardedAlt l expFail) Nothing]+ )+ (Match _ _ pats' (UnGuardedRhs _ body') _, bodyConsts) =+ tMatch env tracing True undefined failContinuation + (Match l undefined pats (UnGuardedRhs l body) Nothing)+ nameVars = take funArity (namesFromSpan l)+ funArity = length pats+tExpA env tracing cr (Let l binds body) ls es =+ tExpF env tracing ls es+ (Let l binds' body'+ ,moduleConstsEnv Local localEnv `moduleConstsUnion` bindsConsts `moduleConstsUnion` bodyConsts)+ where+ localEnv = bindsEnv (isTraced tracing) binds+ env2 = env `unionLocalRelation` localEnv+ (binds', bindsConsts) = tBinds env2 tracing binds+ (body', bodyConsts) = tExp env2 tracing cr body+tExpA env Traced cr (If l cond e1 e2) ls es =+ tExpF env Traced ls es+ (mkExpIf l Traced cond' + (Lambda l [patParent] e1') (Lambda l [patParent] e2')+ ,moduleConstsSpan l `moduleConstsUnion` condConsts `moduleConstsUnion` e1Consts `moduleConstsUnion` e2Consts)+ where+ (cond', condConsts) = tExp env Traced False cond+ (e1', e1Consts) = tExp env Traced True e1+ (e2', e2Consts) = tExp env Traced True e2+tExpA env Trusted cr (If l cond e1 e2) ls es =+ tExpF env Trusted ls es+ (mkExpIf l Trusted cond' e1' e2'+ ,condConsts `moduleConstsUnion` e1Consts `moduleConstsUnion` e2Consts)+ where+ (cond', condConsts) = tExp env Trusted False cond+ (e1', e1Consts) = tExp env Trusted True e1+ (e2', e2Consts) = tExp env Trusted True e2+tExpA env tracing cr (Case l exp alts) ls es =+ -- translate case into function f:+ -- case exp of+ -- pat1 -> exp1+ -- pat2 -> exp2+ -- ...+ -- ==>+ -- (let f pat1 = exp1; f pat2 = exp2;... in f) exp+ -- but not fully, as we don't want to trace function f and the application+ tExpF env tracing ls es+ (mkExpCase l tracing + (Let l (BDecls l (FunBind l matches' : decls'))+ (Var l (UnQual l funName))) exp'+ ,moduleConstsSpan l `moduleConstsUnion` expConsts `moduleConstsUnion` funConsts)+ where+ (funName : argName : funsNames) = namesFromSpan l+ (exp', expConsts) = tExp env tracing False exp+ (matches', decls', funConsts) =+ tMatches env tracing l funsNames [PVar l argName] + funName 1 True (map alt2Match alts)+tExpA env tracing cr (Do l stmts) ls es =+ tExpF env tracing ls es (tExpA env tracing cr (removeDo stmts) [] [])+tExpA env tracing cr (MDo l _) ls es =+ notSupported l "mdo-expression"+tExpA env tracing cr (Tuple l exps) [] [] =+ tConApp env tracing (Special l (TupleCon l Boxed a)) + (replicate a l) exps+ where + a = length exps+tExpA env tracing cr (TupleSection l maybeExps) ls es =+ -- desugar tuple section into lambda+ tExpA env tracing cr (desugarTupleSection l maybeExps) ls es+tExpA env tracing cr (List l []) [] [] = -- just the empty list, transform efficiently+ (appN [Var noSpan (qNameCon noSpan 0),mkExpSR l tracing,expParent+ ,Con noSpan (qNameConNil noSpan),Var noSpan (qNameTraceInfoConNil noSpan)]+ ,moduleConstsSpan l)+tExpA env tracing cr (List l exps) [] [] =+ -- use special combinator that transforms list at runtime;+ -- desugaring and subsequent transformation would lead to large program.+ (appN [expFromExpList, mkExpSR l tracing, expParent, List l exps']+ ,moduleConstsSpan l `moduleConstsUnion` expsConsts)+ where+ (exps', expsConsts) = tExps env tracing exps+tExpA env tracing cr (Paren l exp) ls es =+ tExpA env tracing cr exp ls es+tExpA env tracing cr (LeftSection l exp qOp) ls es =+ -- desugar into normal function application+ tExpA env tracing cr (App l (qOp2Exp qOp) exp) ls es+tExpA env tracing cr (RightSection l qOp exp) ls es =+ -- desugar into use of flip: (op e) = (flip op e)+ tExpA env tracing cr (App l (App l (mkExpDeriveFlip l) (qOp2Exp qOp)) exp) ls es+ -- -- desugar into a lambda abstraction+ -- tExpA env tracing cr+ -- (Lambda noSpan [PVar noSpan name] + -- (App l (App l (qOp2Exp qOp) (Var noSpan (UnQual noSpan name))) exp)) + -- ls es+ -- where+ -- name = nameFromSpan l+tExpA env tracing cr (RecConstr l qName fieldUpdates) ls es =+ tExpF env tracing ls es $+ (appN [expWrapValFun, mkExpSR l tracing, + Paren l (RecUpdate l (Paren l consUndefined) fieldUpdates'), expParent]+ ,moduleConstsSpan l `moduleConstsUnion` fieldsConsts)+ -- Add parenthesis to avoid a bug in the pretty printing of+ -- record updates in the haskell-exts library.+ where+ consUndefined =+ if consArity == 0 + then Con l (nameTransCon qName)+ else appN (Con l (nameTransCon qName) : replicate consArity+ (appN [expUndefined, expSR, expParent]))+ Just consArity = arity env qName+ expSR = mkExpSR l Trusted+ (fieldUpdates', fieldsConsts) = mapMerge2 (tField env tracing) fieldUpdates+tExpA env Traced cr (RecUpdate l exp fieldUpdates) ls es =+ tExpF env Traced ls es $+ (Let l (BDecls l (zipWith mkFieldVarDecl fieldVarNames fieldExps')) + (appN (mkExpUpdate Traced (length labels)+ :mkExpSR l Traced+ :expParent+ :exp'+ :Lambda l [PVar l nameVar] + (RecUpdate l (Var l (UnQual l nameVar)) varFields')+ :labels ++ fieldVars))+ ,moduleConstsSpan l `moduleConstsUnion` expConsts `moduleConstsUnion` fieldsConsts)+ where+ mkFieldVarDecl :: Name SrcSpanInfo -> Exp SrcSpanInfo -> Decl SrcSpanInfo+ mkFieldVarDecl name exp =+ PatBind noSpan (PVar noSpan name) Nothing (UnGuardedRhs noSpan exp) Nothing+ (exp', expConsts) = tExp env Traced False exp+ (fieldUpdates', fieldsConsts) = mapMerge2 (tField env Traced) fieldUpdates+ labels = map (Var l . UnQual l . nameTraceInfoVar l Global) labelNames+ varFields' = zipWith (FieldUpdate l) (map fieldLabel fieldUpdates') fieldVars+ fieldExps' = map fieldExp fieldUpdates'+ fieldVars = map (Var l . UnQual l) fieldVarNames+ fieldVarNames = map nameShare labelNames+ labelNames = map (qName2Name . fieldLabel) fieldUpdates+ nameVar = nameFromSpan l+ fieldLabel (FieldUpdate _ qNameLabel _) = qNameLabel+ fieldLabel (FieldPun l _) = notSupported l "record field pun"+ fieldLabel (FieldWildcard l) = notSupported l "record field wildcard"+ fieldExp (FieldUpdate _ _ exp) = exp+ fieldExp (FieldPun l _) = notSupported l "record field pun"+ fieldExp (FieldWildcard l) = notSupported l "record field wildcard"+tExpA env Trusted cr (RecUpdate l exp fieldUpdates) ls es =+ tExpF env Trusted ls es $+ (appN [mkExpUpdate Trusted (-1) + ,expParent+ ,exp'+ ,Lambda l [PVar l nameVar] + (RecUpdate l (Var l (UnQual l nameVar)) fieldUpdates')]+ ,expConsts `moduleConstsUnion` fieldsConsts)+ where+ (exp', expConsts) = tExp env Trusted False exp+ (fieldUpdates', fieldsConsts) = mapMerge2 (tField env Trusted) fieldUpdates+ nameVar = nameFromSpan l+tExpA env tracing cr (EnumFrom l exp) ls es =+ -- desugar list enumeration [from ..]+ tExpA env tracing cr (App l (mkExpDeriveEnumFrom l) exp) ls es+tExpA env tracing cr (EnumFromTo l from to) ls es =+ tExpA env tracing cr (App l (App l (mkExpDeriveEnumFromTo l) from) to) ls es+tExpA env tracing cr (EnumFromThen l from the) ls es =+ tExpA env tracing cr + (App l (App l (mkExpDeriveEnumFromThen l) from) the) ls es+tExpA env tracing cr (EnumFromThenTo l from the to) ls es =+ tExpA env tracing cr+ (App l (App l (App l (mkExpDeriveEnumFromThenTo l) from) the) to) ls es+tExpA env tracing cr (ListComp l exp qualStmts) ls es =+ tExpF env tracing ls es $+ tExpA env tracing cr (desugarListComprehension l exp qualStmts) ls es+tExpA env tracing cr (ParComp l _ _) ls es =+ notSupported l "parallel list comprehension"+tExpA env tracing cr (ExpTypeSig l exp ty) ls es =+ tExpF env tracing ls es $+ (ExpTypeSig l exp' ty', expConsts)+ where+ (exp', expConsts) = tExp env tracing cr exp+ ty' = tConstType ty+tExpA env tracing cr (VarQuote l _) ls es =+ notSupported l "template Haskell reifying of expressions"+tExpA env tracing cr (TypQuote l _) ls es =+ notSupported l "template Haskell reifying of types"+tExpA env tracing cr (BracketExp l _) ls es =+ notSupported l "template Haskell bracket expression"+tExpA env tracing cr (SpliceExp l _) ls es =+ notSupported l "template Haskell splice expression"+tExpA env tracing cr (QuasiQuote l _ _) ls es =+ notSupported l "template Haskell quasi-quote"+tExpA env tracing cr (XTag l _ _ _ _) ls es =+ notSupported l "xml element with attributes and children"+tExpA env tracing cr (XETag l _ _ _) ls es =+ notSupported l "empty xml element, with attributes"+tExpA env tracing cr (XPcdata l _) ls es =+ notSupported l "PCDATA child element"+tExpA env tracing cr (XExpTag l _) ls es =+ notSupported l "escaped Haskell expression inside XML"+tExpA env tracing cr (XChildTag l _) ls es =+ notSupported l "children of an xml element"+tExpA env tracing cr (CorePragma l _ _) ls es =+ notSupported l "CORE pragma" +tExpA env tracing cr (SCCPragma _ "" exp@(Lambda _ _ _)) ls es =+ -- This is a hack: desugaring of do-expressions uses empty SCC marker+ -- so that here we can say that the lambda is from a do-expression.+ tExpF env tracing ls es $ (appN [fun,expMkAtomDoLambda,sr,par,lambda], expConsts)+ where+ (App l1 (App l2 (App l3 (App l4 fun _) sr) par) lambda, expConsts) = tExp env tracing cr exp+tExpA env tracing cr (SCCPragma l str exp) ls es =+ tExpF env tracing ls es $+ (SCCPragma l str exp', expConsts)+ where+ (exp', expConsts) = tExp env tracing cr exp+tExpA env tracing cr (GenPragma l _ _ _ _) ls es =+ notSupported l "GENERATED pragma"+tExpA env tracing cr (Proc l _ _) ls es =+ notSupported l "arrows proc"+tExpA env tracing cr (LeftArrApp l _ _) ls es =+ notSupported l "arrow application from left"+tExpA env tracing cr (RightArrApp l _ _) ls es =+ notSupported l "arrow application from right"+tExpA env tracing cr (LeftArrHighApp l _ _) ls es =+ notSupported l "higher-order arrow application from left"+tExpA env tracing cr (RightArrHighApp l _ _) ls es =+ notSupported l "higher-order arrow application from right"++-- At end of transforming expressions possibly add deferred applications.+-- Lists are ordered from innermost to outermost.+-- Pre-condition: expression already transformed,+-- but expressions in list not yet transformed.+tExpF :: Environment -> Tracing ->+ [SrcSpanInfo] -> -- locations of surrounding applications+ [Exp SrcSpanInfo] -> -- arguments of surrounding apps+ (Exp SrcSpanInfo, ModuleConsts) -> + (Exp SrcSpanInfo, ModuleConsts)+tExpF _ _ [] [] result = result+tExpF env tracing ls es (e, consts) =+ (mkExpApply tracing (mkExpSR l tracing) (e : es'), + moduleConstsSpan l `moduleConstsUnion` esConsts `moduleConstsUnion` consts)+ where+ l = last ls+ (es', esConsts) = tExps env tracing es++-- Transform a list of expressions.+-- Mainly have to merge all constants.+tExps :: Environment -> Tracing -> [Exp SrcSpanInfo] ->+ ([Exp SrcSpanInfo], ModuleConsts)+tExps env tracing = mapMerge2 (tExp env tracing False)++mapMerge2 :: (a -> (b, ModuleConsts)) -> [a] -> ([b], ModuleConsts)+mapMerge2 f = mapSnd (foldr moduleConstsUnion moduleConstsEmpty) . unzip . map f++mapSnd :: (a -> b) -> (c, a) -> (c, b)+mapSnd f (x,y) = (x, f y)++-- Transform data constructor application.+-- Number of arguments may be smaller than arity of the data constructor.+-- (but never greater.)+tConApp :: Environment -> Tracing -> QName SrcSpanInfo -> + [SrcSpanInfo] -> [Exp SrcSpanInfo] -> + (Exp SrcSpanInfo, ModuleConsts)+tConApp env tracing qName ls es =+ (if conArity > numberOfArgs -- undersaturated application+ then mkExpPartial sr conArity numberOfArgs qName es'+ else if conArity == numberOfArgs -- saturated application+ then mkExpCon sr conArity qName es'+ else+ error "TraceTrans.tConApp: data constructor with too many arguments."+ ,moduleConstsSpan lApp `moduleConstsUnion` esModuleConsts)+ where+ Just conArity = arity env qName -- a constructor always has an arity+ numberOfArgs = length es+ lApp = last (ann qName : ls) -- location of outermost application (or just constructor itself)+ sr = mkExpSR lApp tracing+ (es',esModuleConsts) = tExps env tracing es++tLiteral :: Environment -> Tracing -> Literal SrcSpanInfo ->+ Exp SrcSpanInfo+tLiteral env tracing lit@(Char l c _) =+ mkExpConChar (mkExpSR l tracing) lit+tLiteral env tracing lit@(String l str _) =+ -- Because the result of transforming a list of characters would be very + -- large use special combinator that+ -- transforms string in traced string at runtime instead+ mkExpFromLitString (mkExpSR l tracing) lit+tLiteral env tracing lit@(Int l integer _) =+ mkExpApply tracing sr + [mkExpFromInteger sr, mkExpConInteger sr lit] + where+ sr = mkExpSR l tracing+tLiteral env tracing lit@(Frac l rational _) =+ -- desugar rational constant into explicit use of ":%",+ -- because Rational is not a primitive type but defined in PreludeBasic+ -- however, this way mkNTRational is not used at all+ mkExpApply tracing sr + [appN [expFromRational, sr, expParent]+ ,appN [Var l (qNameR l)+ ,appN [expConRational+ ,mkExpConInteger sr litNum+ ,mkExpConInteger sr litDenom] + ,appN [expMkAtomRational, sr, expParent, Lit noSpan lit]+ ]]+ where+ sr = mkExpSR l tracing+ Lit _ litNum = litInt noSpan (numerator rational)+ Lit _ litDenom = litInt noSpan (denominator rational)+tLiteral env tracing lit = + notSupported (ann lit) "unboxed literal"+++-- return False if matching the pattern may fail+-- otherwise try to return True+-- (safe approximation)+neverFailingPat :: Pat l -> Bool+neverFailingPat (PVar _ _) = True+neverFailingPat (PNeg _ p) = neverFailingPat p+neverFailingPat (PTuple _ ps) = neverFailingPats ps+neverFailingPat (PParen _ p) = neverFailingPat p+neverFailingPat (PAsPat _ _ p) = neverFailingPat p+neverFailingPat (PWildCard _) = True+neverFailingPat (PIrrPat _ _) = True+neverFailingPat (PatTypeSig _ p _) = neverFailingPat p+neverFailingPat (PBangPat _ p) = neverFailingPat p+neverFailingPat _ = False++neverFailingPats :: [Pat l] -> Bool+neverFailingPats = all neverFailingPat++-- Minor transformation here.+-- The main step is in the construction or update expression for a record.+tField :: Environment -> Tracing -> FieldUpdate SrcSpanInfo -> + (FieldUpdate SrcSpanInfo, ModuleConsts)+tField env tracing (FieldUpdate l qName exp) =+ (FieldUpdate l (nameTransField qName) exp', expConsts)+ where+ (exp', expConsts) = tExp env tracing False exp+tField env tracing (FieldPun l name) =+ notSupported l "record field pun"+tField env tracing (FieldWildcard l) =+ notSupported l "record field wildcard"++-- Desugar do-statements+removeDo :: [Stmt SrcSpanInfo] -> Exp SrcSpanInfo+removeDo [Qualifier l exp] = -- last stmt in do-expression+ exp+removeDo (Qualifier l exp : stmts) =+ appN [Var l (qNameDeriveGtGt l), exp, removeDo stmts]+removeDo (LetStmt l binds : stmts) =+ Let l binds (removeDo stmts)+removeDo (Generator l pat e : stmts) =+ appN [Var l (qNameDeriveGtGtEq l)+ ,e+ ,SCCPragma l "" $ -- hack to inform this really from a do-stmt+ if neverFailingPat pat+ then Lambda l [pat] (removeDo stmts)+ else Lambda l [PVar l newName]+ (Case l (Var l (UnQual l newName))+ [Alt l pat (UnGuardedAlt l (removeDo stmts)) Nothing+ ,Alt l (PWildCard l)+ (UnGuardedAlt l + (App l (Var l (qNameDeriveFail l)) + (Lit l (String l msg msg))))+ Nothing])]+ where+ newName : _ = namesFromSpan l+ msg = "pattern-match failure in do-expression"++-- Desugar tuple section (,4,,1)+-- Replace by a lambda abstraction \x1 x2 -> (x1,4,x2,1)+desugarTupleSection :: SrcSpanInfo -> [Maybe (Exp SrcSpanInfo)] -> + Exp SrcSpanInfo+desugarTupleSection l maybeExps =+ Lambda l (map (PVar l) varNames) (Tuple l (mkTuple maybeExps varNames))+ where+ arity = length (filter isNothing maybeExps)+ varNames = take arity (namesFromSpan l)+ mkTuple :: [Maybe (Exp SrcSpanInfo)] -> [Name SrcSpanInfo] -> + [Exp SrcSpanInfo]+ mkTuple [] _ = []+ mkTuple (Nothing : mes) (name : names) = + Var l (UnQual l name) : mkTuple mes names+ mkTuple (Just e : mes) names = e : mkTuple mes names++desugarListComprehension :: SrcSpanInfo -> Exp SrcSpanInfo -> + [QualStmt SrcSpanInfo] -> + Exp SrcSpanInfo+desugarListComprehension l exp qualStmts = + Do l (map (trans . unQual) qualStmts ++ [Qualifier l (App l (mkExpDeriveReturn l) exp)])+ where+ unQual :: QualStmt SrcSpanInfo -> Stmt SrcSpanInfo+ unQual (QualStmt _ stmt) = stmt+ unQual qs = notSupported l "qualifier beyond a statement in list comprehension"+ trans :: Stmt SrcSpanInfo -> Stmt SrcSpanInfo+ trans s@(Generator _ _ _) = s+ trans (Qualifier l exp ) = Qualifier l (App l (mkExpDeriveGuard l) exp)+ trans s@(LetStmt _ _) = s+ trans (RecStmt _ _) = notSupported l "recursive statement for arrows in list comprehension"+++-- ----------------------------------------------------------------------------+-- Transform patterns++tPats :: [Pat SrcSpanInfo] ->+ ([Pat SrcSpanInfo] -- transformed patterns+ ,Maybe -- only if there is a numeric pattern (k or n+k)+ (QName SrcSpanInfo -- new name for numeric pattern+ ,Exp SrcSpanInfo -- test for the numeric pattern (e.g. x==k)+ ,[Decl SrcSpanInfo] -- binding for n if there is an n+k pattern+ ,[Exp SrcSpanInfo] -- variables inserted in pattern after num pat+ ,[Pat SrcSpanInfo])) -- original patterns after num pat+tPats = mapCombinePats tPat++mapCombinePats :: (Pat SrcSpanInfo ->+ (Pat SrcSpanInfo, Maybe (a,c,d,[Exp SrcSpanInfo],[Pat SrcSpanInfo]))) ->+ [Pat SrcSpanInfo] ->+ ([Pat SrcSpanInfo], Maybe (a,c,d,[Exp SrcSpanInfo],[Pat SrcSpanInfo]))+mapCombinePats f [] = ([], Nothing)+mapCombinePats f (x:xs) =+ case f x of+ (pat, Nothing) -> (pat:pats, numPatInfos)+ (pat, Just (i,e,d,vs,ps)) -> (pat:xvps, Just (i,e,d,vs++xves,ps++xs))+ where+ (pats, numPatInfos) = mapCombinePats f xs+ xvps = map patToVar xs+ xves = map pVarToVar xvps++-- Replace every pattern by a variable pattern.+patToVar :: Pat SrcSpanInfo -> Pat SrcSpanInfo+patToVar (PVar l name) = PVar l (nameTransLambdaVar name)+patToVar (PAsPat l name pat) = PVar l (nameTransLambdaVar name)+patToVar pat = PVar l (nameFromSpan l)+ where+ l = ann pat++pVarToVar :: Pat l -> Exp l+pVarToVar (PVar l name) = Var l (UnQual l name)++-- Transform a pattern.+-- In particular handle numeric subpatterns, i.e. k and n+k.+-- Also create environment for occuring variables assuming they are+-- lambda-bound, except where declaration with let-binding created.+tPat :: Pat SrcSpanInfo ->+ (Pat SrcSpanInfo+ ,Maybe (QName SrcSpanInfo, Exp SrcSpanInfo, [Decl SrcSpanInfo]+ ,[Exp SrcSpanInfo], [Pat SrcSpanInfo]))+tPat (PVar l name) = (PVar l (nameTransLambdaVar name), Nothing)+tPat (PLit _ lit@(Char l c str)) = + (wrapPat (PLit l lit) (PWildCard l), Nothing)+tPat (PLit _ (String l s str)) = + tPat . mkPatList l . map mkPatChar $ s+ where+ mkPatChar :: Char -> Pat SrcSpanInfo+ mkPatChar c = PLit l (Char l c (show c)) +tPat (PLit _ lit@(Int l int str)) =+ (PVar l (nameTransLambdaVar nameNew)+ ,Just (UnQual l nameNew+ ,App l (App l (mkExpDeriveEqualEqual l)+ (Var l (UnQual l nameNew))) + (Lit l lit)+ ,[],[],[]))+ where+ nameNew = nameFromSpan l+tPat (PLit _ lit@(Frac l rat str)) =+ (PVar l (nameTransLambdaVar nameNew)+ ,Just (UnQual l nameNew+ ,App l (App l (mkExpDeriveEqualEqual l) + (Var l (UnQual l nameNew))) + (Lit l lit)+ ,[],[],[]))+ where+ nameNew = nameFromSpan l+tPat (PLit l lit) =+ notSupported l "unboxed literal"+tPat (PNeg l (PLit _ (Int _ int str))) = + -- a negative integer literal is represented as negate int+ tPat (PLit l (Int l (-int) ('-':str)))+tPat (PNeg l (PLit _ (Frac _ rat str))) =+ -- a negative floating point literal is represented as negate frac+ tPat (PLit l (Frac l (-rat) ('-':str))) +tPat (PNeg l _) =+ notSupported l "negated pattern"+tPat (PNPlusK l n k) =+ (PVar l (nameTransLambdaVar nameNew)+ ,Just (UnQual l nameNew+ ,App l (App l (mkExpDeriveGreaterEqual l)+ varNew)+ litK+ ,[PatBind l (PVar l n) Nothing + (UnGuardedRhs l (App l (App l (mkExpDeriveMinus l) varNew)+ litK)) + Nothing]+ ,[],[]))+ where+ nameNew = nameFromSpan l+ varNew = Var l (UnQual l nameNew)+ litK = Lit l (Int l k (show k))+tPat (PInfixApp l pL qName pR) =+ tPat (PApp l qName [pL, pR])+tPat (PApp l qName pats) =+ (wrapPat (PApp l (nameTransCon qName) pats') (PWildCard l)+ ,patsNumInfo)+ where+ (pats', patsNumInfo) = tPats pats+tPat (PTuple l pats) =+ tPat (PApp l (Special l (TupleCon l Boxed arity)) pats)+ where+ arity = length pats+tPat (PList l []) = -- just empty list constructor+ (wrapPat (PApp l (qNameConNil l) []) (PWildCard l), Nothing)+tPat (PList l pats) =+ tPat (mkPatList l pats)+tPat (PParen l pat) = + (PParen l pat', patNumInfo) + where+ (pat', patNumInfo) = tPat pat+tPat (PRec l qName patFields) =+ (wrapPat (PRec l (nameTransCon qName) patFields') (PWildCard l)+ ,numInfos)+ where+ (patFields', numInfos) = tPatFields patFields+tPat (PAsPat l name pat) =+ (PAsPat l (nameTransLambdaVar name) pat', patNumInfos)+ where+ (pat', patNumInfos) = tPat pat+tPat (PWildCard l) =+ (PWildCard l, Nothing)+tPat (PIrrPat l pat) =+ if isNothing patNumInfos+ then+ (case pat' of+ PApp l' nameR [p',t'] -> PApp l' nameR [PIrrPat l p', t']+ x -> x -- wildcard, ...+ ,Nothing)+ else notSupported l "numeric literal or n+k inside ~ pattern"+ where+ (pat', patNumInfos) = tPat pat+tPat (PatTypeSig l pat ty) =+ (PatTypeSig l pat' (tConstType ty), patNumInfos)+ where+ (pat', patNumInfos) = tPat pat+tPat (PViewPat l _ _) =+ notSupported l "view pattern"+tPat (PRPat l _) =+ notSupported l "regular list pattern"+tPat (PXTag l _ _ _ _) =+ notSupported l "XML element pattern"+tPat (PXETag l _ _ _) =+ notSupported l "XML singleton element pattern"+tPat (PXPcdata l _) =+ notSupported l "XML PCDATA pattern"+tPat (PXPatTag l _) =+ notSupported l "XML embedded pattern"+tPat (PXRPats l _) =+ notSupported l "XML regular list pattern"+tPat (PExplTypeArg l _ _) =+ notSupported l "explicit generics style type argument"+tPat (PQuasiQuote l _ _) =+ notSupported l "quasi quote pattern"+tPat (PBangPat l pat) =+ -- strictness is currently ignored+ tPat pat+++-- Rename field labels and process patterns.+tPatFields :: [PatField SrcSpanInfo] -> + ([PatField SrcSpanInfo]+ ,Maybe (QName SrcSpanInfo, Exp SrcSpanInfo, [Decl SrcSpanInfo]+ ,[Exp SrcSpanInfo], [Pat SrcSpanInfo]))+tPatFields patFields =+ (patFields', numInfos)+ where+ (spans, names, pats) = unzipFields patFields+ (pats', numInfos) = mapCombinePats tPat pats+ patFields' = zipFields spans (map nameTransField names) pats'+ unzipFields :: [PatField SrcSpanInfo] ->+ ([SrcSpanInfo], [QName SrcSpanInfo], [Pat SrcSpanInfo])+ unzipFields [] = ([],[],[])+ unzipFields (PFieldPat l qName pat : fields) = (l:ls, qName:names, pat:pats)+ where+ (ls, names, pats) = unzipFields fields+ unzipFields (PFieldPun l _ : _) = notSupported l "record field pun"+ unzipFields (PFieldWildcard l : _) = notSupported l "record field wildcard"+ zipFields :: [SrcSpanInfo] -> [QName SrcSpanInfo] -> [Pat SrcSpanInfo] ->+ [PatField SrcSpanInfo]+ zipFields = zipWith3 PFieldPat++-- apply data constructor R+wrapPat :: Pat SrcSpanInfo -> Pat SrcSpanInfo -> Pat SrcSpanInfo+wrapPat expVal expTrace = PApp noSpan (qNameR noSpan) [expVal, expTrace]++-- apply data constructor R+wrapExp :: Exp SrcSpanInfo -> Exp SrcSpanInfo -> Exp SrcSpanInfo+wrapExp expVal expTrace = appN [Con noSpan (qNameR noSpan), expVal, expTrace]++mkPatList :: l -> [Pat l] -> Pat l+mkPatList l =+ foldr (\x xs -> PApp l cons [x,xs]) (PList l [])+ where+ cons = qNameCons l++-- ----------------------------------------------------------------------------+-- Abstract continuation for guards+--+-- To correctly create the trace within guards, a continuation is used.+-- The type ContExp should be abstract. Its implementation is only used in +-- the following three functions.++data ContExp l = Fail | Function (QName l) [Exp l]++failContinuation :: ContExp l+failContinuation = Fail++functionContinuation :: QName l -> [Exp l] -> ContExp l+functionContinuation = Function++continuationToExp :: ContExp SrcSpanInfo -> Exp SrcSpanInfo+continuationToExp Fail = mkFailExp expParent+continuationToExp (Function fun args) =+ appN (Var l fun : args ++ [expParent])+ where+ l = ann fun++-- ----------------------------------------------------------------------------+-- Transform types++-- ty ==> R [[ty]]+tConstType :: Type SrcSpanInfo -> Type SrcSpanInfo+tConstType ty = wrapType (tType ty)++-- ty ==> RefSrcPos -> Trace -> R [[ty]]+tFunType :: Type SrcSpanInfo -> Type SrcSpanInfo+tFunType ty = + TyCon l (qNameRefSrcSpan l) `typeFun` TyCon l (qNameRefExp l) `typeFun` + wrapType (tType ty)+ where + l = ann ty++-- Leave any outer context unchanged but apply function to rest of type.+tMapType :: (Type SrcSpanInfo -> Type SrcSpanInfo) -> Type SrcSpanInfo -> Type SrcSpanInfo+tMapType f (TyForall l maybeBinds maybeContext ty) = TyForall l maybeBinds maybeContext (f ty)+tMapType f (TyParen l ty) = TyParen l (f ty)+tMapType f ty = f ty++-- Build type of worker from original type+tWorkerType :: Environment -> Arity -> Type SrcSpanInfo -> Type SrcSpanInfo+tWorkerType _ 0 ty =+ TyCon l (qNameRefExp l) `typeFun` wrapType (tType ty)+ where+ l = ann ty+tWorkerType env a ty = tWorkerSynExpand env a ty []++-- Expand a type synonym and then apply worker type transformation.+-- Need to collect type arguments.+tWorkerSynExpand :: Environment -> Arity -> Type SrcSpanInfo -> + [Type SrcSpanInfo] -> + Type SrcSpanInfo+tWorkerSynExpand env a (TyFun l tyL tyR) [] =+ wrapType (tType tyL) `typeFun` tWorkerType env (a-1) tyR+tWorkerSynExpand env a (TyCon l qname) [tyL, tyR] | isFunTyCon qname =+ wrapType (tType tyL) `typeFun` tWorkerType env (a-1) tyR+tWorkerSynExpand env a (TyCon l qname) tys =+ tWorkerType env a (expandTypeSynonym env qname tys)+tWorkerSynExpand env a (TyApp l tyL tyR) tys = + tWorkerSynExpand env a tyL (tyR : tys)+tWorkerSynExpand env a (TyParen l ty) tys =+ TyParen l (tWorkerSynExpand env a ty tys)+tWorkerSynExpand _ a ty tys = + error ("TraceTrans.tWorkerSynExpand: type must be a function but is not:\ntWorkerSynExpand env " ++ + show a ++ prettyPrint ty ++ concatMap ((" & "++) . prettyPrint) tys)+++-- Just rewrite built-in type constructors, especially function type.+-- (Otherwise type names stay unchanged, they will refer to different modules.)+-- t1 -> t2 ==> Fun [[t1]] [[t2]]+tType :: Type SrcSpanInfo -> Type SrcSpanInfo+tType (TyForall l maybeTyVarBinds maybeContext ty) =+ TyForall l maybeTyVarBinds maybeContext (tType ty)+tType (TyFun l tyL tyR) = + tType (tyAppN [TyCon l (Special l (FunCon l)), tyL, tyR])+tType (TyTuple l boxed tys) =+ tType (tyAppN (TyCon l (Special l (TupleCon l boxed (length tys))) : tys))+tType (TyList l ty) =+ tType (TyApp l (TyCon l (Special l (ListCon l))) ty)+tType (TyApp l tyL tyR) = TyApp l (tType tyL) (tType tyR)+tType (TyVar l name) = TyVar l (nameTransTyVar name)+tType (TyCon l name) = TyCon l (nameTransTy name)+tType (TyParen l ty) = TyParen l (tType ty)+tType (TyInfix l tyL name tyR) = + TyInfix l (tType tyL) (nameTransTy name) (tType tyR)+tType (TyKind l ty kind) = TyKind l (tType ty) kind++-- ty ==> R ty+wrapType :: Type SrcSpanInfo -> Type SrcSpanInfo+wrapType ty = TyApp noSpan (TyCon noSpan (qNameR noSpan)) ty++-- Class contexts remain unchanged +-- (except possibly for identifier qualifications and type renaming)+tContext :: Context SrcSpanInfo -> Context SrcSpanInfo+tContext (CxSingle l asst) = CxSingle l (tAsst asst)+tContext (CxTuple l assts) = CxTuple l (map tAsst assts)+tContext (CxParen l ctx) = CxParen l (tContext ctx)+tContext (CxEmpty l) = CxEmpty l++tAsst :: Asst SrcSpanInfo -> Asst SrcSpanInfo+tAsst (ClassA l qNameClass tys) = + ClassA l (nameTransCls qNameClass) (map tType tys)+tAsst (InfixA l tyL qNameClass tyR) =+ InfixA l (tType tyL) (nameTransCls qNameClass) (tType tyR)+tAsst (IParam l _ _) = notSupported l "implicit parameter assertion"+tAsst (EqualP l tyL tyR) = EqualP l (tType tyL) (tType tyR)++++-- ----------------------------------------------------------------------------+-- New names+-- Module names and hence all qualifications are prefixed.+-- Names of classes, type constructors and type variables remain unchanged.+-- Names of data constructors remain unchanged.+-- (everything but expression variables)+-- As prefix characters only those characters can be chosen that do+-- not start a reserved identifier or operator. Otherwise the transformation+-- might create a reserved identifier.+-- (uppercase identifiers can be prefixed by such a character, because+-- a reserved identifier will never be created by prefixing)++-- names referring to traces (or parts thereof) of program fragments:++nameTraceInfoModule :: ModuleName l -> Name l+nameTraceInfoModule (ModuleName l ident) = Ident l ('t' : withoutPrefix)+ where+ withoutPrefix = reverse . takeWhile (/= '.') . reverse $ ident++nameTraceInfoVar :: UpdId i => SrcSpanInfo -> Scope -> i -> i+nameTraceInfoVar span Global = prefixName 'a' '+'+nameTraceInfoVar span Local = prefixSpanName 'c' '+' span++nameTraceInfoGlobalVar :: UpdId i => i -> i+nameTraceInfoGlobalVar = prefixName 'a' '+'++nameTraceInfoCon :: UpdId i => i -> i+nameTraceInfoCon = prefixName 'a' '+'++nameTraceInfoSpan :: SrcSpanInfo -> Name SrcSpanInfo+nameTraceInfoSpan span = Ident span ('p' : showsEncodeSpan span "")++-- names referring to transformed program fragments:++-- The unqualfied names in the namespace of classes, types and type synonyms +-- are left unchanged, but the module changes.+-- Names of some built-in type constructors (e.g ->, [], (,)) are changed!+-- Similarly type variable names are left unchanged.++nameTransCls :: UpdId i => i -> i+nameTransCls = updateId id ++nameTransTy :: UpdId i => i -> i+nameTransTy = updateId id ++nameTransSyn :: UpdId i => i -> i+nameTransSyn = updateId id ++nameTransTyVar :: Name l -> Name l+nameTransTyVar = id -- unchanged++nameTransCon :: UpdId i => i -> i+nameTransCon = updateId id -- unchanged++nameTransField :: UpdId i => i -> i+nameTransField = prefixName 'b' '^'++nameTransLetVar :: UpdId i => i -> i+nameTransLetVar = prefixName 'g' '!'++nameTransLambdaVar :: UpdId i => i -> i+nameTransLambdaVar = prefixName 'f' '&'++-- internal, local names++-- refering to partially transformed expression+nameWorker :: UpdId i => i -> i+nameWorker = prefixName 'h' '*'++-- refering to original (unwrapped) foreign import+nameForeign :: UpdId i => i -> i+nameForeign = prefixName 'f' '&'++-- names for new variables in transformed expressions:+-- variable for sharing in transformation of pattern binding+nameShare :: UpdId i => i -> i+nameShare = prefixName 's' '|'++-- Turn a QName into a Name, assuming it will be prefixed.+-- Uses span to make qualified names unique even without qualification.+qName2Name :: QName SrcSpanInfo -> Name SrcSpanInfo+qName2Name (Qual l' _ name) = updateId update name+ where+ update :: Name l -> Name l+ update (Ident l id) = Ident l (showsEncodeSpan l' id)+ update (Symbol l id) = Symbol l (showsSymEncodeSpan l' id)+qName2Name (UnQual l name) = name+qName2Name (Special l _) = error "hat-trans: special name in binding position"++-- variable for a trace including span+nameTraceShared :: UpdId i => SrcSpanInfo -> i -> i+nameTraceShared = prefixSpanName 'j' '$'++-- variable for parent+nameParent :: Name SrcSpanInfo+nameParent = Ident noSpan "p"++-- variable for a trace+nameTrace :: UpdId i => i -> i+nameTrace = prefixName 'j' '$'++-- second variable for a trace+nameTrace2 :: UpdId i => i -> i+nameTrace2 = prefixName 'k' '@'++-- name for a local variable for a source reference+nameSR :: UpdId i => i -> i+nameSR = prefixName 'p' '%'++-- intermediate function+nameFunFromSpan :: SrcSpanInfo -> Name SrcSpanInfo+nameFunFromSpan span = Ident span ('h' : showsEncodeSpan span "n")++-- infinite list of var ids made from one id (for function clauses)+nameFuns :: UpdId i => i -> [i]+nameFuns = prefixNames 'y' '>'++-- infinite list of var ids made from one id (for naming arguments)+nameArgs :: UpdId i => i -> [i]+nameArgs = prefixNames 'z' '^'++-- a single id made from a span (different from below)+nameFromSpan :: SrcSpanInfo -> Name SrcSpanInfo+nameFromSpan span = Ident span ('v' : showsEncodeSpan span "n")++-- infinite list of ids made from a span+namesFromSpan :: SrcSpanInfo -> [Name SrcSpanInfo]+namesFromSpan span =+ map (Ident span . ('v':) . showsEncodeSpan span . ('v':) . show) + [1..]++-- Generation of new variables++showsEncodeSpan :: SrcSpanInfo -> ShowS+showsEncodeSpan span = shows beginRow . ('v':) . shows beginColumn . ('v':) + . shows endRow . ('v':) . shows endColumn+ where+ (beginRow,beginColumn,endRow,endColumn) = getSpan span++showsSymEncodeSpan :: SrcSpanInfo -> ShowS+showsSymEncodeSpan span = + \xs -> numToSym (show beginRow) ++ '=' : numToSym (show beginColumn) ++ '=' + : numToSym (show endRow) ++ '=' : numToSym (show endColumn) ++ xs + where+ (beginRow,beginColumn,endRow,endColumn) = getSpan span++prefixName :: UpdId i => Char -> Char -> i -> i+prefixName c d = updateId update+ where+ update (Ident l name) = Ident l (c:name)+ update (Symbol l name) = Ident l (d:name)++-- really used with that general type?+prefixModName :: UpdId i => Char -> i -> i+prefixModName c = updateId update+ where+ update (Ident l name) = Ident l (c: map (\c->if c=='.' then '_' else c) name)++prefixSpanName :: UpdId i => Char -> Char -> SrcSpanInfo -> i -> i+prefixSpanName c d span = updateId update+ where+ update (Ident l name) = Ident l (c : showsEncodeSpan span name)+ update (Symbol l name) = Symbol l (d : showsSymEncodeSpan span name)++prefixNames :: UpdId i => Char -> Char -> i -> [i]+prefixNames c d name = map (($ name) . updateId . update) [1..]+ where+ update no (Ident l name) = Ident l (c : show no ++ name)+ update no (Symbol l name) = Symbol l (d : numToSym (show no) ++ name)++numToSym :: String -> String+numToSym = map (("!#$%&*+^@>" !!) . digitToInt)+++-- ----------------------+-- Hardwired identifiers++expRoot :: Exp SrcSpanInfo+expRoot = expShortIdent "mkRoot"++mkExpSR :: SrcSpanInfo -> Tracing -> Exp SrcSpanInfo+mkExpSR l tracing = + Var noSpan (if isTraced tracing then UnQual l (nameTraceInfoSpan l) + else qNameMkNoSpan l)++mkExpProjection :: Exp SrcSpanInfo -> Exp SrcSpanInfo -> Exp SrcSpanInfo+mkExpProjection sr e =+ appN [expProjection, sr, expParent, e]++mkExpApplyArity :: Bool -> -- function is traced+ Exp SrcSpanInfo -> -- location of application+ Exp SrcSpanInfo -> -- location of applied function+ Arity -> + Exp SrcSpanInfo -> + Exp SrcSpanInfo -> + [Exp SrcSpanInfo] ->+ Exp SrcSpanInfo+mkExpApplyArity tracedFun srA srF a info fun args =+ appN (Var noSpan ((if tracedFun then qNameApp else qNameUApp) noSpan a)+ :srA+ :srF+ :expParent+ :info+ :fun+ :args)++mkExpApply :: Tracing -> Exp SrcSpanInfo -> [Exp SrcSpanInfo] ->+ Exp SrcSpanInfo+mkExpApply tracing sr es =+ appN (Var noSpan ((if isTraced tracing then qNameAp else qNameUAp) noSpan a)+ :sr+ :expParent+ :es)+ where+ a = length es - 1 -- function is in list++mkExpPartial :: Exp SrcSpanInfo -> -- location of application+ Arity -> Arity -> + QName SrcSpanInfo -> [Exp SrcSpanInfo] ->+ Exp SrcSpanInfo+mkExpPartial sr conArity numberOfArgs qName es =+ appN (Var noSpan (qNamePa noSpan numberOfArgs) + :Con noSpan (nameTransCon qName)+ :Var noSpan (qNameCn noSpan (conArity-numberOfArgs))+ :sr+ :expParent+ :Var noSpan (nameTraceInfoCon qName)+ :es)++mkExpCon :: Exp SrcSpanInfo -> -- location of constructor application+ Arity ->+ QName SrcSpanInfo -> [Exp SrcSpanInfo] -> + Exp SrcSpanInfo+mkExpCon sr arity qName es =+ appN (Var noSpan (qNameCon noSpan arity)+ :sr+ :expParent+ :Con noSpan (nameTransCon qName)+ :Var noSpan (nameTraceInfoCon qName)+ :es)++mkExpConChar :: Exp SrcSpanInfo -> Literal SrcSpanInfo -> Exp SrcSpanInfo+mkExpConChar sr lit =+ appN [expConChar, sr, expParent, Lit noSpan lit]++mkExpFromLitString :: Exp SrcSpanInfo -> Literal SrcSpanInfo -> + Exp SrcSpanInfo+mkExpFromLitString sr lit =+ appN [expFromLitString, sr, expParent, Lit noSpan lit]++mkExpFromInteger :: Exp SrcSpanInfo ->+ Exp SrcSpanInfo+mkExpFromInteger sr =+ appN [expFromInteger, sr, expParent]++mkExpConInteger :: Exp SrcSpanInfo ->+ Literal SrcSpanInfo ->+ Exp SrcSpanInfo+mkExpConInteger sr lit =+ appN [expConInteger, sr, expParent, Paren noSpan (Lit noSpan lit)]++mkExpFun :: Tracing -> Exp SrcSpanInfo -> Exp SrcSpanInfo -> Exp SrcSpanInfo ->+ Arity ->+ Exp SrcSpanInfo+mkExpFun tracing sr funName fun a =+ appN [Var noSpan ((if isTraced tracing then qNameFun else qNameUFun) noSpan a)+ ,funName+ ,sr+ ,expParent+ ,fun]++mkExpIf :: SrcSpanInfo -> Tracing -> + Exp SrcSpanInfo -> Exp SrcSpanInfo -> Exp SrcSpanInfo -> + Exp SrcSpanInfo+mkExpIf l Traced cond e1 e2 =+ appN [Var noSpan (qNameIf noSpan),mkExpSR l Traced,expParent,cond,e1,e2]+mkExpIf l Trusted cond e1 e2 =+ appN [Var noSpan (qNameUIf noSpan),expParent,cond,e1,e2]++mkExpCase :: SrcSpanInfo -> Tracing -> Exp SrcSpanInfo -> Exp SrcSpanInfo ->+ Exp SrcSpanInfo+mkExpCase l tracing caseFun arg =+ appN [Var noSpan ((if isTraced tracing then qNameCase else qNameUCase) noSpan)+ ,mkExpSR l tracing+ ,expParent+ ,caseFun+ ,arg]++mkExpUWrapForward :: Exp SrcSpanInfo -> Exp SrcSpanInfo+mkExpUWrapForward exp = + appN [Var noSpan (qNameUWrapForward noSpan)+ ,expParent+ ,exp]++expShortIdent :: String -> Exp SrcSpanInfo+expShortIdent ident = Var noSpan (qNameShortIdent ident noSpan)++++-- ----------------------------------------------------------------------------+-- Wrapping of untransformed code++expTo :: Type SrcSpanInfo -> Exp SrcSpanInfo+expTo = expType True++expFrom :: Type SrcSpanInfo -> Exp SrcSpanInfo+expFrom = expType False++-- The following assumes a limited form of types as they+-- occur in foreign import / export declarations.+-- Variables of kind other than * pose a problem.+expType :: Bool -> Type SrcSpanInfo -> Exp SrcSpanInfo+expType to (TyForall l _ _ _) = notSupported l "local type forall"+expType to (TyFun l tyL tyR) =+ appN+ [Var l (qNameShortIdent (prefix to ++ "Fun") l)+ ,expType (not to) tyL+ ,expType to tyR]+expType to (TyTuple l boxed tys) =+ appN+ (Var l (qNameShortIdent (prefix to ++ "Tuple" ++ show (length tys)) l) :+ map (expType to) tys)+expType to (TyList l ty) =+ appN [Var l (qNameShortIdent (prefix to ++ "List") l), expType to ty]+expType to (TyApp l tyL tyR) = + App l (expType to tyL) (expType to tyR)+expType to (TyVar l _) =+ Var l (qNameShortIdent (prefix to ++ "Id") l)+expType to (TyCon l qName) = + Var l (qNameShortIdent (prefix to ++ getName qName) l)+ where+ getName :: QName SrcSpanInfo -> String+ getName (Special _ specialCon) = specialToId specialCon+ getName qName = getId qName+expType to (TyParen l ty) = Paren l (expType to ty)+expType to (TyInfix l tyL qName tyR) = expType to (TyApp l (TyApp l (TyCon l qName) tyL) tyR)+expType to (TyKind l ty kind) = notSupported l "type with kind"++prefix :: Bool -> String+prefix True = "to"+prefix False = "from"+ ++-- ----------------------------------------------------------------------------+-- Useful stuff+++-- Frequently used in transformed code:++mkExpTuple :: [Exp SrcSpanInfo] -> Exp SrcSpanInfo+mkExpTuple es = Tuple noSpan es++mkPatTuple :: [Pat SrcSpanInfo] -> Pat SrcSpanInfo+mkPatTuple ps = PTuple noSpan ps ++mkExpList :: [Exp SrcSpanInfo] -> Exp SrcSpanInfo+mkExpList =+ foldr (\x xs -> appN [mkExpCons noSpan,x,xs]) (List noSpan [])++mkFailExp :: Exp l -> Exp l+mkFailExp parent = App l (Var l (qNameFatal l)) parent+ where+ l = ann parent++expFail :: Exp SrcSpanInfo+expFail = mkFailExp expParent++patParent :: Pat SrcSpanInfo+patParent = PVar noSpan nameParent++expParent :: Exp SrcSpanInfo+expParent = Var noSpan (UnQual noSpan nameParent)+++-- Test for specific names++-- Is this the module name "Main"?+isMain :: ModuleName l -> Bool+isMain (ModuleName l name) = name == "Main"++-- This test is an unsafe hack.+-- Even with qualification "Prelude" this may be a different "True"+-- There is no origin-tracking+isTrue :: QName l -> Bool+isTrue (Qual _ (ModuleName _ "Prelude") (Ident _ "True")) = True+isTrue (UnQual _ (Ident _ "True")) = True+isTrue _ = False++isOtherwise :: QName l -> Bool+isOtherwise (Qual _ (ModuleName _ "Prelude") (Ident _ "otherwise")) = True+isOtherwise (UnQual _ (Ident _ "otherwise")) = True+isOtherwise _ = False++-- ----------------------------------------------------------------------------++expMkAtomRational :: Exp SrcSpanInfo+expMkAtomRational = Var noSpan (qNameMkAtomRational noSpan)++expMkAtomLambda :: Exp SrcSpanInfo+expMkAtomLambda = Var noSpan (qNameMkAtomLambda noSpan)++expMkAtomDoLambda :: Exp SrcSpanInfo+expMkAtomDoLambda = Var noSpan (qNameMkAtomDoLambda noSpan)++mkExpConstUse :: Tracing -> Exp SrcSpanInfo+mkExpConstUse tracing =+ Var noSpan + (if isTraced tracing then qNameConstUse noSpan else qNameUConstUse noSpan)++mkExpConstDef :: Tracing -> Exp SrcSpanInfo+mkExpConstDef tracing =+ Var noSpan + (if isTraced tracing then qNameConstDef noSpan else qNameUConstDef noSpan)++mkExpGuard :: Tracing -> Exp SrcSpanInfo+mkExpGuard tracing =+ Var noSpan + (if isTraced tracing then qNameGuard noSpan else qNameUGuard noSpan)++mkExpUpdate :: Tracing -> Arity -> Exp SrcSpanInfo+mkExpUpdate tracing arity =+ Var noSpan + (if isTraced tracing then qNameUpdate noSpan arity else qNameUUpdate noSpan)++expProjection :: Exp SrcSpanInfo+expProjection = Var noSpan (qNameProjection noSpan)++expConChar :: Exp SrcSpanInfo+expConChar = Var noSpan (qNameConChar noSpan)++expConInteger :: Exp SrcSpanInfo+expConInteger = Var noSpan (qNameConInteger noSpan)++expFromLitString :: Exp SrcSpanInfo+expFromLitString = Var noSpan (qNameFromLitString noSpan)++expFromExpList :: Exp SrcSpanInfo+expFromExpList = Var noSpan (qNameFromExpList noSpan)++expWrapValFun :: Exp SrcSpanInfo+expWrapValFun = Var noSpan (qNameShortIdent "wrapVal" noSpan)++expTraceIO :: Exp SrcSpanInfo+expTraceIO = Var noSpan (qNameShortIdent "traceIO" noSpan)+
+ trans/Wired.hs view
@@ -0,0 +1,323 @@+module Wired where++import Language.Haskell.Exts.Annotated +import Data.Maybe (fromMaybe)+import Data.List (stripPrefix)++type Arity = Int++-- Building name qualifiers++qNameHatPreludeIdent :: String -> l -> QName l+qNameHatPreludeIdent ident l = + Qual l (ModuleName l "Hat.Prelude") (Ident l ident)++qNameHatPreludeSymbol :: String -> l -> QName l+qNameHatPreludeSymbol ident l = + Qual l (ModuleName l "Hat.Prelude") (Symbol l ident)++qNamePreludeIdent :: String -> l -> QName l+qNamePreludeIdent ident l = + Qual l (ModuleName l "Prelude") (Ident l ident)++qNamePreludeSymbol :: String -> l -> QName l+qNamePreludeSymbol ident l = + Qual l (ModuleName l "Prelude") (Symbol l ident)++qNameHatIdent :: String -> l -> QName l+qNameHatIdent ident l = Qual l (ModuleName l "Hat") (Ident l ident)++qNameShortIdent :: String -> l -> QName l+qNameShortIdent ident l = Qual l (ModuleName l "T") (Ident l ident)++qNameShortArity :: String -> l -> Arity -> QName l+qNameShortArity ident l a = qNameShortIdent (ident ++ show a) l++qNameDeriveIdent :: String -> l -> QName l+qNameDeriveIdent ident l = + Qual l (ModuleName l "PreludeBasic") (Ident l ident)++qNameDeriveSymbol :: String -> l -> QName l+qNameDeriveSymbol ident l = + Qual l (ModuleName l "PreludeBasic") (Symbol l ident)++qNameBuiltinIdent :: String -> l -> QName l+qNameBuiltinIdent ident l = + Qual l (ModuleName l "PreludeBuiltinTypes") (Ident l ident)++qNameBuiltinSymbol :: String -> l -> QName l+qNameBuiltinSymbol ident l = + Qual l (ModuleName l "PreludeBuiltinTypes") (Symbol l ident)++qNameHatDeriveIdent :: String -> l -> QName l+qNameHatDeriveIdent ident l = + Qual l (ModuleName l "Hat.PreludeBasic") (Ident l ident)++qNameHatDeriveSymbol :: String -> l -> QName l+qNameHatDeriveSymbol ident l = + Qual l (ModuleName l "Hat.PreludeBasic") (Symbol l ident)++-- -----------------------------------------------------------------------------++nameTransModule :: ModuleName l -> ModuleName l+nameTransModule (ModuleName l name) = ModuleName l + (fromMaybe (if name == "Main" then name else "Hat." ++ name) + (stripPrefix "NotHat." name)) ++tracingModuleNameShort :: l -> ModuleName l+tracingModuleNameShort l = ModuleName l "T"++mkTypeToken :: l -> String -> QName l+mkTypeToken l id = + if id `elem` (map ("from"++) preIds ++ map ("to"++) preIds)+ then Qual l (tracingModuleNameShort l) (Ident l id)+ else UnQual l (Ident l id)+ where+ -- list should include all types allowed in foreign imports+ preIds = ["Id", "IO", "Tuple0", "Tuple2", "Char", "Int", "Integer", + "Float", "Double"]++-- names for trace constructors++qNameMkRoot :: l -> QName l+qNameMkRoot = qNameShortIdent "mkRoot"++qNameR :: l -> QName l+qNameR = qNameShortIdent "R"++qNameMkModule :: l -> QName l+qNameMkModule = qNameShortIdent "mkModule"++qNameMkAtomConstructor :: l -> Bool -> QName l+qNameMkAtomConstructor l withFields =+ qNameShortIdent + (if withFields then "mkConstructorWFields" else "mkConstructor") l++qNameMkAtomVariable :: l -> QName l+qNameMkAtomVariable = qNameShortIdent "mkVariable"++qNameMkSpan :: l -> QName l+qNameMkSpan = qNameShortIdent "mkSrcPos"++qNameMkNoSpan :: l -> QName l+qNameMkNoSpan = qNameShortIdent "mkNoSrcPos"++qNameMkExpValueApp :: l -> Arity -> QName l+qNameMkExpValueApp = qNameShortArity "mkValueApp"++qNameMkExpValueUse :: l -> QName l+qNameMkExpValueUse = qNameShortIdent "mkValueUse"++qNameMkAtomRational :: l -> QName l+qNameMkAtomRational = qNameShortIdent "mkAtomRational"++qNameMkAtomLambda :: l -> QName l+qNameMkAtomLambda = qNameShortIdent "mkLambda"++qNameMkAtomDoLambda :: l -> QName l+qNameMkAtomDoLambda = qNameShortIdent "mkDoLambda"++-- tokens for expression combinators++qNameAp :: l -> Arity -> QName l+qNameAp = qNameShortArity "ap"+qNameUAp :: l -> Arity -> QName l+qNameUAp = qNameShortArity "uap"++qNameApp :: l -> Arity -> QName l+qNameApp = qNameShortArity "app"+qNameUApp :: l -> Arity -> QName l+qNameUApp = qNameShortArity "uapp"++qNameFun :: l -> Arity -> QName l+qNameFun = qNameShortArity "fun"+qNameUFun :: l -> Arity -> QName l+qNameUFun = qNameShortArity "ufun"++qNameCon :: l -> Arity -> QName l+qNameCon = qNameShortArity "con"++qNamePa :: l -> Arity -> QName l+qNamePa = qNameShortArity "pa"++qNameCn :: l -> Arity -> QName l+qNameCn = qNameShortArity "cn"++qNameConstUse :: l -> QName l+qNameConstUse = qNameShortIdent "constUse"+qNameUConstUse :: l -> QName l+qNameUConstUse = qNameShortIdent "uconstUse"++qNameConstDef :: l -> QName l+qNameConstDef = qNameShortIdent "constDef" +qNameUConstDef :: l -> QName l+qNameUConstDef = qNameShortIdent "uconstDef"++qNameGuard :: l -> QName l+qNameGuard = qNameShortIdent "cguard" +qNameUGuard :: l -> QName l+qNameUGuard = qNameShortIdent "ucguard"++qNameIf :: l -> QName l+qNameIf = qNameShortIdent "cif"+qNameUIf :: l -> QName l+qNameUIf = qNameShortIdent "ucif"++qNameCase :: l -> QName l+qNameCase = qNameShortIdent "ccase"+qNameUCase :: l -> QName l+qNameUCase = qNameShortIdent "uccase"++qNameUpdate :: l -> Arity -> QName l+qNameUpdate = qNameShortArity "update"+qNameUUpdate :: l -> QName l+qNameUUpdate = qNameShortIdent "uupdate"++qNameProjection :: l -> QName l+qNameProjection = qNameShortIdent "projection"++qNameConChar :: l -> QName l+qNameConChar = qNameShortIdent "conChar"++qNameConInteger :: l -> QName l+qNameConInteger = qNameShortIdent "conInteger"++qNameFromLitString :: l -> QName l+qNameFromLitString = qNameShortIdent "fromLitString"++qNameFromExpList :: l -> QName l+qNameFromExpList = qNameShortIdent "fromExpList"++qNameWrapValClass :: l -> QName l+qNameWrapValClass = qNameShortIdent "WrapVal"++nameWrapValFun :: l -> Name l+nameWrapValFun l = Ident l "wrapVal"++qNameUWrapForward :: l -> QName l+qNameUWrapForward = qNameShortIdent "uwrapForward"+++-- function for pattern-match failure error message+qNameFatal :: l -> QName l+qNameFatal = qNameShortIdent "fatal"++qNameRefSrcSpan :: l -> QName l+qNameRefSrcSpan = qNameShortIdent "RefSrcPos"++qNameRefExp :: l -> QName l+qNameRefExp = qNameShortIdent "RefExp"+++-- For special symbols+-- lists:++qNameConNil :: l -> QName l+qNameConNil l = Qual l (tracingModuleNameShort l) (Ident l "Nil")++qNameTraceInfoConNil :: l -> QName l+qNameTraceInfoConNil l = Qual l (tracingModuleNameShort l) (Ident l "aNil")+++-- Always refers to list constructor from the (NoHat) prelude:++qNameCons :: l -> QName l+qNameCons l = Special l (Cons l)++mkExpCons :: l -> Exp l+mkExpCons l = Con l (qNameCons l)++-- function main+nameMain :: l -> Name l+nameMain l = Ident l "main"+++-- Names used for desugaring AST before actual transformation.+-- So they are transformed and we must ensure they are always in scope.+-- Hence qualify with PreludeBasic which is always imported qualified.++mkExpDeriveReturn :: l -> Exp l+mkExpDeriveReturn l = Var l (qNameDeriveIdent "return" l)++mkExpDeriveGuard :: l -> Exp l+mkExpDeriveGuard l = Var l (qNameDeriveIdent "guard" l)++mkExpDeriveFlip :: l -> Exp l+mkExpDeriveFlip l = Var l (qNameDeriveIdent "flip" l)++mkExpDeriveEnumFrom :: l -> Exp l+mkExpDeriveEnumFrom l = Var l (qNameDeriveIdent "enumFrom" l)++mkExpDeriveEnumFromTo :: l -> Exp l+mkExpDeriveEnumFromTo l = Var l (qNameDeriveIdent "enumFromTo" l)++mkExpDeriveEnumFromThen :: l -> Exp l+mkExpDeriveEnumFromThen l = Var l (qNameDeriveIdent "enumFromThen" l)++mkExpDeriveEnumFromThenTo :: l -> Exp l+mkExpDeriveEnumFromThenTo l = Var l (qNameDeriveIdent "enumFromThenTo" l)++mkExpDeriveFilter :: l -> Exp l+mkExpDeriveFilter l = Var l (qNameDeriveIdent "filter" l)++mkExpDeriveFoldr :: l -> Exp l+mkExpDeriveFoldr l = Var l (qNameDeriveIdent "foldr" l)++mkExpDeriveEqualEqual :: l -> Exp l+mkExpDeriveEqualEqual l = Var l (qNameDeriveSymbol "==" l)++mkExpDeriveGreaterEqual :: l -> Exp l+mkExpDeriveGreaterEqual l = Var l (qNameDeriveSymbol ">=" l)++mkExpDeriveMinus :: l -> Exp l+mkExpDeriveMinus l = Var l (qNameDeriveSymbol "-" l)++qNameDeriveGtGt :: l -> QName l+qNameDeriveGtGt = qNameDeriveSymbol ">>"++qNameDeriveGtGtEq :: l -> QName l+qNameDeriveGtGtEq = qNameDeriveSymbol ">>="++qNameDeriveFail :: l -> QName l+qNameDeriveFail = qNameDeriveIdent "fail"++mkExpDeriveAndAnd :: l -> Exp l+mkExpDeriveAndAnd l = Var l (qNameDeriveSymbol "&&" l)++mkExpDeriveTrue :: l -> Exp l+mkExpDeriveTrue l = Con l (qNameBuiltinIdent "True" l) ++mkExpDeriveFalse :: l -> Exp l+mkExpDeriveFalse l = Con l (qNameBuiltinIdent "False" l)++-- Not for desugaring, but for generated code.+-- Hence not transformed any more.+-- Has to refer to original, untransformed Prelude:++qNamePreludeTrue :: l -> QName l+qNamePreludeTrue = qNamePreludeIdent "True"++qNamePreludeFalse :: l -> QName l+qNamePreludeFalse = qNamePreludeIdent "False"++-- Already transformed, but basically used for desugaring:++expUndefined :: Exp SrcSpanInfo+expUndefined = Var noSpan (qNameHatDeriveIdent "gundefined" noSpan)++-- for integer literals+expFromInteger :: Exp SrcSpanInfo+expFromInteger = Var noSpan (qNameHatDeriveIdent "gfromInteger" noSpan)++-- for rational literals:+expConRational :: Exp SrcSpanInfo+expConRational = Var noSpan (qNameHatDeriveSymbol ":%" noSpan)++expFromRational :: Exp SrcSpanInfo+expFromRational = Var noSpan (qNameHatDeriveIdent "gfromRational" noSpan)++-- -------------------------------------------+-- bogus span, does not appear in the source+noSpan :: SrcSpanInfo+noSpan = noInfoSpan (SrcSpan "" 0 0 0 0)+
+ trans/Wrap.hs view
@@ -0,0 +1,113 @@+{- --------------------------------------------------------------------------- +Wrapping is still experimental and I don't think the current implementation+does anything useful.++ Prepare a parsed module ready for the tracing transformation, when+ the module is not to be traced at all, but rather the original+ functions will be called and wrapped. Essentially, we need to strip+ the module down to reveal just its interface.++ We assume that any function exported from the module must have a+ top-level type signature. (If not, then it cannot be wrapped, so emit+ an error message.)++ Preparation of the syntax tree consists of:+ * traverse the export list+ * for each datatype exported abstractly, generate type-wrapping functions+ * for each datatype exported concretely, *** TO DO ***+ * for each function exported, grab its type signature and generate a+ "foreign import haskell" decl from it+ * in each class instance, generate "f.i.h" functions for each method - ToDo!+ * delete all imports, except those that bring a needed type into scope+ * add a new import of the original untraced version of this module+ * delete all other decls++Would need proper handling of environment to determine exactly+what is exported and to know about types that have to be imported+because they appear in foreign Haskell declarations. +Currently very rough approximation.++ After preparation, the module can be passed through the normal tracing+ transformation, which already knows how to handle "foreign import haskell".+ (Except for the new type-wrapping functions, which get added without+ transformation; does this actually work?)++Currently this is a phase before the normal transformation.+Should also consider it as an alternative, writing the wapper .hs file.++--------------------------------------------------------------------------- -}+module Wrap (wrap) where++import Language.Haskell.Exts.Annotated+import System.FilePath(FilePath)+import SynHelp (nameFromOp,mkQual,declHeadName,declHeadTyVarBinds,getId+ ,isUnQual,getModuleNameFromModule,tyVarBind2Type)++wrap :: FilePath -> Module SrcSpanInfo -> Module SrcSpanInfo+wrap filename mod@(Module l maybeModuleHead modulePragmas importDecls decls) =+ Module l maybeModuleHead modulePragmas importDecls' decls' + where+ importDecls' = mkImportOriginal modName : importDecls+ -- Only need to keep imports of type constructors used in foreign imports,+ -- but keeping all imports is a save over-approximation.+ decls' = concatMap (trans (getExported maybeModuleHead) modName) decls+ modName = getModuleNameFromModule mod++mkImportOriginal :: ModuleName l -> ImportDecl l+mkImportOriginal modName = + ImportDecl {importAnn = ann modName, importModule = modName, importQualified = True, importSrc = False,+ importPkg = Nothing, importAs = Nothing, importSpecs = Nothing}++type Exported l = Name l -> Bool++getExported :: Maybe (ModuleHead l) -> Exported l+getExported Nothing = const True -- everything exported+getExported (Just (ModuleHead l modName maybeWarningText Nothing)) = const True -- everything exported+getExported (Just (ModuleHead l modName maybeWarningText (Just (ExportSpecList _ exportSpecs)))) = + \name -> (name `within`) `any` exportSpecs+ where+ within :: Name l1 -> ExportSpec l2 -> Bool+ name `within` (EVar l qname) = same modName name qname+ name `within` (EAbs l qname) = same modName name qname+ name `within` (EThingAll l qname) = same modName name qname+ name `within` (EThingWith l qname cnames) = same modName name qname+ name `within` (EModuleContents l eModName) = getId modName == getId eModName+ same :: ModuleName l1 -> Name l2 -> QName l3 -> Bool+ same mod n q = getId n == getId q && (isUnQual q || (\(Qual _ qm qn) -> getId qm == getId mod) q)++trans :: Exported l -> ModuleName l -> Decl l -> [Decl l]+trans exported modName (TypeDecl l head ty) = [] -- ToDo: keep if exported+trans exported modName (ClassDecl l maybeContext declHead funDeps maybeClassDecls) = [] -- ToDo+trans exported modName (InstDecl l maybeContext instHead maybeInstDecls) = [] -- ToDo+trans exported modName (DataDecl l dataOrNew maybeContext declHead qualConDecls maybeDeriving) | exported name =+ -- Assume data constructors are not exported, only produce wrapper data type. + -- Use type name also as data constructor name for the wrapper type.+ -- Doesn't handle deriving.+ -- ToDo: general case.+ [DataDecl l (NewType l) Nothing declHead + [QualConDecl l Nothing Nothing (ConDecl l name [UnBangedTy l newType])] Nothing]+ where+ -- need to get type variable parameters+ name = declHeadName declHead+ tyVars = map tyVarBind2Type (declHeadTyVarBinds declHead)+ newType = foldr1 (TyApp l) (TyCon l (mkQual modName name) : tyVars)+trans exported modName (TypeSig l names ty) | not (null expNames) =+ map (mkForeignHaskell modName ty) expNames+ where+ expNames = filter exported names+trans exported modName (InfixDecl l assoc maybeInt ops) | not (null expOps) =+ [InfixDecl l assoc maybeInt expOps]+ where+ expOps = filter (exported . nameFromOp) ops+trans exported modName (FunBind l matches) = [] -- remove function declaration+trans exported modName (PatBind l pat maybeTy rhs maybeBinds) = [] -- remove pattern declaration+trans exported modName (ForImp l callConv maybeSafety maybeString name ty) | exported name =+ [mkForeignHaskell modName ty name]+trans _ _ _ = [] -- ToDo: check which other declarations do need special treatment+++mkForeignHaskell :: ModuleName l -> Type l -> Name l -> Decl l+mkForeignHaskell mod ty name =+ ForImp l (StdCall l) Nothing (Just ("NotHat." ++ getId mod ++ '.' : getId name)) name ty+ where+ l = ann name
− trans/Wrapper.hs
@@ -1,104 +0,0 @@-{- --------------------------------------------------------------------------- - Prepare a parsed module ready for the tracing transformation, when- the module is not to be traced at all, but rather the original- functions will be called and wrapped. Essentially, we need to strip- the module down to reveal just its interface.-- We assume that any function exported from the module must have a- top-level type signature. (If not, then it cannot be wrapped, so emit- an error message.)-- Preparation of the syntax tree consists of:- * traverse the export list- * for each datatype exported abstractly, generate type-wrapping functions- * for each datatype exported concretely, *** TO DO ***- * for each function exported, grab its type signature and generate a- "foreign import haskell" decl from it- * in each class instance, generate "f.i.h" functions for each method- * delete all imports, except those that bring a needed type into scope- * add a new import of the original untraced version of this module- * delete all other decls-- We do need to chase imports to resolve references to (datatype)- identifiers, but mainly so that we can delete most imports, keeping- only those that bring needed datatypes into scope. Thus, we end up- with two import-chasing phases, once before wrapping, and another- afterwards (much reduced).-- After preparation, the module can be passed through the normal tracing- transformation, which already knows how to handle "foreign import haskell".- (Except for the new type-wrapping functions, which get added without- transformation.)-- *** Need to think about when to create .hx file. In this traversal?- Or do we gather imported environment as usual (after traversal?).----------------------------------------------------------------------------- -}-module Wrapper- ( prepareWrapping- ) where--import Data.Maybe-import Syntax-import TokenId-import Extra--prepareWrapping :: String -- filename of module- -> Module TokenId- -> Module TokenId--prepareWrapping filename- (Module pos modId exports impDecls fixDecls decls)- = Module pos modId exports impDecls' [] decls'- where impDecls' = mkImportOriginal modId : impDecls- decls' = traverse modId exports decls--mkImportOriginal :: TokenId -> ImpDecl TokenId-mkImportOriginal modId =- ImportQ (noPos, mkUnqualifiedTokenId ("NotHat."++show modId)) (Hiding [])--traverse :: TokenId -> Maybe [Export TokenId] -> Decls TokenId -> Decls TokenId-traverse modId exports (DeclsParse ds) = DeclsParse (concatMap walk ds)- where- walk (DeclType lhs rhs) = [] -- nyi- walk (DeclClass pos ctxs cid tyvars fundeps decls) = [] -- nyi- walk (DeclInstance pos ctxs cid insts decls) = [] -- nyi- walk (DeclData newty ctxs lhs constrs posids) | exported simple lhs =- DeclData Nothing [] lhs [newconstr] [] : []- where simple (Simple _ tycon tyvars) = Just tycon- newconstr = Constr noPos (fromJust (simple lhs))- [(Nothing, qualify (simpleToType lhs))]- qualify (TypeCons pos tcId tvars) =- TypeCons pos (mkQualifiedTokenId (show modId) (show tcId))- tvars- walk (DeclForeignImp pos conv cname var int safe typ hname)- | exported Just var = mkForeignHaskell modId [] typ (pos,var): []- walk (DeclVarsType posids ctxs typ) | not (null vars) =- map (mkForeignHaskell modId ctxs typ) vars- where vars = filter (exported (\ (_,t)->Just t)) posids- walk (DeclPat alt) = [] -- delete pattern decls- walk (DeclFun pos var funs) = [] -- delete function decls- walk (DeclFixity (fixity,prec,vars)) | not (null expvars) =- DeclFixity (fixity,prec,expvars): []- where expvars = filter (exported varop) vars- varop (FixVar _ id) = Just id- varop _ = Nothing- walk _ = []-- exported :: (a -> Maybe TokenId) -> a -> Bool- exported f x = case exports of- Nothing -> True- Just exps -> case f x of- Nothing -> False- Just v -> (v `within`) `any` exps- where tid `within` (ExportEntity _ (EntityVar _ t)) = tid==t- tid `within` (ExportEntity _ (EntityConClsAll _ t)) = tid==t- tid `within` (ExportEntity _ (EntityConClsSome _ t ss)) =- tid==t || tid `elem` map snd ss- tid `within` (ExportModid _ _) = False -- inaccurate...---- TO DO: merge ctxs into typ for FFI signature-mkForeignHaskell :: TokenId -> [Context TokenId] -> Type TokenId- -> (Pos,TokenId) -> Decl TokenId-mkForeignHaskell mod ctxs typ (pos,var) =- DeclForeignImp pos Haskell (show mod++'.':show var) var 0 Safe typ var