<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div style="" class="markdown-here-wrapper"
      data-md-url="Thunderbird">
      <p style="margin: 1.2em 0px ! important;">I’ve amended my
        suggestion to say basically “this type is a slight lie, here’s a
        flag/command to see the true type” – this way we aren’t scaring
        people with implementation guts, merely letting them see the
        guts for themselves and then think “I don’t care about this”
        (which is, I think, exactly what should happen; the worst
        scenario here is that the beginner falls into the “I’m an
        advanced user, I need all features, I need to know everything,
        so I’ll enable the flag” trap – which is why it’s important not
        to call it “an advanced type” or mention “if you know what
        you’re doing” or anything else like that).</p>
      <p style="margin: 1.2em 0px ! important;">I don’t agree that
        levity can be compared to Java’s “class” or “static” – not
        because it’s harder to understand, but because it’s much less
        widely used; I don’t feel that you need to know about levity in
        order to be a good Haskeller. Also, unboxed types don’t imply
        knowledge of levity – for instance, I’ve been successfully using
        unboxed types for a while, but I only found out about the true
        type of <code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;">($)</code>
        by complete accident (I think I queried the kind of <code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;">-></code>
        and then got curious about question marks). Of</p>
      <p style="margin: 1.2em 0px ! important;">On 02/06/2016 03:27 AM,
        Mihai Maruseac wrote:</p>
      <p style="margin: 1.2em 0px ! important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote
cite="mid:CAOMsUMLwO29J0Ld-TeCDe=n9b6YWf91jXPhhBoXBjseKaLzzOw@mail.gmail.com"
          type="cite">
          <pre wrap="">On Fri, Feb 5, 2016 at 7:09 PM, Richard Eisenberg <a class="moz-txt-link-rfc2396E" href="mailto:eir@cis.upenn.edu"><eir@cis.upenn.edu></a> wrote:
</pre>
          <blockquote type="cite">
            <pre wrap="">Another great question that has come up is about Haddock output (Hackage). I
think Haddock needs to add a facility where library authors can include
specializations of an overly general type. This can be done in commentary,
but it's not as prominent. Such a new feature would address the ($) problem,
as ($) :: forall (a :: *) (b :: *). (a -> b) -> a -> b is a specialization
of its real type. It would also help a great deal with FTP-related
generalizations.
</pre>
          </blockquote>
          <pre wrap="">
This goes hand in hand with Artyom's suggestion of a warning in GHCi
after showing the simpler type.

I'm thinking of a flag which enables/disables printing the simplest
type with warning (in GHCi) or footnote (or otherwise, in Haddock). We
can have the default behavior of the flag be either printing the
simpler type + extra (warning/footnote) or printing the longer type
and include a reference in our learning materials that beginners and
people confused by the long, complex and real type, can use
--use-simpler-types flag.

</pre>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 1.2em 0px ! important;"></p>
      <div
title="MDH:SSd2ZSBhbWVuZGVkIG15IHN1Z2dlc3Rpb24gdG8gc2F5IGJhc2ljYWxseSDigJx0aGlzIHR5cGUgaXMgYSBzbGlnaHQgbGllLCBoZXJlJ3MgYSBmbGFnL2NvbW1hbmQgdG8gc2VlIHRoZSB0cnVlIHR5
cGXigJ0g4oCTIHRoaXMgd2F5IHdlIGFyZW4ndCBzY2FyaW5nIHBlb3BsZSB3aXRoIGltcGxlbWVu
dGF0aW9uIGd1dHMsIG1lcmVseSBsZXR0aW5nIHRoZW0gc2VlIHRoZSBndXRzIGZvciB0aGVtc2Vs
dmVzIGFuZCB0aGVuIHRoaW5rIOKAnEkgZG9uJ3QgY2FyZSBhYm91dCB0aGlz4oCdICh3aGljaCBp
cywgSSB0aGluaywgZXhhY3RseSB3aGF0IHNob3VsZCBoYXBwZW47IHRoZSB3b3JzdCBzY2VuYXJp
byBoZXJlIGlzIHRoYXQgdGhlIGJlZ2lubmVyIGZhbGxzIGludG8gdGhlIOKAnEknbSBhbiBhZHZh
bmNlZCB1c2VyLCBJIG5lZWQgYWxsIGZlYXR1cmVzLCBJIG5lZWQgdG8ga25vdyBldmVyeXRoaW5n
LCBzbyBJJ2xsIGVuYWJsZSB0aGUgZmxhZ+KAnSB0cmFwIOKAkyB3aGljaCBpcyB3aHkgaXQncyBp
bXBvcnRhbnQgbm90IHRvIGNhbGwgaXQg4oCcYW4gYWR2YW5jZWQgdHlwZeKAnSBvciBtZW50aW9u
IOKAnGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5n4oCdIG9yIGFueXRoaW5nIGVsc2UgbGlr
ZSB0aGF0KS48YnI+PGJyPkkgZG9uJ3QgYWdyZWUgdGhhdCBsZXZpdHkgY2FuIGJlIGNvbXBhcmVk
IHRvIEphdmEncyDigJxjbGFzc+KAnSBvciDigJxzdGF0aWPigJ0g4oCTIG5vdCBiZWNhdXNlIGl0
J3MgaGFyZGVyIHRvIHVuZGVyc3RhbmQsIGJ1dCBiZWNhdXNlIGl0J3MgbXVjaCBsZXNzIHdpZGVs
eSB1c2VkOyBJIGRvbid0IGZlZWwgdGhhdCB5b3UgbmVlZCB0byBrbm93IGFib3V0IGxldml0eSBp
biBvcmRlciB0byBiZSBhIGdvb2QgSGFza2VsbGVyLiBBbHNvLCB1bmJveGVkIHR5cGVzIGRvbid0
IGltcGx5IGtub3dsZWRnZSBvZiBsZXZpdHkg4oCTIGZvciBpbnN0YW5jZSwgSSd2ZSBiZWVuIHN1
Y2Nlc3NmdWxseSB1c2luZyB1bmJveGVkIHR5cGVzIGZvciBhIHdoaWxlLCBidXQgSSBvbmx5IGZv
dW5kIG91dCBhYm91dCB0aGUgdHJ1ZSB0eXBlIG9mIGAoJClgIGJ5IGNvbXBsZXRlIGFjY2lkZW50
IChJIHRoaW5rIEkgcXVlcmllZCB0aGUga2luZCBvZiBgLSZndDtgIGFuZCB0aGVuIGdvdCBjdXJp
b3VzIGFib3V0IHF1ZXN0aW9uIG1hcmtzKS4gT2Y8YnI+PGJyPjxkaXYgY2xhc3M9Im1vei1jaXRl
LXByZWZpeCI+T24gMDIvMDYvMjAxNiAwMzoyNyBBTSwgTWloYWkgTWFydXNlYWMgd3JvdGU6PGJy
PjwvZGl2PjxibG9ja3F1b3RlIGNpdGU9Im1pZDpDQU9Nc1VNTHdPMjlKMExkLVRlQ0RlPW45YjZZ
V2Y5MWpYUGhoQm9YQmpzZUthTHp6T3dAbWFpbC5nbWFpbC5jb20iIHR5cGU9ImNpdGUiPjxwcmUg
d3JhcD0iIj5PbiBGcmksIEZlYiA1LCAyMDE2IGF0IDc6MDkgUE0sIFJpY2hhcmQgRWlzZW5iZXJn
ICZsdDtlaXJAY2lzLnVwZW5uLmVkdSZndDsgd3JvdGU6CjwvcHJlPjxibG9ja3F1b3RlIHR5cGU9
ImNpdGUiPjxwcmUgd3JhcD0iIj4KQW5vdGhlciBncmVhdCBxdWVzdGlvbiB0aGF0IGhhcyBjb21l
IHVwIGlzIGFib3V0IEhhZGRvY2sgb3V0cHV0IChIYWNrYWdlKS4gSQp0aGluayBIYWRkb2NrIG5l
ZWRzIHRvIGFkZCBhIGZhY2lsaXR5IHdoZXJlIGxpYnJhcnkgYXV0aG9ycyBjYW4gaW5jbHVkZQpz
cGVjaWFsaXphdGlvbnMgb2YgYW4gb3Zlcmx5IGdlbmVyYWwgdHlwZS4gVGhpcyBjYW4gYmUgZG9u
ZSBpbiBjb21tZW50YXJ5LApidXQgaXQncyBub3QgYXMgcHJvbWluZW50LiBTdWNoIGEgbmV3IGZl
YXR1cmUgd291bGQgYWRkcmVzcyB0aGUgKCQpIHByb2JsZW0sCmFzICgkKSA6OiBmb3JhbGwgKGEg
OjogKikgKGIgOjogKikuIChhIC0mZ3Q7IGIpIC0mZ3Q7IGEgLSZndDsgYiBpcyBhIHNwZWNpYWxp
emF0aW9uCm9mIGl0cyByZWFsIHR5cGUuIEl0IHdvdWxkIGFsc28gaGVscCBhIGdyZWF0IGRlYWwg
d2l0aCBGVFAtcmVsYXRlZApnZW5lcmFsaXphdGlvbnMuCjwvcHJlPjwvYmxvY2txdW90ZT48cHJl
IHdyYXA9IiI+CgpUaGlzIGdvZXMgaGFuZCBpbiBoYW5kIHdpdGggQXJ0eW9tJ3Mgc3VnZ2VzdGlv
biBvZiBhIHdhcm5pbmcgaW4gR0hDaQphZnRlciBzaG93aW5nIHRoZSBzaW1wbGVyIHR5cGUuCgpJ
J20gdGhpbmtpbmcgb2YgYSBmbGFnIHdoaWNoIGVuYWJsZXMvZGlzYWJsZXMgcHJpbnRpbmcgdGhl
IHNpbXBsZXN0CnR5cGUgd2l0aCB3YXJuaW5nIChpbiBHSENpKSBvciBmb290bm90ZSAob3Igb3Ro
ZXJ3aXNlLCBpbiBIYWRkb2NrKS4gV2UKY2FuIGhhdmUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Yg
dGhlIGZsYWcgYmUgZWl0aGVyIHByaW50aW5nIHRoZQpzaW1wbGVyIHR5cGUgKyBleHRyYSAod2Fy
bmluZy9mb290bm90ZSkgb3IgcHJpbnRpbmcgdGhlIGxvbmdlciB0eXBlCmFuZCBpbmNsdWRlIGEg
cmVmZXJlbmNlIGluIG91ciBsZWFybmluZyBtYXRlcmlhbHMgdGhhdCBiZWdpbm5lcnMgYW5kCnBl
b3BsZSBjb25mdXNlZCBieSB0aGUgbG9uZywgY29tcGxleCBhbmQgcmVhbCB0eXBlLCBjYW4gdXNl
Ci0tdXNlLXNpbXBsZXItdHlwZXMgZmxhZy4KCjwvcHJlPgoKPC9ibG9ja3F1b3RlPjxicj4="
style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;">​</div>
    </div>
  </body>
</html>