[project @ 2003-07-03 16:22:16 by simonpj]
authorsimonpj <unknown>
Thu, 3 Jul 2003 16:22:17 +0000 (16:22 +0000)
committersimonpj <unknown>
Thu, 3 Jul 2003 16:22:17 +0000 (16:22 +0000)
-----------------------
Type defaulting in GHCi
-----------------------

[Merge to stable branch, I think.]

[Part 2 to this commit: add Eq and Ord, to allow

[] == []

at the prompt.

      Extend type defaulting in GHCi so that

ghci>  []
[]

      works.  Suggested by Ralf Hinze.

ghc/compiler/typecheck/TcSimplify.lhs
ghc/docs/users_guide/ghci.sgml

index 31f3255..ff51c42 100644 (file)
@@ -50,10 +50,10 @@ import Id           ( idType, mkUserLocal )
 import Var             ( TyVar )
 import Name            ( getOccName, getSrcLoc )
 import NameSet         ( NameSet, mkNameSet, elemNameSet )
-import Class           ( classBigSig )
+import Class           ( classBigSig, classKey )
 import FunDeps         ( oclose, grow, improve, pprEquationDoc )
 import PrelInfo                ( isNumericClass, isCreturnableClass, isCcallishClass ) 
-import PrelNames       ( splitName, fstName, sndName, showClassKey )
+import PrelNames       ( splitName, fstName, sndName, showClassKey, eqClassKey, ordClassKey)
 import HscTypes                ( GhciMode(Interactive) )
 
 import Subst           ( mkTopTyVarSubst, substTheta, substTy )
@@ -1770,7 +1770,8 @@ disambigGroup ghci_mode dicts
 
     std_default_class cls
       =  isNumericClass cls
-      || (ghci_mode == Interactive && cls `hasKey` showClassKey)
+      || (ghci_mode == Interactive && 
+         classKey cls `elem` [showClassKey, eqClassKey, ordClassKey])
                -- In interactive mode, we default Show a to Show ()
                -- to avoid graututious errors on "show []"
 
index dfcb955..8fa7ff2 100644 (file)
@@ -659,7 +659,8 @@ Wed Mar 14 12:23:13 GMT 2001
     However, it is tiresome for the user to have to specify the type, so GHCi extends Haskell's type-defaulting
     rules (Section 4.3.4 of the Haskell 98 Report (Revised)) as follows.  If the expression yields a set of
     type constraints that are all from standard classes (<literal>Num</literal>, <literal>Eq</literal> etc.), 
-   and at least one is either a numeric class <emphasis>or the <literal>Show</literal> class</emphasis>,
+   and at least one is either a numeric class <emphasis>or the <literal>Show</literal>, 
+   <literal>Eq</literal>, or <literal>Ord</literal> class</emphasis>,
    GHCi will try to use one of the <literal>default</literal> types, just as described in the Report.
    </para>
     </sect2>