[GHC] #10963: Beginner-targeted language extension

GHC ghc-devs at haskell.org
Tue Oct 13 12:00:30 UTC 2015


#10963: Beginner-targeted language extension
-------------------------------------+-------------------------------------
        Reporter:  kanetw            |                Owner:
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.10.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by goldfire):

 I very much like your general idea here, but I have different suggestions
 as to the particulars. Here is my counter-proposal:

 * Extend `-XExtendedDefaultRules` to allow defaulting when one of the
 classes involved is `Foldable` or `Traversable`. (See the current rules
 [https://downloads.haskell.org/~ghc/latest/docs/html/users_guide
 /interactive-evaluation.html#extended-default-rules here].) This will
 mean, essentially, that there will be two lists of default types, one list
 at kind `*` and one at kind `* -> *`. Both lists should be settable by the
 user by the `default` directive. (GHC can figure out which list is being
 set quite easily.) The default `default` list for `* -> *` will be `[]`.

 * Add a new command to GHCi, `:binfo` (for "beginner info") (please
 suggest a better name) that is like `:info` but presents different
 information. It suppresses in-scope instances, but attempts to specialize
 a function's type and presents specializations, using heuristics. So when
 we say `:binfo find`, we'll see `Foldable t => (a -> Bool) -> t a -> Maybe
 a` but also `(a -> Bool) -> [a] -> Maybe a`.

 Would this address your use-case? One advantage to my counter-proposal is
 it means that you don't actually need students to specify a language
 extension, because `-XExtendedDefaultRules` is on by default in GHCi.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10963#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list