Code redundancy in PrelNames?
Simon Peyton Jones
simonpj at microsoft.com
Wed Jul 2 18:36:54 UTC 2014
| Is this redundancy a conscious choice or just an accident? If it's
It's an accident. Good catch.
I suggest eliminating methName and using varQual instead. The reverse doesn't work; varQual is used a lot!
thanks
Simon
| -----Original Message-----
| From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Jan
| Stolarek
| Sent: 02 July 2014 08:58
| To: ghc-devs at haskell.org
| Subject: Code redundancy in PrelNames?
|
| I'm looking at PrelNames.lhs and I believe there is some redundancy that
| can also lead to
| confusion. Consider these definitions:
|
| bindMName = methName gHC_BASE (fsLit ">>=") bindMClassOpKey
| arrAName = varQual aRROW (fsLit "arr") arrAIdKey
|
| Former is defined as "methName", while the latter is "varQual". These are
| defined like this:
|
| varQual :: Module -> FastString -> Unique -> Name
| varQual = mk_known_key_name varName
|
| mk_known_key_name :: NameSpace -> Module -> FastString -> Unique ->
| Name
| mk_known_key_name space modu str unique
| = mkExternalName unique modu (mkOccNameFS space str) noSrcSpan
|
| methName :: Module -> FastString -> Unique -> Name
| methName modu occ unique
| = mkExternalName unique modu (mkVarOccFS occ) noSrcSpan
|
| Expanding the call to mk_known_key_name in varQual the RHS of varQual
| becomes :
|
| mkExternalName unique modu (mkOccNameFS varName str) noSrcSpan
|
| Now, the call to "mkVarOccFS occ" in methName resolves to "mkOccNameFS
| varName occ", making the
| call to varQual identical to methName.
|
| Is this redundancy a conscious choice or just an accident? If it's
| conscious then what is the
| purpose? I spent several minutes trying to understand why bindMName and
| arrAName are defined
| differently. Names suggest that bindMName is a method, while arrAName is
| a qualified variable. I
| find this confusing and I think it would be better to drop varQual in
| favour of methName.
| Thoughts?
|
| Janek
| _______________________________________________
| ghc-devs mailing list
| ghc-devs at haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-devs
More information about the ghc-devs
mailing list