RFC: Add HasCallStack constraint to partial Data.List functions.
David Feuer
david.feuer at gmail.com
Fri Jun 4 17:01:43 UTC 2021
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 <
Henrik.Nilsson at nottingham.ac.uk> 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
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20210604/01348d61/attachment.html>
More information about the Libraries
mailing list