module Hat.Hat
(RefModule,RefSrcPos,RefExp,RefAtom
,Loc,Fixity,Arity
,R(R)
,tPrelude
,toId,fromId
,Char,Int,Integer,Float,Double
,toChar,fromChar,toInt,fromInt,toInteger,fromInteger,toFloat,fromFloat
,toDouble,fromDouble
,Fun(Fun),IO,toIO,fromIO
,Tuple0(Tuple0),aTuple0,Tuple2(Tuple2),aTuple2,Tuple3(Tuple3),aTuple3
,Tuple4(Tuple4),aTuple4,Tuple5(Tuple5),aTuple5,Tuple6(Tuple6),aTuple6
,Tuple7(Tuple7),aTuple7,Tuple8(Tuple8),aTuple8,Tuple9(Tuple9),aTuple9
,Tuple10(Tuple10),aTuple10,Tuple11(Tuple11),aTuple11
,Tuple12(Tuple12),aTuple12,Tuple13(Tuple13),aTuple13
,Tuple14(Tuple14),aTuple14,Tuple15(Tuple15),aTuple15
,toTuple0,fromTuple0,toTuple2,fromTuple2
,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
,uap1,uap2,uap3,uap4,uap5,uap6,uap7,uap8
,ufun1,ufun2,ufun3,ufun4,ufun5,ufun6,ufun7,ufun8
,app1,app2,app3,app4,app5,uapp1,uapp2,uapp3,uapp4,uapp5,uwrapForward
,con0,con1,con2,con3,con4,con5,con6,con7,con8,con9,con10,con11,con12,con13
,con14,con15,pa0,pa1,pa2,pa3,pa4,pa5,pa6,pa7,pa8
,cn1,cn2,cn3,cn4,cn5,cn6,cn7,cn8,cn9,cn10,cn11,cn12
,cguard,ucguard,cif,ucif,ccase,uccase
,constUse,uconstUse,constDef,uconstDef
,projection
,WrapVal(wrapVal),update1,update2,uupdate
,conChar,conInteger,mkAtomRational
,fromExpList,fromLitString
,traceIO,hatError,fatal,outputTrace
,wrapForward
,mkModule,mkSrcPos,mkNoSrcPos
,mkRoot,mkValueUse
,mkValueApp1,mkValueApp2,mkValueApp3,mkValueApp4,mkValueApp5,mkValueApp6
,mkValueApp7,mkValueApp8,mkValueApp9,mkValueApp10,mkValueApp11,mkValueApp12
,mkValueApp13,mkValueApp14,mkValueApp15
,mkApp1,mkApp2,mkApp3,mkApp4,mkApp5,mkApp6,mkApp7,mkApp8,mkApp9,mkApp10
,mkApp11,mkApp12,mkApp13,mkApp14,mkApp15
,mkLambda,mkVariable,mkConstructor,mkConstructorWFields,mkAbstract
,mkDoLambda
) where
import Prelude hiding (IO,fromInteger,toInteger,catch)
import qualified Prelude (IO,fromInteger,toInteger)
import qualified System.IO.Error (ioeGetErrorString)
import Data.Ratio (numerator,denominator)
import System.IO.Unsafe (unsafePerformIO)
import Data.IORef (IORef,newIORef,readIORef,writeIORef)
import Foreign.Ptr(Ptr,castPtr)
import Foreign.Marshal.Array (withArray)
import Foreign.C.String(CString,withCString)
import Control.Exception(Exception,SomeException,catch)
#define FOREIGN(x) foreign import ccall unsafe x
newtype RefModule = RM Int
newtype RefSrcPos = RSP Int
newtype RefExp = RT Int deriving Eq
newtype RefAtom = RA Int
mkNoSrcPos :: RefSrcPos
mkNoSrcPos = RSP 0
type Loc = Int
type Fixity = Int
type Arity = Int
data R a = R a RefExp
mkR :: a -> RefExp -> R a
mkR x t = t `seq` R x t
refExp :: R a -> RefExp
refExp (R a t) = t
forceExp :: R a -> R a
forceExp r@(R _ t) = t `seq` r
tPrelude = mkModule "Prelude" "Prelude.hs" False
toId :: RefExp -> R a -> R a
toId h x = x
fromId :: RefExp -> R a -> R a
fromId h x = x
toChar :: RefExp -> R Char -> Prelude.Char
toChar p (R c _) = c
fromChar :: RefExp -> Prelude.Char -> R Char
fromChar h c = conChar mkNoSrcPos h c
toInt :: RefExp -> R Int -> Prelude.Int
toInt p (R i _) = i
fromInt :: RefExp -> Int -> R Int
fromInt p i = R i (mkInt p mkNoSrcPos i)
toInteger :: RefExp -> R Integer -> Integer
toInteger p (R i _) = i
fromInteger :: RefExp -> Integer -> R Integer
fromInteger p i = conInteger mkNoSrcPos p i
toFloat :: RefExp -> R Float -> Float
toFloat p (R f _) = f
fromFloat :: RefExp -> Float -> R Float
fromFloat p f = R f (mkFloat p mkNoSrcPos f)
toDouble :: RefExp -> R Double -> Double
toDouble p (R d _) = d
fromDouble :: RefExp -> Double -> R Double
fromDouble p d = R d (mkDouble p mkNoSrcPos d)
newtype Fun a b = Fun (RefExp -> R a -> R b)
newtype IO a = IO (Prelude.IO (R a))
toIO :: (RefExp -> R a -> b) -> RefExp -> R (IO a) -> Prelude.IO b
toIO f h (R (IO io) _) = fmap (f h) io
fromIO :: (RefExp -> a -> R b)
-> RefExp -> Prelude.IO a -> R (IO b)
fromIO f h io = R (IO (fmap (f h) io)) (mkValueUse h mkNoSrcPos aIO)
aIO :: RefAtom
aIO = mkAbstract "IO"
data Tuple0 = Tuple0
data Tuple2 a b = Tuple2 (R a) (R b)
data Tuple3 a b c = Tuple3 (R a) (R b) (R c)
data Tuple4 a b c d = Tuple4 (R a) (R b) (R c) (R d)
data Tuple5 a b c d e = Tuple5 (R a) (R b) (R c) (R d) (R e)
data Tuple6 a b c d e f = Tuple6 (R a) (R b) (R c) (R d) (R e) (R f)
data Tuple7 a b c d e f g = Tuple7 (R a) (R b) (R c) (R d) (R e) (R f) (R g)
data Tuple8 a b c d e f g h =
Tuple8 (R a) (R b) (R c) (R d) (R e) (R f) (R g) (R h)
data Tuple9 a b c d e f g h i =
Tuple9 (R a) (R b) (R c) (R d) (R e) (R f) (R g) (R h) (R i)
data Tuple10 a b c d e f g h i j =
Tuple10 (R a) (R b) (R c) (R d) (R e) (R f) (R g) (R h) (R i) (R j)
data Tuple11 a b c d e f g h i j k =
Tuple11 (R a) (R b) (R c) (R d) (R e) (R f) (R g) (R h) (R i) (R j) (R k)
data Tuple12 a b c d e f g h i j k l =
Tuple12 (R a) (R b) (R c) (R d) (R e) (R f) (R g) (R h) (R i) (R j) (R k)
(R l)
data Tuple13 a b c d e f g h i j k l m =
Tuple13 (R a) (R b) (R c) (R d) (R e) (R f) (R g) (R h) (R i) (R j) (R k)
(R l) (R m)
data Tuple14 a b c d e f g h i j k l m n =
Tuple14 (R a) (R b) (R c) (R d) (R e) (R f) (R g) (R h) (R i) (R j) (R k)
(R l) (R m) (R n)
data Tuple15 a b c d e f g h i j k l m n o =
Tuple15 (R a) (R b) (R c) (R d) (R e) (R f) (R g) (R h) (R i) (R j) (R k)
(R l) (R m) (R n) (R o)
aTuple0 = mkConstructor tPrelude 0 0 3 0 ""
aTuple2 = mkConstructor tPrelude 0 0 3 2 ","
aTuple3 = mkConstructor tPrelude 0 0 3 3 ",,"
aTuple4 = mkConstructor tPrelude 0 0 3 4 ",,,"
aTuple5 = mkConstructor tPrelude 0 0 3 5 ",,,,"
aTuple6 = mkConstructor tPrelude 0 0 3 6 ",,,,,"
aTuple7 = mkConstructor tPrelude 0 0 3 7 ",,,,,,"
aTuple8 = mkConstructor tPrelude 0 0 3 8 ",,,,,,,"
aTuple9 = mkConstructor tPrelude 0 0 3 9 ",,,,,,,,"
aTuple10 = mkConstructor tPrelude 0 0 3 10 ",,,,,,,,,"
aTuple11 = mkConstructor tPrelude 0 0 3 11 ",,,,,,,,,,"
aTuple12 = mkConstructor tPrelude 0 0 3 12 ",,,,,,,,,,,"
aTuple13 = mkConstructor tPrelude 0 0 3 13 ",,,,,,,,,,,,"
aTuple14 = mkConstructor tPrelude 0 0 3 14 ",,,,,,,,,,,,,"
aTuple15 = mkConstructor tPrelude 0 0 3 15 ",,,,,,,,,,,,,,"
toTuple0 :: RefExp -> R Tuple0 -> ()
toTuple0 h (R Tuple0 _) = ()
fromTuple0 :: RefExp -> () -> R Tuple0
fromTuple0 t () = con0 mkNoSrcPos t Tuple0 aTuple0
toTuple2 :: (RefExp -> R a -> c) -> (RefExp -> R b -> d)
-> RefExp -> R (Tuple2 a b) -> (c,d)
toTuple2 f g h (R (Tuple2 x y) _) = (f h x,g h y)
fromTuple2 :: (RefExp -> a -> R c) -> (RefExp -> b -> R d)
-> RefExp -> (a,b) -> R (Tuple2 c d)
fromTuple2 f g h (x,y) =
con2 mkNoSrcPos h Tuple2 aTuple2
(wrapForward h (f h x)) (wrapForward h (g h y))
data List a = Cons (R a) (R (List a)) | Nil
aCons = mkConstructor tPrelude 0 0 21 2 ":"
aNil = mkConstructor tPrelude 0 0 3 0 "[]"
traceIO :: String -> R (IO a) -> Prelude.IO ()
traceIO filename gmain = do
openTrace filename
catch (toIO toId mkRoot (forceExp gmain)) exceptionHandler
closeTrace
exceptionHandler :: SomeException -> Prelude.IO a
exceptionHandler e = do
hatAborted (show e)
return undefined
hatError :: RefExp -> String -> a
hatError p msg =
errorTraceExit msg p 1 `seq` undefined
fatal :: RefExp -> a
fatal r = hatError r "No match in pattern."
wrapResult :: RefSrcPos -> RefExp -> R a -> R a
wrapResult sr r x =
R (entResult r sr `seq` case x of R y ry -> resResult r ry sr `seq` y) r
wrapForward :: RefExp -> R a -> R a
wrapForward h x =
let for = mkForward h
in R (entForward for h `seq` case x of R y ry -> resForward for ry `seq` y)
for
uwrapForward :: RefExp -> R a -> R a
uwrapForward h x =
let status = unsafePerformIO (newIORef (Hidden h))
in status `seq`
R (case unsafePerformIO (readIORef status) of
Hidden _ ->
case x of
R rv tv -> unsafePerformIO (writeIORef status Eval) `seq` rv
Forward for -> entForward for h `seq`
case x of
R y ry -> resForward for ry `seq` y)
(case unsafePerformIO (readIORef status) of
Hidden h ->
let for = mkForward h in
unsafePerformIO (writeIORef status (Forward for)) `seq` for
Eval -> h)
data Status = Hidden RefExp
| Forward RefExp
| Eval
hide :: RefExp -> (RefExp -> R z) -> R z
hide p f =
if hidden p
then f p
else let r = mkHidden p in wrapResult mkNoSrcPos r (f r)
ap1 :: RefSrcPos -> RefExp -> R (Fun a z) -> R a -> R z
ap1 sr p (R (Fun f) rf) a@(R _ ra) =
let r = mkApp1 p sr rf ra
in wrapResult sr r (f r a)
ap2 :: RefSrcPos -> RefExp -> R (Fun a (Fun b z)) -> R a -> R b -> R z
ap2 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) =
let r = mkApp2 p sr rf ra rb
in wrapResult sr r (pap1 sr p r (f r a) b)
ap3 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c z))) -> R a -> R b -> R c -> R z
ap3 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) =
let r = mkApp3 p sr rf ra rb rc
in wrapResult sr r (pap2 sr p r (f r a) b c)
ap4 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d z)))) -> R a -> R b -> R c -> R d -> R z
ap4 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) =
let r = mkApp4 p sr rf ra rb rc rd
in wrapResult sr r (pap3 sr p r (f r a) b c d)
ap5 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e z)))))
-> R a -> R b -> R c -> R d -> R e -> R z
ap5 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd)
e@(R _ re) =
let r = mkApp5 p sr rf ra rb rc rd re
in wrapResult sr r (pap4 sr p r (f r a) b c d e)
ap6 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g z))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R z
ap6 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
g@(R _ rg) =
let r = mkApp6 p sr rf ra rb rc rd re rg
in wrapResult sr r (pap5 sr p r (f r a) b c d e g)
ap7 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h z)))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R z
ap7 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
g@(R _ rg) h@(R _ rh) =
let r = mkApp7 p sr rf ra rb rc rd re rg rh
in wrapResult sr r (pap6 sr p r (f r a) b c d e g h)
ap8 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i z))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R z
ap8 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
g@(R _ rg) h@(R _ rh) i@(R _ ri) =
let r = mkApp8 p sr rf ra rb rc rd re rg rh ri
in wrapResult sr r (pap7 sr p r (f r a) b c d e g h i)
ap9 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j z)))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R z
ap9 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) =
let r = mkApp9 p sr rf ra rb rc rd re rg rh ri rj
in wrapResult sr r (pap8 sr p r (f r a) b c d e g h i j)
ap10 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k z))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R z
ap10 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd)
e@(R _ re) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk) =
let r = mkApp10 p sr rf ra rb rc rd re rg rh ri rj rk
in wrapResult sr r (pap9 sr p r (f r a) b c d e g h i j k)
ap11 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l z)))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R z
ap11 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd)
e@(R _ re) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) =
let r = mkApp11 p sr rf ra rb rc rd re rg rh ri rj rk rl
in wrapResult sr r (pap10 sr p r (f r a) b c d e g h i j k l)
ap12 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l (Fun m z))))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R z
ap12 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd)
e@(R _ re) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) m@(R _ rm) =
let r = mkApp12 p sr rf ra rb rc rd re rg rh ri rj rk rl rm
in wrapResult sr r (pap11 sr p r (f r a) b c d e g h i j k l m)
ap13 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l (Fun m (Fun n z)))))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R n -> R z
ap13 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd)
e@(R _ re) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) m@(R _ rm) n@(R _ rn) =
let r = mkApp13 p sr rf ra rb rc rd re rg rh ri rj rk rl rm rn
in wrapResult sr r (pap12 sr p r (f r a) b c d e g h i j k l m n)
ap14 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l (Fun m (Fun n (Fun o z))))))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R n -> R o -> R z
ap14 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd)
e@(R _ re) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) m@(R _ rm) n@(R _ rn) o@(R _ ro) =
let r = mkApp14 p sr rf ra rb rc rd re rg rh ri rj rk rl rm rn ro
in wrapResult sr r (pap13 sr p r (f r a) b c d e g h i j k l m n o)
ap15 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l (Fun m (Fun n (Fun o (Fun q z)))))))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R n -> R o -> R q -> R z
ap15 sr p (R (Fun f) rf) a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd)
e@(R _ re) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) m@(R _ rm) n@(R _ rn) o@(R _ ro) q@(R _ rq) =
let r = mkApp15 p sr rf ra rb rc rd re rg rh ri rj rk rl rm rn ro rq
in wrapResult sr r (pap14 sr p r (f r a) b c d e g h i j k l m n o q)
pap1 :: RefSrcPos -> RefExp -> RefExp -> R (Fun a z) -> R a -> R z
pap1 sr p r wf@(R (Fun f) rf) a =
if r == rf
then f r a
else ap1 sr p wf a
pap2 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b z)) -> R a -> R b -> R z
pap2 sr p r wf@(R (Fun f) rf) a b =
if r == rf
then pap1 sr p r (f r a) b
else ap2 sr p wf a b
pap3 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c z))) -> R a -> R b -> R c -> R z
pap3 sr p r wf@(R (Fun f) rf) a b c =
if r == rf
then pap2 sr p r (f r a) b c
else ap3 sr p wf a b c
pap4 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d z)))) -> R a -> R b -> R c -> R d -> R z
pap4 sr p r wf@(R (Fun f) rf) a b c d =
if r == rf
then pap3 sr p r (f r a) b c d
else ap4 sr p wf a b c d
pap5 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e z)))))
-> R a -> R b -> R c -> R d -> R e -> R z
pap5 sr p r wf@(R (Fun f) rf) a b c d e =
if r == rf
then pap4 sr p r (f r a) b c d e
else ap5 sr p wf a b c d e
pap6 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g z))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R z
pap6 sr p r wf@(R (Fun f) rf) a b c d e g =
if r == rf
then pap5 sr p r (f r a) b c d e g
else ap6 sr p wf a b c d e g
pap7 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h z)))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R z
pap7 sr p r wf@(R (Fun f) rf) a b c d e g h =
if r == rf
then pap6 sr p r (f r a) b c d e g h
else ap7 sr p wf a b c d e g h
pap8 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i z))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R z
pap8 sr p r wf@(R (Fun f) rf) a b c d e g h i =
if r == rf
then pap7 sr p r (f r a) b c d e g h i
else ap8 sr p wf a b c d e g h i
pap9 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j z)))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R z
pap9 sr p r wf@(R (Fun f) rf) a b c d e g h i j =
if r == rf
then pap8 sr p r (f r a) b c d e g h i j
else ap9 sr p wf a b c d e g h i j
pap10 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i (Fun j
(Fun k z))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R z
pap10 sr p r wf@(R (Fun f) rf) a b c d e g h i j k =
if r == rf
then pap9 sr p r (f r a) b c d e g h i j k
else ap10 sr p wf a b c d e g h i j k
pap11 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i (Fun j
(Fun k (Fun l z)))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R z
pap11 sr p r wf@(R (Fun f) rf) a b c d e g h i j k l =
if r == rf
then pap10 sr p r (f r a) b c d e g h i j k l
else ap11 sr p wf a b c d e g h i j k l
pap12 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i (Fun j
(Fun k (Fun l (Fun m z))))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R z
pap12 sr p r wf@(R (Fun f) rf) a b c d e g h i j k l m =
if r == rf
then pap11 sr p r (f r a) b c d e g h i j k l m
else ap12 sr p wf a b c d e g h i j k l m
pap13 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i (Fun j
(Fun k (Fun l (Fun m (Fun n z)))))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R n -> R z
pap13 sr p r wf@(R (Fun f) rf) a b c d e g h i j k l m n =
if r == rf
then pap12 sr p r (f r a) b c d e g h i j k l m n
else ap13 sr p wf a b c d e g h i j k l m n
pap14 :: RefSrcPos -> RefExp -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i (Fun j
(Fun k (Fun l (Fun m (Fun n (Fun o z))))))))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R n -> R o -> R z
pap14 sr p r wf@(R (Fun f) rf) a b c d e g h i j k l m n o =
if r == rf
then pap13 sr p r (f r a) b c d e g h i j k l m n o
else ap14 sr p wf a b c d e g h i j k l m n o
fun1 :: RefAtom -> RefSrcPos -> RefExp -> (R a -> RefExp -> R z)
-> R (Fun a z)
fun1 var sr p f =
let rf = mkValueUse p sr var
in R (
Fun (\t a ->
if hidden t
then let r = mkApp1 t mkNoSrcPos rf (refExp a)
in recordChild t r `seq`
wrapResult mkNoSrcPos r (f a r)
else f a t))
rf
fun2 :: RefAtom -> RefSrcPos -> RefExp -> (R a -> R b -> RefExp -> R z)
-> R (Fun a (Fun b z))
fun2 var sr p f =
let rf = mkValueUse p sr var
in R (
Fun (\t a ->
R (Fun (\t b ->
if hidden t
then let r = mkApp2 t mkNoSrcPos rf (refExp a)
(refExp b)
in recordChild t r `seq`
wrapResult mkNoSrcPos r (f a b r)
else f a b t))
t))
rf
fun3 :: RefAtom -> RefSrcPos -> RefExp -> (R a -> R b -> R c -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c z)))
fun3 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
if hidden t
then let r = mkApp3 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c)
in recordChild t r `seq`
wrapResult mkNoSrcPos r (f a b c r)
else f a b c t))
t))
t))
rf
fun4 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d z))))
fun4 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
if hidden t
then let r = mkApp4 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
in recordChild t r `seq`
wrapResult mkNoSrcPos r (f a b c d r)
else f a b c d t))
t))
t))
t))
rf
fun5 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e z)))))
fun5 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
if hidden t
then let r = mkApp5 t mkNoSrcPos rf (refExp a) (refExp b)
(refExp c) (refExp d) (refExp e)
in recordChild t r `seq`
wrapResult mkNoSrcPos r (f a b c d e r)
else f a b c d e t))
t))
t))
t))
t))
rf
fun6 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g z))))))
fun6 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
if hidden t
then let r = mkApp6 t mkNoSrcPos rf (refExp a) (refExp b)
(refExp c) (refExp d) (refExp e) (refExp g)
in recordChild t r `seq`
wrapResult mkNoSrcPos r (f a b c d e g r)
else f a b c d e g t))
t))
t))
t))
t))
t))
rf
fun7 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h z)))))))
fun7 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
if hidden t
then let r = mkApp7 t mkNoSrcPos rf (refExp a) (refExp b)
(refExp c) (refExp d) (refExp e) (refExp g)
(refExp h)
in recordChild t r `seq`
wrapResult mkNoSrcPos r (f a b c d e g h r)
else f a b c d e g h t))
t))
t))
t))
t))
t))
t))
rf
fun8 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i z))))))))
fun8 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
R (Fun (\t i ->
if hidden t
then let r = mkApp8 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i)
in recordChild t r `seq`
wrapResult mkNoSrcPos r (f a b c d e g h i r)
else f a b c d e g h i t))
t))
t))
t))
t))
t))
t))
t))
rf
fun9 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j
-> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j z)))))))))
fun9 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
R (Fun (\t i ->
R (Fun (\t j ->
if hidden t
then let r = mkApp9 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j)
in recordChild t r `seq`
wrapResult mkNoSrcPos r
(f a b c d e g h i j r)
else f a b c d e g h i j t))
t))
t))
t))
t))
t))
t))
t))
t))
rf
fun10 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k z))))))))))
fun10 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
R (Fun (\t i ->
R (Fun (\t j ->
R (Fun (\t k ->
if hidden t
then let r = mkApp10 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j) (refExp k)
in recordChild t r `seq`
wrapResult mkNoSrcPos r
(f a b c d e g h i j k r)
else f a b c d e g h i j k t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
rf
fun11 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l z)))))))))))
fun11 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
R (Fun (\t i ->
R (Fun (\t j ->
R (Fun (\t k ->
R (Fun (\t l ->
if hidden t
then let r = mkApp11 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j) (refExp k)
(refExp l)
in recordChild t r `seq`
wrapResult mkNoSrcPos r
(f a b c d e g h i j k l r)
else f a b c d e g h i j k l t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
rf
fun12 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l (Fun m z))))))))))))
fun12 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
R (Fun (\t i ->
R (Fun (\t j ->
R (Fun (\t k ->
R (Fun (\t l ->
R (Fun (\t m ->
if hidden t
then let r = mkApp12 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j) (refExp k)
(refExp l) (refExp m)
in recordChild t r `seq`
wrapResult mkNoSrcPos r
(f a b c d e g h i j k l m r)
else f a b c d e g h i j k l m t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
rf
fun13 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R n -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l (Fun m (Fun n z)))))))))))))
fun13 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
R (Fun (\t i ->
R (Fun (\t j ->
R (Fun (\t k ->
R (Fun (\t l ->
R (Fun (\t m ->
R (Fun (\t n ->
if hidden t
then let r = mkApp13 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j) (refExp k)
(refExp l) (refExp m) (refExp n)
in recordChild t r `seq`
wrapResult mkNoSrcPos r
(f a b c d e g h i j k l m n r)
else f a b c d e g h i j k l m n t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
rf
fun14 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R n -> R o -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l (Fun m (Fun n (Fun o z))))))))))))))
fun14 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
R (Fun (\t i ->
R (Fun (\t j ->
R (Fun (\t k ->
R (Fun (\t l ->
R (Fun (\t m ->
R (Fun (\t n ->
R (Fun (\t o ->
if hidden t
then let r = mkApp14 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j) (refExp k)
(refExp l) (refExp m) (refExp n)
(refExp o)
in recordChild t r `seq`
wrapResult mkNoSrcPos r
(f a b c d e g h i j k l m n o r)
else f a b c d e g h i j k l m n o t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
rf
fun15 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R j -> R k
-> R l -> R m -> R n -> R o -> R q -> RefExp -> R z)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i
(Fun j (Fun k (Fun l (Fun m (Fun n (Fun o (Fun q z)))))))))))))))
fun15 var sr p f =
let rf = mkValueUse p sr var
in R (Fun (\t a ->
R (Fun (\t b ->
R (Fun (\t c ->
R (Fun (\t d ->
R (Fun (\t e ->
R (Fun (\t g ->
R (Fun (\t h ->
R (Fun (\t i ->
R (Fun (\t j ->
R (Fun (\t k ->
R (Fun (\t l ->
R (Fun (\t m ->
R (Fun (\t n ->
R (Fun (\t o ->
R (Fun (\t q ->
if hidden t
then let r = mkApp15 t mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j) (refExp k)
(refExp l) (refExp m) (refExp n)
(refExp o) (refExp q)
in recordChild t r `seq`
wrapResult mkNoSrcPos r
(f a b c d e g h i j k l m n o q r)
else f a b c d e g h i j k l m n o q t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
t))
rf
uap1 :: RefSrcPos -> RefExp -> R (Fun a z) -> R a -> R z
uap1 sr h (R (Fun f) _) a = uwrapForward h (f h a)
uap2 :: RefSrcPos -> RefExp -> R (Fun a (Fun b z)) -> R a -> R b -> R z
uap2 sr h f a b = uwrapForward h $
case uap1 sr h f a of
R (Fun f) _ -> f h b
uap3 :: RefSrcPos -> RefExp -> R (Fun a (Fun b (Fun c z)))
-> R a -> R b -> R c -> R z
uap3 sr h f a b c = uwrapForward h $
case uap2 sr h f a b of
R (Fun f) _ -> f h c
uap4 :: RefSrcPos -> RefExp -> R (Fun a (Fun b (Fun c (Fun d z))))
-> R a -> R b -> R c -> R d -> R z
uap4 sr h f a b c d = uwrapForward h $
case uap3 sr h f a b c of
R (Fun f) _ -> f h d
uap5 :: RefSrcPos -> RefExp -> R (Fun a (Fun b (Fun c (Fun d (Fun e z)))))
-> R a -> R b -> R c -> R d -> R e -> R z
uap5 sr h f a b c d e = uwrapForward h (upap5 h f a b c d e)
uap6 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g z))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R z
uap6 sr h f a b c d e g = uwrapForward h (upap6 h f a b c d e g)
uap7 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h z)))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R z
uap7 sr p f a b c d e g h = uwrapForward p (upap7 p f a b c d e g h)
uap8 :: RefSrcPos -> RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i z))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R z
uap8 sr p f a b c d e g h i = uwrapForward p (upap8 p f a b c d e g h i)
upap1 :: RefExp -> R (Fun a z) -> R a -> R z
upap1 h (R (Fun f) _) a = f h a
upap2 :: RefExp -> R (Fun a (Fun b z)) -> R a -> R b -> R z
upap2 h f a b =
case upap1 h f a of
R (Fun f) _ -> f h b
upap3 :: RefExp -> R (Fun a (Fun b (Fun c z)))
-> R a -> R b -> R c -> R z
upap3 h f a b c =
case upap2 h f a b of
R (Fun f) _ -> f h c
upap4 :: RefExp -> R (Fun a (Fun b (Fun c (Fun d z))))
-> R a -> R b -> R c -> R d -> R z
upap4 h f a b c d =
case upap3 h f a b c of
R (Fun f) _ -> f h d
upap5 :: RefExp -> R (Fun a (Fun b (Fun c (Fun d (Fun e z)))))
-> R a -> R b -> R c -> R d -> R e -> R z
upap5 h f a b c d e =
case upap4 h f a b c d of
R (Fun f) _ -> f h e
upap6 :: RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g z))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R z
upap6 h f a b c d e g =
case upap5 h f a b c d e of
R (Fun f) _ -> f h g
upap7 :: RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h z)))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R z
upap7 p f a b c d e g h =
case upap6 p f a b c d e g of
R (Fun f) _ -> f p h
upap8 :: RefExp
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i z))))))))
-> R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i -> R z
upap8 p f a b c d e g h i =
case upap7 p f a b c d e g h of
R (Fun f) _ -> f p i
ufun1 :: RefAtom -> RefSrcPos -> RefExp -> (R a -> RefExp -> R r)
-> R (Fun a r)
ufun1 at sr p f = R (Fun (\r a -> hide r (f a))) (mkValueUse p sr at)
ufun2 :: RefAtom -> RefSrcPos -> RefExp -> (R a -> R b -> RefExp -> R r)
-> R (Fun a (Fun b r))
ufun2 at sr p f =
R (Fun (\r a ->
R (Fun (\r b -> hide r (f a b)))
r))
(mkValueUse p sr at)
ufun3 :: RefAtom -> RefSrcPos -> RefExp -> (R a -> R b -> R c -> RefExp -> R r)
-> R (Fun a (Fun b (Fun c r)))
ufun3 at sr p f =
R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c -> hide r (f a b c)))
r))
r))
(mkValueUse p sr at)
ufun4 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> RefExp -> R r)
-> R (Fun a (Fun b (Fun c (Fun d r))))
ufun4 at sr p f =
R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d -> hide r (f a b c d)))
r))
r))
r))
(mkValueUse p sr at)
ufun5 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> RefExp -> R r)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e r)))))
ufun5 at sr p f =
R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e -> hide r (f a b c d e)))
r))
r))
r))
r))
(mkValueUse p sr at)
ufun6 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> RefExp -> R r)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g r))))))
ufun6 at sr p f =
R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g -> hide r (f a b c d e g)))
r))
r))
r))
r))
r))
(mkValueUse p sr at)
ufun7 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> RefExp -> R r)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h r)))))))
ufun7 at sr p f =
R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (Fun (\r h -> hide r (f a b c d e g h)))
r))
r))
r))
r))
r))
r))
(mkValueUse p sr at)
ufun8 :: RefAtom -> RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R g -> R h -> R i
-> RefExp -> R r)
-> R (Fun a (Fun b (Fun c (Fun d (Fun e (Fun g (Fun h (Fun i r))))))))
ufun8 at sr p f =
R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (Fun (\r h ->
R (Fun (\r i -> hide r (f a b c d e g h i)))
r))
r))
r))
r))
r))
r))
r))
(mkValueUse p sr at)
con0 :: RefSrcPos -> RefExp -> z -> RefAtom -> R z
con0 sr p cn at =
R cn (mkValueUse p sr at)
con1 :: RefSrcPos -> RefExp -> (R a -> z) -> RefAtom -> R a -> R z
con1 sr p cn at a@(R _ ra) =
R (cn a) (mkValueApp1 p sr at ra)
con2 :: RefSrcPos -> RefExp
-> (R a -> R b -> z) -> RefAtom -> R a -> R b -> R z
con2 sr p cn at a@(R _ ra) b@(R _ rb) =
R (cn a b) (mkValueApp2 p sr at ra rb)
con3 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> z) -> RefAtom -> R a -> R b -> R c -> R z
con3 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) =
R (cn a b c) (mkValueApp3 p sr at ra rb rc)
con4 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> z) -> RefAtom
-> R a -> R b -> R c -> R d -> R z
con4 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) =
R (cn a b c d) (mkValueApp4 p sr at ra rb rc rd)
con5 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> z) -> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R z
con5 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re) =
R (cn a b c d e) (mkValueApp5 p sr at ra rb rc rd re)
con6 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> z) -> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R z
con6 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) =
R (cn a b c d e f) (mkValueApp6 p sr at ra rb rc rd re rf)
con7 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> z) -> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R z
con7 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) =
R (cn a b c d e f g)
(mkValueApp7 p sr at ra rb rc rd re rf rg)
con8 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> z) -> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R z
con8 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) h@(R _ rh) =
R (cn a b c d e f g h)
(mkValueApp8 p sr at ra rb rc rd re rf rg rh)
con9 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> z)
-> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R z
con9 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) h@(R _ rh) i@(R _ ri) =
R (cn a b c d e f g h i)
(mkValueApp9 p sr at ra rb rc rd re rf rg rh ri)
con10 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> z)
-> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R z
con10 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) =
R (cn a b c d e f g h i j)
(mkValueApp10 p sr at ra rb rc rd re rf rg rh ri rj)
con11 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> z)
-> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R z
con11 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk) =
R (cn a b c d e f g h i j k)
(mkValueApp11 p sr at ra rb rc rd re rf rg rh ri rj rk)
con12 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R l -> z)
-> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R l -> R z
con12 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) =
R (cn a b c d e f g h i j k l)
(mkValueApp12 p sr at ra rb rc rd re rf rg rh ri rj rk rl)
con13 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R l -> R m -> z)
-> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R l -> R m -> R z
con13 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) m@(R _ rm) =
R (cn a b c d e f g h i j k l m)
(mkValueApp13 p sr at ra rb rc rd re rf rg rh ri rj rk rl rm)
con14 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R l -> R m -> R n -> z)
-> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R l -> R m -> R n -> R z
con14 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) m@(R _ rm) n@(R _ rn) =
R (cn a b c d e f g h i j k l m n)
(mkValueApp14 p sr at ra rb rc rd re rf rg rh ri rj rk rl rm rn)
con15 :: RefSrcPos -> RefExp
-> (R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R l -> R m -> R n -> R o -> z)
-> RefAtom
-> R a -> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j
-> R k -> R l -> R m -> R n -> R o -> R z
con15 sr p cn at a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re)
f@(R _ rf) g@(R _ rg) h@(R _ rh) i@(R _ ri) j@(R _ rj) k@(R _ rk)
l@(R _ rl) m@(R _ rm) n@(R _ rn) o@(R _ ro) =
R (cn a b c d e f g h i j k l m n o)
(mkValueApp15 p sr at ra rb rc rd re rf rg rh ri rj rk rl rm rn ro)
pa0 :: b -> (b -> RefExp -> c) -> RefSrcPos -> RefExp -> RefAtom -> c
pa0 c cni sr p at =
cni c (mkValueUse p sr at)
pa1 :: (R a1 -> b) -> (b -> RefExp -> c)
-> RefSrcPos -> RefExp -> RefAtom -> R a1 -> c
pa1 c cni sr p at a1@(R _ r1) =
cni (c a1) (mkValueApp1 p sr at r1)
pa2 :: (R a1 -> R a2 -> b) -> (b -> RefExp -> c)
-> RefSrcPos -> RefExp -> RefAtom
-> R a1 -> R a2 -> c
pa2 c cni sr p at a1@(R _ r1) a2@(R _ r2) =
cni (c a1 a2) (mkValueApp2 p sr at r1 r2)
pa3 :: (R a1 -> R a2 -> R a3 -> b) -> (b -> RefExp -> c)
-> RefSrcPos -> RefExp -> RefAtom
-> R a1 -> R a2 -> R a3 -> c
pa3 c cni sr p at a1@(R _ r1) a2@(R _ r2) a3@(R _ r3) =
cni (c a1 a2 a3) (mkValueApp3 p sr at r1 r2 r3)
pa4 :: (R a1 -> R a2 -> R a3 -> R a4 -> b) -> (b -> RefExp -> c)
-> RefSrcPos -> RefExp -> RefAtom
-> R a1 -> R a2 -> R a3 -> R a4 -> c
pa4 c cni sr p at a1@(R _ r1) a2@(R _ r2) a3@(R _ r3) a4@(R _ r4) =
cni (c a1 a2 a3 a4) (mkValueApp4 p sr at r1 r2 r3 r4)
pa5 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> b) -> (b -> RefExp -> c)
-> RefSrcPos -> RefExp -> RefAtom
-> R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> c
pa5 c cni sr p at a1@(R _ r1) a2@(R _ r2) a3@(R _ r3) a4@(R _ r4) a5@(R _ r5) =
cni (c a1 a2 a3 a4 a5) (mkValueApp5 p sr at r1 r2 r3 r4 r5)
pa6 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> b)
-> (b -> RefExp -> c)
-> RefSrcPos -> RefExp -> RefAtom
-> R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> c
pa6 c cni sr p at a1@(R _ r1) a2@(R _ r2) a3@(R _ r3) a4@(R _ r4) a5@(R _ r5)
a6@(R _ r6) =
cni (c a1 a2 a3 a4 a5 a6) (mkValueApp6 p sr at r1 r2 r3 r4 r5 r6)
pa7 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> b)
-> (b -> RefExp -> c)
-> RefSrcPos -> RefExp -> RefAtom
-> R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> c
pa7 c cni sr p at a1@(R _ r1) a2@(R _ r2) a3@(R _ r3) a4@(R _ r4) a5@(R _ r5)
a6@(R _ r6) a7@(R _ r7) =
cni (c a1 a2 a3 a4 a5 a6 a7) (mkValueApp7 p sr at r1 r2 r3 r4 r5 r6 r7)
pa8 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> R a8 -> b)
-> (b -> RefExp -> c)
-> RefSrcPos -> RefExp -> RefAtom
-> R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> R a8 -> c
pa8 c cni sr p at a1@(R _ r1) a2@(R _ r2) a3@(R _ r3) a4@(R _ r4) a5@(R _ r5)
a6@(R _ r6) a7@(R _ r7) a8@(R _ r8) =
cni (c a1 a2 a3 a4 a5 a6 a7 a8) (mkValueApp8 p sr at r1 r2 r3 r4 r5 r6 r7 r8)
cn1 :: (R a1 -> b) -> RefExp -> R (Fun a1 b)
cn1 f rf = R (Fun (\r a ->
R (f a)
(if hidden r
then mkResApp1 r mkNoSrcPos rf (refExp a)
else r)))
rf
cn2 :: (R a1 -> R a2 -> b) -> RefExp -> R (Fun a1 (Fun a2 b))
cn2 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (f a b)
(if hidden r
then mkResApp2 r mkNoSrcPos rf (refExp a) (refExp b)
else r)))
r))
rf
cn3 :: (R a1 -> R a2 -> R a3 -> b) -> RefExp -> R (Fun a1 (Fun a2 (Fun a3 b)))
cn3 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (f a b c)
(if hidden r
then mkResApp3 r mkNoSrcPos rf (refExp a) (refExp b)
(refExp c)
else r)))
r))r))rf
cn4 :: (R a1 -> R a2 -> R a3 -> R a4 -> b) -> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 b))))
cn4 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (f a b c d)
(if hidden r
then mkResApp4 r mkNoSrcPos rf (refExp a) (refExp b)
(refExp c) (refExp d)
else r)))
r))r))r))rf
cn5 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> b) -> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 (Fun a5 b)))))
cn5 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (f a b c d e)
(if hidden r
then mkResApp5 r mkNoSrcPos rf (refExp a) (refExp b)
(refExp c) (refExp d) (refExp e)
else r)))
r))r))r))r))rf
cn6 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> b) -> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 (Fun a5 (Fun a6 b))))))
cn6 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (f a b c d e g)
(if hidden r
then mkResApp6 r mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d) (refExp e)
(refExp g)
else r)))
r))r))r))r))r))rf
cn7 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> b) -> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 (Fun a5 (Fun a6 (Fun a7 b)))))))
cn7 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (Fun (\r h ->
R (f a b c d e g h)
(if hidden r
then mkResApp7 r mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
else r)))
r))r))r))r))r))r))rf
cn8 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> R a8 -> b)
-> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 (Fun a5 (Fun a6 (Fun a7 (Fun a8
b))))))))
cn8 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (Fun (\r h ->
R (Fun (\r i ->
R (f a b c d e g h i)
(if hidden r
then mkResApp8 r mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i)
else r)))
r))r))r))r))r))r))r))rf
cn9 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> R a8 -> R a9
-> b)
-> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 (Fun a5 (Fun a6 (Fun a7 (Fun a8
(Fun a9 b)))))))))
cn9 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (Fun (\r h ->
R (Fun (\r i ->
R (Fun (\r j ->
R (f a b c d e g h i j)
(if hidden r
then mkResApp9 r mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j)
else r)))
r))r))r))r))r))r))r))r))rf
cn10 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> R a8 -> R a9
-> R a10 -> b)
-> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 (Fun a5 (Fun a6 (Fun a7 (Fun a8
(Fun a9 (Fun a10 b))))))))))
cn10 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (Fun (\r h ->
R (Fun (\r i ->
R (Fun (\r j ->
R (Fun (\r k ->
R (f a b c d e g h i j k)
(if hidden r
then mkResApp10 r mkNoSrcPos rf (refExp a)
(refExp b) (refExp c) (refExp d)
(refExp e) (refExp g) (refExp h)
(refExp i) (refExp j) (refExp k)
else r)))
r))r))r))r))r))r))r))r))r))rf
cn11 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> R a8 -> R a9
-> R a10 -> R a11 -> b)
-> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 (Fun a5 (Fun a6 (Fun a7 (Fun a8
(Fun a9 (Fun a10 (Fun a11 b)))))))))))
cn11 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (Fun (\r h ->
R (Fun (\r i ->
R (Fun (\r j ->
R (Fun (\r k ->
R (Fun (\r l ->
R (f a b c d e g h i j k l)
(if hidden r
then mkResApp11 r mkNoSrcPos rf
(refExp a) (refExp b) (refExp c)
(refExp d) (refExp e) (refExp g)
(refExp h) (refExp i) (refExp j)
(refExp k) (refExp l)
else r)))
r))r))r))r))r))r))r))r))r))r))rf
cn12 :: (R a1 -> R a2 -> R a3 -> R a4 -> R a5 -> R a6 -> R a7 -> R a8 -> R a9
-> R a10 -> R a11 -> R a12 -> b)
-> RefExp
-> R (Fun a1 (Fun a2 (Fun a3 (Fun a4 (Fun a5 (Fun a6 (Fun a7 (Fun a8
(Fun a9 (Fun a10 (Fun a11 (Fun a12 b))))))))))))
cn12 f rf = R (Fun (\r a ->
R (Fun (\r b ->
R (Fun (\r c ->
R (Fun (\r d ->
R (Fun (\r e ->
R (Fun (\r g ->
R (Fun (\r h ->
R (Fun (\r i ->
R (Fun (\r j ->
R (Fun (\r k ->
R (Fun (\r l ->
R (Fun (\r m ->
R (f a b c d e g h i j k l m)
(if hidden r
then mkResApp12 r mkNoSrcPos rf
(refExp a) (refExp b)
(refExp c) (refExp d)
(refExp e) (refExp g)
(refExp h) (refExp i)
(refExp j) (refExp k)
(refExp l) (refExp m)
else r)))
r))r))r))r))r))r))r))r))r))r))r))rf
constUse :: RefSrcPos -> RefExp -> R a -> R a
constUse sr p wv@(R v rv) =
let constUseRefExp = mkConstUse p sr rv
in wrapResult sr constUseRefExp wv
uconstUse :: RefSrcPos -> RefExp -> R a -> R a
uconstUse sr p wv@(R v rv) =
if hidden p
then
wv
else
R v (mkConstUse p sr rv)
constDef :: RefExp -> RefAtom -> (RefExp -> R a) -> R a
constDef context var f =
let constDefRefExp = mkConstDef context var
in wrapResult mkNoSrcPos constDefRefExp (f constDefRefExp)
uconstDef :: RefExp -> RefAtom -> (RefExp -> R a) -> R a
uconstDef context var f =
if hidden context
then
uwrapForward context (f context)
else
let constDefRefExp = mkConstDef context var
in wrapResult mkNoSrcPos constDefRefExp (hide constDefRefExp f)
cguard :: RefSrcPos -> RefExp
-> R Bool -> (RefExp -> R a) -> (RefExp -> R a) -> R a
cguard sr parent (R c rc) e1 e2 =
let guardRefExp = mkGuard parent sr rc
in wrapResult sr guardRefExp (if c then e1 guardRefExp else e2 guardRefExp)
ucguard :: R Bool -> R a -> R a -> R a
ucguard (R True _) e1 e2 = e1
ucguard (R False _) e1 e2 = e2
cif :: RefSrcPos -> RefExp
-> R Bool -> (RefExp -> R a) -> (RefExp -> R a) -> R a
cif sr parent (R c rc) e1 e2 =
let ifRefExp = mkIf parent sr rc
in wrapResult sr ifRefExp (if c then e1 ifRefExp else e2 ifRefExp)
ucif :: RefExp -> R Bool -> R a -> R a -> R a
ucif hidden cond e1 e2 = uwrapForward hidden
(case cond of
R True _ -> e1
R False _ -> e2)
ccase :: RefSrcPos -> RefExp -> (R a -> RefExp -> R b) -> R a -> R b
ccase sr parent fun arg@(R _ rarg) =
let caseRefExp = mkCase parent sr rarg
in wrapResult sr caseRefExp (fun arg caseRefExp)
uccase :: RefSrcPos -> RefExp -> (R a -> RefExp -> R b) -> R a -> R b
uccase _ hidden fun arg = uwrapForward hidden (fun arg hidden)
class WrapVal a where
wrapVal :: RefSrcPos -> a -> RefExp -> R a
update1 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> R b -> R a
update1 sr p (R v rv) modify f1 (R _ r1) =
let p' = mkFieldUpdate1 p sr rv f1 r1
in wrapResult sr p' (wrapVal sr (modify v) p')
update2 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> R b -> R c -> R a
update2 sr p (R v rv) modify f1 f2 (R _ r1) (R _ r2) =
let p' = mkFieldUpdate2 p sr rv f1 r1 f2 r2
in wrapResult sr p' (wrapVal sr (modify v) p')
update3 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> RefAtom -> R b -> R c -> R d -> R a
update3 sr p (R v rv) modify f1 f2 f3 (R _ r1) (R _ r2) (R _ r3) =
let p' = mkFieldUpdate3 p sr rv f1 r1 f2 r2 f3 r3
in wrapResult sr p' (wrapVal sr (modify v) p')
update4 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> R b -> R c -> R d -> R e -> R a
update4 sr p (R v rv) modify f1 f2 f3 f4 (R _ r1) (R _ r2) (R _ r3) (R _ r4) =
let p' = mkFieldUpdate4 p sr rv f1 r1 f2 r2 f3 r3 f4 r4
in wrapResult sr p' (wrapVal sr (modify v) p')
update5 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> R b -> R c -> R d -> R e -> R f -> R a
update5 sr p (R v rv) modify f1 f2 f3 f4 f5
(R _ r1) (R _ r2) (R _ r3) (R _ r4) (R _ r5) =
let p' = mkFieldUpdate5 p sr rv f1 r1 f2 r2 f3 r3 f4 r4 f5 r5
in wrapResult sr p' (wrapVal sr (modify v) p')
update6 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> R b -> R c -> R d -> R e -> R f -> R g -> R a
update6 sr p (R v rv) modify f1 f2 f3 f4 f5 f6
(R _ r1) (R _ r2) (R _ r3) (R _ r4) (R _ r5) (R _ r6) =
let p' = mkFieldUpdate6 p sr rv f1 r1 f2 r2 f3 r3 f4 r4 f5 r5 f6 r6
in wrapResult sr p' (wrapVal sr (modify v) p')
update7 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> RefAtom -> RefAtom
-> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R a
update7 sr p (R v rv) modify f1 f2 f3 f4 f5 f6 f7
(R _ r1) (R _ r2) (R _ r3) (R _ r4) (R _ r5) (R _ r6) (R _ r7) =
let p' = mkFieldUpdate7 p sr rv f1 r1 f2 r2 f3 r3 f4 r4 f5 r5 f6 r6 f7 r7
in wrapResult sr p' (wrapVal sr (modify v) p')
update8 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> RefAtom -> RefAtom -> RefAtom
-> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R a
update8 sr p (R v rv) modify f1 f2 f3 f4 f5 f6 f7 f8
(R _ r1) (R _ r2) (R _ r3) (R _ r4) (R _ r5) (R _ r6)
(R _ r7) (R _ r8) =
let p' = mkFieldUpdate8 p sr rv f1 r1 f2 r2 f3 r3 f4 r4 f5 r5
f6 r6 f7 r7 f8 r8
in wrapResult sr p' (wrapVal sr (modify v) p')
update9 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j -> R a
update9 sr p (R v rv) modify f1 f2 f3 f4 f5 f6 f7 f8 f9
(R _ r1) (R _ r2) (R _ r3) (R _ r4) (R _ r5) (R _ r6)
(R _ r7) (R _ r8) (R _ r9) =
let p' = mkFieldUpdate9 p sr rv f1 r1 f2 r2 f3 r3 f4 r4 f5 r5
f6 r6 f7 r7 f8 r8 f9 r9
in wrapResult sr p' (wrapVal sr (modify v) p')
update10 :: WrapVal a => RefSrcPos -> RefExp -> R a -> (a -> a)
-> RefAtom -> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> RefAtom -> RefAtom -> RefAtom -> RefAtom -> RefAtom
-> R b -> R c -> R d -> R e -> R f -> R g -> R h -> R i -> R j -> R k
-> R a
update10 sr p (R v rv) modify f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
(R _ r1) (R _ r2) (R _ r3) (R _ r4) (R _ r5) (R _ r6)
(R _ r7) (R _ r8) (R _ r9) (R _ r10) =
let p' = mkFieldUpdate10 p sr rv f1 r1 f2 r2 f3 r3 f4 r4 f5 r5
f6 r6 f7 r7 f8 r8 f9 r9 f10 r10
in wrapResult sr p' (wrapVal sr (modify v) p')
uupdate :: WrapVal a => RefExp -> R a -> (a -> a) -> R a
uupdate h (R v rv) modify = uwrapForward h (wrapVal mkNoSrcPos (modify v) h)
projection :: RefSrcPos -> RefExp -> R a -> R a
projection sr p (R v rv) = R v (mkProjection p sr rv)
conChar :: RefSrcPos -> RefExp -> Char -> R Char
conChar sr p c = R c (mkChar p sr c)
conInteger :: RefSrcPos -> RefExp -> Integer -> R Integer
conInteger sr p i =
R i (if Prelude.toInteger (minBound::Int) <= i &&
i <= Prelude.toInteger (maxBound::Int)
then mkInt p sr (Prelude.fromInteger i)
else mkInteger p sr (show i))
mkAtomRational :: RefSrcPos -> RefExp -> Rational -> RefExp
mkAtomRational sr p r =
if Prelude.toInteger (minBound::Int) <= num &&
num <= Prelude.toInteger (maxBound::Int) &&
Prelude.toInteger (minBound::Int) <= denom &&
denom <= Prelude.toInteger (maxBound::Int)
then mkRat p sr (Prelude.fromInteger num) (Prelude.fromInteger denom)
else mkRational p sr (show num) (show denom)
where
num = numerator r
denom = denominator r
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 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 Nil aNil) xs
mkResApp2 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
mkResApp2 p sr f a1 a2 =
let ra = mkApp2 p sr f a1 a2
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp3 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp
mkResApp3 p sr f a1 a2 a3 =
let ra = mkApp3 p sr f a1 a2 a3
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp4 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp
mkResApp4 p sr f a1 a2 a3 a4 =
let ra = mkApp4 p sr f a1 a2 a3 a4
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp5 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp
mkResApp5 p sr f a1 a2 a3 a4 a5 =
let ra = mkApp5 p sr f a1 a2 a3 a4 a5
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp6 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp
mkResApp6 p sr f a1 a2 a3 a4 a5 a6 =
let ra = mkApp6 p sr f a1 a2 a3 a4 a5 a6
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp7 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
mkResApp7 p sr f a1 a2 a3 a4 a5 a6 a7 =
let ra = mkApp7 p sr f a1 a2 a3 a4 a5 a6 a7
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp8 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
mkResApp8 p sr f a1 a2 a3 a4 a5 a6 a7 a8 =
let ra = mkApp8 p sr f a1 a2 a3 a4 a5 a6 a7 a8
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp9 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp
mkResApp9 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 =
let ra = mkApp9 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp10 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp
mkResApp10 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 =
let ra = mkApp10 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp11 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp
mkResApp11 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
let ra = mkApp11 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp12 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp
mkResApp12 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 =
let ra = mkApp12 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp13 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
mkResApp13 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
let ra = mkApp13 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp14 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
mkResApp14 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
let ra = mkApp14 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14
in entResult ra sr `seq` resResult ra ra sr `seq` ra
mkResApp15 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp
mkResApp15 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
let ra = mkApp15 p sr f a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
in entResult ra sr `seq` resResult ra ra sr `seq` ra
app1 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> RefExp -> R z) -> R a -> R z
app1 sr srFun p af hf a@(R _ ra) =
let rf = mkValueUse p srFun af
r = mkApp1 p sr rf ra
in wrapResult sr r (hf a r)
app2 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> R b -> RefExp -> R z) -> R a -> R b -> R z
app2 sr srFun p af hf a@(R _ ra) b@(R _ rb) =
let rf = mkValueUse p srFun af
r = mkApp2 p sr rf ra rb
in wrapResult sr r (hf a b r)
app3 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> R b -> R c -> RefExp -> R z) -> R a -> R b -> R c -> R z
app3 sr srFun p af hf a@(R _ ra) b@(R _ rb) c@(R _ rc) =
let rf = mkValueUse p srFun af
r = mkApp3 p sr rf ra rb rc
in wrapResult sr r (hf a b c r)
app4 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> R b -> R c -> R d -> RefExp -> R z)
-> R a -> R b -> R c -> R d -> R z
app4 sr srFun p af hf a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) =
let rf = mkValueUse p srFun af
r = mkApp4 p sr rf ra rb rc rd
in wrapResult sr r (hf a b c d r)
app5 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> R b -> R c -> R d -> R e -> RefExp -> R z)
-> R a -> R b -> R c -> R d -> R e -> R z
app5 sr srFun p af hf a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re) =
let rf = mkValueUse p srFun af
r = mkApp5 p sr rf ra rb rc rd re
in wrapResult sr r (hf a b c d e r)
uapp1 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> RefExp -> R z) -> R a -> R z
uapp1 sr srFun p af hf a@(R _ ra) =
let rf = mkValueUse p srFun af
r = mkApp1 p sr rf ra
h = mkHidden r
in wrapResult sr r (wrapResult mkNoSrcPos h (hf a h))
uapp2 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> R b -> RefExp -> R z) -> R a -> R b -> R z
uapp2 sr srFun p af hf a@(R _ ra) b@(R _ rb) =
let rf = mkValueUse p srFun af
r = mkApp2 p sr rf ra rb
h = mkHidden r
in wrapResult sr r (wrapResult mkNoSrcPos h (hf a b h))
uapp3 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> R b -> R c -> RefExp -> R z) -> R a -> R b -> R c -> R z
uapp3 sr srFun p af hf a@(R _ ra) b@(R _ rb) c@(R _ rc) =
let rf = mkValueUse p srFun af
r = mkApp3 p sr rf ra rb rc
h = mkHidden r
in wrapResult sr r (wrapResult mkNoSrcPos h (hf a b c h))
uapp4 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> R b -> R c -> R d -> RefExp -> R z)
-> R a -> R b -> R c -> R d -> R z
uapp4 sr srFun p af hf a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) =
let rf = mkValueUse p srFun af
r = mkApp4 p sr rf ra rb rc rd
h = mkHidden r
in wrapResult sr r (wrapResult mkNoSrcPos h (hf a b c d h))
uapp5 :: RefSrcPos -> RefSrcPos -> RefExp -> RefAtom
-> (R a -> R b -> R c -> R d -> R e -> RefExp -> R z)
-> R a -> R b -> R c -> R d -> R e -> R z
uapp5 sr srFun p af hf a@(R _ ra) b@(R _ rb) c@(R _ rc) d@(R _ rd) e@(R _ re) =
let rf = mkValueUse p srFun af
r = mkApp5 p sr rf ra rb rc rd re
h = mkHidden r
in wrapResult sr r (wrapResult mkNoSrcPos h (hf a b c d e h))
openTrace :: String -> Prelude.IO ()
openTrace progname = withCString progname openTrace'
FOREIGN("hat-c.h hat_Open")
openTrace' :: CString -> Prelude.IO ()
FOREIGN("hat-c.h hat_Close")
closeTrace :: Prelude.IO ()
hatAborted :: String -> Prelude.IO ()
hatAborted msg = withCString msg hatAbort'
FOREIGN("hat-c.h hat_Abort")
hatAbort' :: CString -> Prelude.IO ()
errorTraceExit :: String -> RefExp -> Int -> ()
errorTraceExit msg ref no =
unsafePerformIO $
withCString msg (\msg'->errorTraceExit' msg' ref no)
FOREIGN("hat-c.h hat_ErrorExit")
errorTraceExit' :: CString -> RefExp -> Int -> Prelude.IO ()
outputTrace :: RefExp -> String -> Prelude.IO ()
outputTrace trace output = withCString output (outputTrace' trace)
FOREIGN("hat-c.h hat_OutputTrace")
outputTrace' :: RefExp -> CString -> Prelude.IO ()
FOREIGN("hat-c.h hat_Hidden")
hidden :: RefExp -> Bool
FOREIGN("hat-c.h mkRoot")
mkRoot :: RefExp
mkModule :: String -> String -> Bool -> RefModule
mkModule modName srcFile traced =
unsafePerformIO $
withCString modName (\modName' ->
withCString srcFile (\srcFile' ->
mkModule' modName' srcFile' traced))
FOREIGN("hat-c.h mkModule")
mkModule' :: CString -> CString -> Bool -> Prelude.IO RefModule
FOREIGN("hat-c.h mkSrcPos")
mkSrcPos :: RefModule -> Loc -> Loc -> RefSrcPos
FOREIGN("hat-c.h mkResApp1")
mkResApp1 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp1")
mkApp1 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp2")
mkApp2 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp3")
mkApp3 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp
FOREIGN("hat-c.h mkApp4")
mkApp4 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp
FOREIGN("hat-c.h mkApp5")
mkApp5 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp6")
mkApp6 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp7")
mkApp7 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp8")
mkApp8 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp9")
mkApp9 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp10")
mkApp10 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp
FOREIGN("hat-c.h mkApp11")
mkApp11 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp
FOREIGN("hat-c.h mkApp12")
mkApp12 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp13")
mkApp13 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp14")
mkApp14 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkApp15")
mkApp15 :: RefExp -> RefSrcPos -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp1")
mkValueApp1 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp2")
mkValueApp2 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp3")
mkValueApp3 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp
FOREIGN("hat-c.h mkValueApp4")
mkValueApp4 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp5")
mkValueApp5 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp6")
mkValueApp6 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp7")
mkValueApp7 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp8")
mkValueApp8 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp9")
mkValueApp9 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp10")
mkValueApp10 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp
FOREIGN("hat-c.h mkValueApp11")
mkValueApp11 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp12")
mkValueApp12 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp13")
mkValueApp13 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp14")
mkValueApp14 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkValueApp15")
mkValueApp15 :: RefExp -> RefSrcPos -> RefAtom -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
-> RefExp -> RefExp -> RefExp -> RefExp -> RefExp -> RefExp
FOREIGN("hat-c.h mkChar")
mkChar :: RefExp -> RefSrcPos -> Char -> RefExp
FOREIGN("hat-c.h mkInt")
mkInt :: RefExp -> RefSrcPos -> Int -> RefExp
mkInteger :: RefExp -> RefSrcPos -> String -> RefExp
mkInteger parent use integer =
unsafePerformIO $
withCString integer (\integer' -> mkInteger' parent use integer')
FOREIGN("hat-c.h mkInteger")
mkInteger' :: RefExp -> RefSrcPos -> CString -> Prelude.IO RefExp
FOREIGN("hat-c.h mkRat")
mkRat :: RefExp -> RefSrcPos -> Int -> Int -> RefExp
mkRational :: RefExp -> RefSrcPos -> String -> String -> RefExp
mkRational parent use num denom =
unsafePerformIO $
withCString num (\num' ->
withCString denom (\denom' -> mkRational' parent use num' denom'))
FOREIGN("hat-c.h mkRational")
mkRational' :: RefExp -> RefSrcPos -> CString -> CString -> Prelude.IO RefExp
FOREIGN("hat-c.h mkFloat")
mkFloat :: RefExp -> RefSrcPos -> Float -> RefExp
FOREIGN("hat-c.h mkDouble")
mkDouble :: RefExp -> RefSrcPos -> Double -> RefExp
FOREIGN("hat-c.h mkValueUse")
mkValueUse :: RefExp -> RefSrcPos -> RefAtom -> RefExp
FOREIGN("hat-c.h mkConstUse")
mkConstUse :: RefExp -> RefSrcPos -> RefExp -> RefExp
FOREIGN("hat-c.h mkConstDef")
mkConstDef :: RefExp -> RefAtom -> RefExp
FOREIGN("hat-c.h mkGuard")
mkGuard :: RefExp -> RefSrcPos -> RefExp -> RefExp
FOREIGN("hat-c.h mkCase")
mkCase :: RefExp -> RefSrcPos -> RefExp -> RefExp
FOREIGN("hat-c.h mkIf")
mkIf :: RefExp -> RefSrcPos -> RefExp -> RefExp
FOREIGN("hat-c.h mkFieldUpdate1")
mkFieldUpdate1 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate2")
mkFieldUpdate2 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate3")
mkFieldUpdate3 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate4")
mkFieldUpdate4 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate5")
mkFieldUpdate5 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate6")
mkFieldUpdate6 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate7")
mkFieldUpdate7 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate8")
mkFieldUpdate8 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate9")
mkFieldUpdate9 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkFieldUpdate10")
mkFieldUpdate10 :: RefExp -> RefSrcPos -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp -> RefAtom -> RefExp -> RefAtom -> RefExp
-> RefAtom -> RefExp
-> RefExp
FOREIGN("hat-c.h mkProjection")
mkProjection :: RefExp -> RefSrcPos -> RefExp -> RefExp
FOREIGN("hat-c.h mkHidden")
mkHidden :: RefExp -> RefExp
FOREIGN("hat-c.h mkForward")
mkForward :: RefExp -> RefExp
FOREIGN("hat-c.h mkDoStmt")
mkDoStmt :: RefExp -> RefExp
FOREIGN("hat-c.h mkLambda")
mkLambda :: RefAtom
FOREIGN("hat-c.h mkDoLambda")
mkDoLambda :: RefAtom
mkVariable :: RefModule -> Loc -> Loc -> Fixity -> Arity -> String
-> Bool -> RefAtom
mkVariable mod begin end fixity arity name local =
unsafePerformIO $
withCString name
(\name' -> mkVariable' mod begin end fixity arity name' local)
FOREIGN("hat-c.h mkVariable")
mkVariable' :: RefModule -> Loc -> Loc -> Fixity -> Arity -> CString -> Bool
-> Prelude.IO RefAtom
mkConstructor :: RefModule -> Loc -> Loc -> Fixity -> Arity
-> String -> RefAtom
mkConstructor mod begin end fixity arity name =
unsafePerformIO $
withCString name
(\name' -> mkConstructor' mod begin end fixity arity name')
FOREIGN("hat-c.h mkConstructor")
mkConstructor' :: RefModule -> Loc -> Loc -> Fixity -> Arity -> CString
-> Prelude.IO RefAtom
mkConstructorWFields :: RefModule -> Loc -> Loc -> Fixity -> Arity -> String
-> [RefAtom] -> RefAtom
mkConstructorWFields mod begin end fixity arity name labels =
unsafePerformIO $
withCString name (\name' ->
withArray (map (\(RA i) -> i) labels) (\labels' ->
mkConstructorWFields' mod begin end fixity arity name' labels'))
FOREIGN("hat-c.h mkConstructorWFields")
mkConstructorWFields' :: RefModule -> Loc -> Loc -> Fixity -> Arity
-> CString -> Ptr Int -> Prelude.IO RefAtom
mkAbstract :: String -> RefAtom
mkAbstract txt = unsafePerformIO $
withCString txt (\txt' -> mkAbstract' txt')
FOREIGN("hat-c.h mkAbstract")
mkAbstract' :: CString -> Prelude.IO RefAtom
FOREIGN("hat-c.h entResult")
entResult :: RefExp -> RefSrcPos -> ()
FOREIGN("hat-c.h entForward")
entForward :: RefExp -> RefExp -> ()
FOREIGN("hat-c.h resResult")
resResult :: RefExp -> RefExp -> RefSrcPos -> ()
FOREIGN("hat-c.h resForward")
resForward :: RefExp -> RefExp -> ()
FOREIGN("hat-c.h recordChild")
recordChild :: RefExp -> RefExp -> ()