I have been playing around with parts of the GHC front end, particularly
the Renamer, and am trying to understand the output dumped by this stage.  
As part of this process I created a file (Blank.hs), where the file
contains only an empty module declaration:

        module Blank where

when I run "ghc -ddump-rn Blank.hs" I get the output which appears at the
end of this message.

Are these declarations simply added to all files?  If so, why, and what
are they used for? 
In particular what are "PrelBase.zi" and "PrelBase.zaza"? 
Also, why are only the types of the functions given, and not their
definitions?

Thanks,
Kate Golder

==================== Renamer: ====================
module Blank where
PrelBase.zi{-r7V,i-} ::
    forall b{-rNx-} :: PrelGHC.*{-312,l-} c{-rNy-} :: PrelGHC.*{-312,l-}
a{-rNz-} :: PrelGHC.*{-312,l-}.
    (b{-rNx-} -> c{-rNy-})
    -> (a{-rNz-} -> b{-rNx-}) -> a{-rNz-} -> c{-rNy-}
PrelBase.zaza{-r7b,i-} ::
    PrelBase.Bool{-34,i-}
    -> PrelBase.Bool{-34,i-} -> PrelBase.Bool{-34,i-}
An imported rule...
An imported rule...
PrelList.filterList{-rue,j-} ::
    forall a{-rN3-} :: PrelGHC.*{-312,l-}.
    (a{-rN3-} -> PrelBase.Bool{-34,i-}) -> [a{-rN3-}] -> [a{-rN3-}]
PrelList.filterFB{-riV,j-} ::
    forall t{-rN0-} :: PrelGHC.*{-312,l-} t1{-rN1-} :: PrelGHC.*{-312,l-}.
    (t{-rN0-} -> t1{-rN1-} -> t1{-rN1-})
    -> (t{-rN0-} -> PrelBase.Bool{-34,i-})
       -> t{-rN0-} -> t1{-rN1-} -> t1{-rN1-}
PrelBase.mapList{-r62,j-} ::
    forall a{-rMX-} :: PrelGHC.*{-312,l-} b{-rMY-} :: PrelGHC.*{-312,l-}.
    (a{-rMX-} -> b{-rMY-}) -> [a{-rMX-}] -> [b{-rMY-}]
PrelBase.mapFB{-r61,j-} ::
    forall t{-rMS-} :: PrelGHC.*{-312,l-} t1{-rMT-} :: PrelGHC.*{-312,l-}
t2{-rMU-} :: PrelGHC.*{-312,l-} t3{-rMV-} :: PrelGHC.*{-312,l-}.
    (t3{-rMV-} -> t1{-rMT-} -> t2{-rMU-})
    -> (t{-rMS-} -> t3{-rMV-}) -> t{-rMS-} -> t1{-rMT-} -> t2{-rMU-}
PrelBase.append{-r5p,j-} ::
    forall a{-rMQ-} :: PrelGHC.*{-312,l-}.
    [a{-rMQ-}] -> [a{-rMQ-}] -> [a{-rMQ-}]
PrelBase.augment{-03,s-} ::
    forall a{-rMO-} :: PrelGHC.*{-312,l-}.
    (forall b{-rMN-} :: PrelGHC.*{-312,l-}.
     (a{-rMO-} -> b{-rMN-} -> b{-rMN-}) -> b{-rMN-} -> b{-rMN-})
    -> [a{-rMO-}] -> [a{-rMO-}]
An imported rule...
An imported rule...
An imported rule...
An imported rule...
An imported rule...
An imported rule...
An imported rule...
An imported rule...
PrelPack.unpackCStringzh{-0u,s-} ::
    PrelGHC.Addrzh{-31,s-} -> [PrelBase.Char{-38,i-}]
PrelPack.unpackFoldrCStringzh{-0t,s-} ::
    forall a{-r9h-} :: PrelGHC.*{-312,l-}.
    PrelGHC.Addrzh{-31,s-}
    -> (PrelBase.Char{-38,i-} -> a{-r9h-} -> a{-r9h-})
       -> a{-r9h-} -> a{-r9h-}
PrelPack.unpackAppendCStringzh{-0s,s-} ::
    PrelGHC.Addrzh{-31,s-}
    -> [PrelBase.Char{-38,i-}] -> [PrelBase.Char{-38,i-}]
PrelPack.unpackNByteszh{-0r,s-} ::
    PrelGHC.Addrzh{-31,s-}
    -> PrelGHC.Intzh{-3e,s-} -> [PrelBase.Char{-38,i-}]
PrelPack.packCStringzh{-0j,s-} ::
    [PrelBase.Char{-38,i-}] -> PrelGHC.ByteArrayzh{-35,s-}
PrelBase.addr2Integer{-0e,s-} ::
    PrelGHC.Addrzh{-31,s-} -> PrelBase.Integer{-3l,i-}
PrelBase.foldr{-07,i-} ::
    forall a{-r8k-} :: PrelGHC.*{-312,l-} b{-r8l-} :: PrelGHC.*{-312,l-}.
    (a{-r8k-} -> b{-r8l-} -> b{-r8l-})
    -> b{-r8l-} -> [a{-r8k-}] -> b{-r8l-}
PrelBase.build{-04,s-} ::
    forall a{-r8i-} :: PrelGHC.*{-312,l-}.
    (forall b{-r8h-} :: PrelGHC.*{-312,l-}.
     (a{-r8i-} -> b{-r8h-} -> b{-r8h-}) -> b{-r8h-} -> b{-r8h-})
    -> [a{-r8i-}]
==================================================


Reply via email to