<div dir="ltr">This is probably not really for the libraries list, but in the same vein as this discussion, I think it would be extremely helpful to have a way of banning functions that does *not* require changing the upstream library.  I would be thrilled to have a machine-checked ban on use of the 'head', 'tail', etc.<br></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Aug 31, 2018 at 11:36 AM Henrik Nilsson <<a href="mailto:Henrik.Nilsson@nottingham.ac.uk">Henrik.Nilsson@nottingham.ac.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Richard Eisenberg wrote:<br>
<br>
 > Maybe here's a concrete example:<br>
 ><br>
 > > -- | /Contains a call to 'error'./ Extract the first element of a<br>
 > list, which must be non-empty.<br>
 > > head                    :: [a] -> a<br>
 ><br>
 > In the end, it's the call to error that I want noted.<br>
<br>
Yes, whether the code of a function directly or indirectly calls "error"<br>
is well-defined property that could be documented.<br>
<br>
But note that this does not coincide with the following:<br>
<br>
 > > I think we want something like "partial even given input you can<br>
 > > successfully DeepSeq"<br>
 ><br>
 > That's the specification of the feature I'm after<br>
<br>
Consider e.g.<br>
<br>
    apply f x = f x<br>
<br>
As e.g.<br>
<br>
    apply head [] == _|_<br>
<br>
we'd have to conclude by the above definition that "apply" is partial.<br>
But it clearly does not "call error".<br>
<br>
Just to be clear, this does not correspond to how I understand<br>
partiality. Lots of higher order functions, like "map", then would have<br>
to called partial. And I am not sure that would be so helpful for<br>
the purpose of alerting (new) programmers to functions that one<br>
might argue should be avoided.<br>
<br>
So maybe something very clear and easy to understand, such as "contains<br>
call to error" is the best approach.<br>
<br>
Best,<br>
<br>
/Henrik<br>
<br>
<br>
<br>
This message and any attachment are intended solely for the addressee<br>
and may contain confidential information. If you have received this<br>
message in error, please contact the sender and delete the email and<br>
attachment. <br>
<br>
Any views or opinions expressed by the author of this email do not<br>
necessarily reflect the views of the University of Nottingham. Email<br>
communications with the University of Nottingham may be monitored <br>
where permitted by law.<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>