Re: needing some Hugs

Anthony Clayden <[email protected]> Sun, 8 Jul 2018 01:15:30 +1200
Newsgroups gmane.comp.lang.haskell.hugs.user
Message-ID <CAM7nRYQApa_fs9Zmo53F2-8FnaJhES-rQ9P3z4TQmeHaKbCNjw@mail.gmail.com>
--===============1671356871676762542==
Content-Type: multipart/alternative; boundary="000000000000cd621f05706893aa"

--000000000000cd621f05706893aa
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Thanks Doug for your words of encouragement.

[Doug]
| | hugs in preference to "monstrous" ghc/ghci. It's lightweight ...

I agree in 'calculator mode', lightweight is a definite advantage.
It's a terrific way to ease into functional programming.
Haskell syntax of that era is aesthetically at the sweet spot between
succinct-terse-cryptic-hieroglyphics-line noise.

| | and its language is properly documented (in the Haskell 98 report),

Hmm. My OP is clear I want Hugs 2006 with all extensions. So more than H98,
indeed more than H2010.

| | neither of which can be said of ghc.

I think you're being over-generous to Hugs. Both Hugs and GHC document each
feature individually.
The trouble is they don't document how features interact.
(Occasionally there's a 'grand unifying theorem', like OutsideIn(X).
 I'm afraid the grand unifying type-in-type/path to Dependent Types is just
too much for a bear of very little brain.)
So your point about 2^99 languages is well made.

Specifically for anonymous/extensible record systems, all of them
(TRex -- probably special hard coding, HList, Ur/web -- beyond Haskell but
not extensible,
 endless libraries on Hackage -- mostly using TH boilerplate -- despite
that mostly not extensible)
rely on the interaction of Overlaps and FunDeps -- hence the focus of my
rant.
GHC's implementation is broken; Hugs just plays safe and disallows any
interaction.

All the hip kids play in the lenses space. I guess they want their code to
look like Perl or TECO, brogrammer style.
Sometime they'll discover why hierarchical data structures fell so badly
out of fashion in the 1980's.


On Sat, 7 Jul 2018 at 2:46 AM, Simon Peyton Jones wrote:

>
> I think that=E2=80=99s a little unfair to GHC =F0=9F=98=8A. If you don't =
give any language
> extension flags you get Haskell 98 -- or nowadays Haskell 2010.
>

Thanks Simon, but that's true only up to a point (Lord Copper).
I don't configure for pure H2010, see above. I do configure for a handful
of extensions;
I do wish error messages didn't suggest all sorts of high-fallutin' things
I might have meant when I merely made a typo.

GHC's syntax space is getting so crowded now that a typo is quite likely to
get mis-parsed as trying to use some feature I didn't even know existed.
Then I appreciate Hugs doesn't confuse me with those possibilities.

Oh, and as Doug mentions in his follow-up message: Libraries.
I get it that's strictly-speaking not within GHC's bailiwick.
I don't want all that abstruse category-theory shit.
I want `length` applicable to a List and only to a List. And not to throw
messages about instances of Foldable.
So when Neil says "Hugs doesn't have any modern libraries " I'm seeing that
as another benefit.

Yes I know I could opt for a simpler Prelude; I could override the type for
`length`.
I resent that casual users/newbies must jump through hoops to do that.
The onus should be on those who want fancy stuff to jump through the hoops
-- for them it's not a burden.

Like Doug, I'm not aiming to produce production code.
Nor production-level mods to any compiler.

AntC


> |  -----Original Message-----
> |  From: Hugs-Users <[email protected]> On Behalf Of Doug
> McIlroy
> |  Sent: 06 July 2018 15:04
> |  To: [email protected]
> |  Subject: Re: [Hugs-users] needing some Hugs
> |
> |  I have little constructive to say on the topic, except that I typicall=
y
> use
> |  hugs in preference to "monstrous"
> |  ghc/ghci. It's lightweight and its language is properly documented (in
> the
> |  Haskell 98 report), neither of which can be said of ghc. Its rudimenta=
ry
> |  instrumentation (:set +s) is more useful than ghc's equivalent, though
> |  admittedly ghc has many debugging features I haven't explored.
> |
> |  That said, it should be noted that I do not use Haskell (nor, nowadays=
,
> any
> |  other language) for writing production code.
> |
> |  Apropos of language, a couple of years ago I noted that ghc implements
> 2^99
> |  languages, not one. (There were 99 non-antonymous language pragmas;
> there
> |  may be more now.) Who can know what terrors lurk there.
> |  My first attempt to investigate the field (turn on all 99) caused a
> compiler
> |  panic, since fixed.
> |
> |  Early on, I encountered a hugs bug: garbage collection in the middle o=
f
> a
> |  bignum operation caused havoc.
> |  Having never looked at the hugs source before, I was able quite quickl=
y
> |  pinpoint the offending code; the maintainers corrected it almost
> overnight.
> |  That heart-warming experience hasn't worn off, even though the
> maintainers
> |  have moved on.
> |
> |  Doug
> |  _______________________________________________
> |  Hugs-Users mailing list
> |  [email protected]
> |  http://mail.haskell.org/cgi-bin/mailman/listinfo/hugs-users
> _______________________________________________
> Hugs-Users mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/hugs-users
>

--000000000000cd621f05706893aa
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div><div dir=3D"auto">Thanks Doug for your words of encouragement.</div><d=
iv dir=3D"auto"><br></div><div dir=3D"auto">[Doug]</div></div><div dir=3D"a=
uto">| | hugs in preference to &quot;monstrous&quot;=C2=A0ghc/ghci. It&#39;=
s lightweight ...</div><div dir=3D"auto"><br></div><div dir=3D"auto">I agre=
e in &#39;calculator mode&#39;, lightweight is a definite advantage.</div><=
div dir=3D"auto">It&#39;s a terrific way to ease into functional programmin=
g.</div><div dir=3D"auto">Haskell syntax of that era is aesthetically at th=
e sweet spot between succinct-terse-cryptic-hieroglyphics-line noise.</div>=
<div dir=3D"auto"><br></div><div dir=3D"auto">| | and its language is prope=
rly documented (in the Haskell 98 report),</div><div dir=3D"auto"><br></div=
><div dir=3D"auto">Hmm. My OP is clear I want Hugs 2006 with all extensions=
. So more than H98, indeed more than H2010.</div><div dir=3D"auto"><br></di=
v><div dir=3D"auto">| | neither of which can be said of ghc.</div><div dir=
=3D"auto"><br></div><div dir=3D"auto">I think you&#39;re being over-generou=
s to Hugs. Both Hugs and GHC document each feature individually.</div><div =
dir=3D"auto">The trouble is they don&#39;t document how features interact.<=
/div><div dir=3D"auto">(Occasionally there&#39;s a &#39;grand unifying theo=
rem&#39;, like OutsideIn(X).=C2=A0</div><div dir=3D"auto">=C2=A0I&#39;m afr=
aid the grand unifying type-in-type/path to Dependent Types is just too muc=
h for a bear of very little brain.)</div><div dir=3D"auto">So your point ab=
out 2^99 languages is well made.</div><div dir=3D"auto"><br></div><div dir=
=3D"auto">Specifically for anonymous/extensible record systems, all of them=
</div><div dir=3D"auto">(TRex -- probably special hard coding, HList, Ur/we=
b -- beyond Haskell but not extensible,</div><div dir=3D"auto">=C2=A0endles=
s libraries on Hackage -- mostly using TH boilerplate -- despite that mostl=
y not extensible)</div><div dir=3D"auto">rely on the interaction of Overlap=
s and FunDeps -- hence the focus of my rant.</div><div dir=3D"auto">GHC&#39=
;s implementation is broken; Hugs just plays safe and disallows any interac=
tion.</div><div dir=3D"auto"><br></div><div dir=3D"auto">All the hip kids p=
lay in the lenses space. I guess they want their code to look like Perl or =
TECO, brogrammer style.</div><div dir=3D"auto">Sometime they&#39;ll discove=
r why hierarchical data structures fell so badly out of fashion in the 1980=
&#39;s.</div><div dir=3D"auto"><br></div><div><br><div class=3D"gmail_quote=
"><div dir=3D"ltr">On Sat, 7 Jul 2018 at 2:46 AM, Simon Peyton Jones wrote:=
<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bord=
er-left:1px #ccc solid;padding-left:1ex"><br>
I think that=E2=80=99s a little unfair to GHC =F0=9F=98=8A. If you don&#39;=
t give any language extension flags you get Haskell 98 -- or nowadays Haske=
ll 2010. <br>
</blockquote><div dir=3D"auto"><br></div><div dir=3D"auto">Thanks Simon, bu=
t that&#39;s true only up to a point (Lord Copper).</div><div dir=3D"auto">=
I don&#39;t configure for pure H2010, see above. I do configure for a handf=
ul of extensions;</div><div dir=3D"auto">I do wish error messages didn&#39;=
t suggest all sorts of high-fallutin&#39; things I might have meant when I =
merely made a typo.</div><div dir=3D"auto"><br></div><div dir=3D"auto">GHC&=
#39;s syntax space is getting so crowded now that a typo is quite likely to=
 get mis-parsed as trying to use some feature I didn&#39;t even know existe=
d.</div><div dir=3D"auto">Then I appreciate Hugs doesn&#39;t confuse me wit=
h those possibilities.</div><div dir=3D"auto"><br></div><div dir=3D"auto">O=
h, and as Doug mentions in his follow-up message: Libraries.=C2=A0</div><di=
v dir=3D"auto">I get it that&#39;s strictly-speaking not within GHC&#39;s b=
ailiwick.</div><div dir=3D"auto">I don&#39;t want all that abstruse categor=
y-theory shit.</div><div dir=3D"auto">I want `length` applicable to a List =
and only to a List. And not to throw messages about instances of Foldable.<=
/div><div dir=3D"auto">So when Neil says &quot;<span style=3D"white-space:p=
re-wrap;background-color:rgb(255,255,255)">Hugs doesn&#39;t have any modern=
 libraries </span>&quot; I&#39;m seeing that as another benefit.</div><div =
dir=3D"auto"><br></div><div dir=3D"auto">Yes I know I could opt for a simpl=
er Prelude; I could override the type for `length`.=C2=A0</div><div dir=3D"=
auto">I resent that casual users/newbies must jump through hoops to do that=
.</div><div dir=3D"auto">The onus should be on those who want fancy stuff t=
o jump through the hoops -- for them it&#39;s not a burden.</div><div dir=
=3D"auto"><br></div><div dir=3D"auto">Like Doug, I&#39;m not aiming to prod=
uce production code.</div><div dir=3D"auto">Nor production-level mods to an=
y compiler.</div><div dir=3D"auto"><br></div><div dir=3D"auto">AntC</div><d=
iv dir=3D"auto"><br></div><blockquote class=3D"gmail_quote" style=3D"margin=
:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
|=C2=A0 -----Original Message-----<br>
|=C2=A0 From: Hugs-Users &lt;<a href=3D"mailto:[email protected]=
rg" target=3D"_blank">[email protected]</a>&gt; On Behalf Of D=
oug McIlroy<br>
|=C2=A0 Sent: 06 July 2018 15:04<br>
|=C2=A0 To: <a href=3D"mailto:[email protected]" target=3D"_blank">hug=
[email protected]</a><br>
|=C2=A0 Subject: Re: [Hugs-users] needing some Hugs<br>
|=C2=A0 <br>
|=C2=A0 I have little constructive to say on the topic, except that I typic=
ally use<br>
|=C2=A0 hugs in preference to &quot;monstrous&quot;<br>
|=C2=A0 ghc/ghci. It&#39;s lightweight and its language is properly documen=
ted (in the<br>
|=C2=A0 Haskell 98 report), neither of which can be said of ghc. Its rudime=
ntary<br>
|=C2=A0 instrumentation (:set +s) is more useful than ghc&#39;s equivalent,=
 though<br>
|=C2=A0 admittedly ghc has many debugging features I haven&#39;t explored.<=
br>
|=C2=A0 <br>
|=C2=A0 That said, it should be noted that I do not use Haskell (nor, nowad=
ays, any<br>
|=C2=A0 other language) for writing production code.<br>
|=C2=A0 <br>
|=C2=A0 Apropos of language, a couple of years ago I noted that ghc impleme=
nts 2^99<br>
|=C2=A0 languages, not one. (There were 99 non-antonymous language pragmas;=
 there<br>
|=C2=A0 may be more now.) Who can know what terrors lurk there.<br>
|=C2=A0 My first attempt to investigate the field (turn on all 99) caused a=
 compiler<br>
|=C2=A0 panic, since fixed.<br>
|=C2=A0 <br>
|=C2=A0 Early on, I encountered a hugs bug: garbage collection in the middl=
e of a<br>
|=C2=A0 bignum operation caused havoc.<br>
|=C2=A0 Having never looked at the hugs source before, I was able quite qui=
ckly<br>
|=C2=A0 pinpoint the offending code; the maintainers corrected it almost ov=
ernight.<br>
|=C2=A0 That heart-warming experience hasn&#39;t worn off, even though the =
maintainers<br>
|=C2=A0 have moved on.<br>
|=C2=A0 <br>
|=C2=A0 Doug<br>
|=C2=A0 _______________________________________________<br>
|=C2=A0 Hugs-Users mailing list<br>
|=C2=A0 <a href=3D"mailto:[email protected]" target=3D"_blank">Hugs-Us=
[email protected]</a><br>
|=C2=A0 <a href=3D"http://mail.haskell.org/cgi-bin/mailman/listinfo/hugs-us=
ers" rel=3D"noreferrer" target=3D"_blank">http://mail.haskell.org/cgi-bin/m=
ailman/listinfo/hugs-users</a><br>
_______________________________________________<br>
Hugs-Users mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank">Hugs-Users@hask=
ell.org</a><br>
<a href=3D"http://mail.haskell.org/cgi-bin/mailman/listinfo/hugs-users" rel=
=3D"noreferrer" target=3D"_blank">http://mail.haskell.org/cgi-bin/mailman/l=
istinfo/hugs-users</a><br>
</blockquote></div></div>

--000000000000cd621f05706893aa--

--===============1671356871676762542==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSHVncy1Vc2Vy
cyBtYWlsaW5nIGxpc3QKSHVncy1Vc2Vyc0BoYXNrZWxsLm9yZwpodHRwOi8vbWFpbC5oYXNrZWxs
Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vaHVncy11c2Vycwo=

--===============1671356871676762542==--