Re: RFC: Add HasCallStack constraint to partial Data.List functions.

David Feuer <[email protected]>
Newsgroups gmane.comp.lang.haskell.libraries
Message-ID <CAMgWh9tDioLS3K9DgaUz0J0-nRDe2YwzZpy7GZK0at=4_Ba1hg@mail.gmail.com>
head and tail are basic ... in Lisp. In Haskell, they're effectively used
... *checks notes* ... in the MonadFix instance for []. Almost every good
use of (!!) is for something that really should use an infinite list

  data Stream a = a :< Stream a

but that uses a list for convenience.

On Fri, Jun 4, 2021, 12:50 PM Henrik Nilsson <
[email protected]> wrote:

> Hi Ryan,
>
>  > Regarding making systemic improvements less likely: I don't think we
>  > should choose to bear costs, simply because the pain of those costs
>  > may potentially motivate us to come up with something better.  If
>  > Oleg's proposed solution actually makes it *harder* for -xc
>  > improvements to be
>  > made, then I would certainly agree that we shouldn't use it as a
>  > stopgap.
>
> Fair point about not choose to bear costs *just* in the hope something
> better comes along. My main point was that the suggested approach in my
> opinion is too un-principled and too partial to have much appeal,
> especially when it is clear that solutions that are both principled
> and complete do exist, and that most of the required machinery is
> already in place.
>
> But others clearly disagree, although, in part for reasons that has
> more to do with philosophy of language design and partiality vs.
> totality, than the practical need to pinpoint the site of errors
> in programs in a language that was designed to allow partial
> functions.
>
>  > Regarding teaching: although I don't want to usurp the role of the
>  > educator - and it would be fantastic to get some input from actual
>  >  educators on this thread -
>
> Just for the record, I have one feet solidly in each of the
> educational and industrial camps.
>
>  > I don't think we should simply say that
>  > because these things exist, their teachability is important.  Let's
>  > let people tell us, specifically, that they consider `head` to be
>  > important to teaching students, and why, and then we can make sure
>  > it's suitable for them.
>
> Well, head and tail *are* basic. There are no two ways about that.
> But there were also other affected functions, like
> list indexing, or indexing into other collection types,
> that I at least consider entirely reasonable (as long as the
> time complexity is taken into account properly when that is
> a consideration).
>
> The basic points I were making, to recap and rephrase, were that
>
> a) Type classes in general are considered a bit of a hurdle
>     when teaching beginners. Thus, more of them (for basic
>     functions) is not helpful.
>
> b) I don't find mixing what amounts to operational annotations
>     to assist with particular approaches to debugging into the
>     types of functions to be appealing at all.
>
>     In fact, I feel rather strongly that it is a fundamentally flawed
>     approach.
>
>     The types should tell me something important about what things are.
>     Not about how to go about debugging them.
>
> Best,
>
> /Henrik
>
>
>
> This message and any attachment are intended solely for the addressee
> and may contain confidential information. If you have received this
> message in error, please contact the sender and delete the email and
> attachment.
>
> Any views or opinions expressed by the author of this email do not
> necessarily reflect the views of the University of Nottingham. Email
> communications with the University of Nottingham may be monitored
> where permitted by law.
>
>
>
>
> _______________________________________________
> Libraries mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>

_______________________________________________
Libraries mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.