[Haskell-cafe] Naming scheme for partial functions

Michael Snoyman michael at snoyman.com
Mon Feb 10 05:38:17 UTC 2014


I don't want to drag out bikeshedding either. But I *do* want to point out
that mono-traversable also includes a function unsafeHead, separate from
headEx. While headEx guarantees that it will throw an exception in the case
of an empty Foldable, unsafeHead may crash your program. This is the same
kind of distinction as vector and bytestring make between head and
unsafeHead.


On Sun, Feb 9, 2014 at 6:41 PM, Antoine Latter <aslatter at gmail.com> wrote:

> Not that it matters, but I think I prefer the "Unsafe" suffix. I'm not
> calling this version of "head" because I *want* an exception - I'm calling
> it because I want "Unsafe" (non-typechecked) behavior - I'm asserting that
> I've already validated some preconditions that aren't reflected in the type.
>
> But on the other hand I've always found functions like "fromMaybe" easier
> to work with than functions like "fromJust".
>
> Enough bikeshedding! If it works in your packages that's fine, and these
> are the sort of functions I have no complaints about reimplementing on my
> own.
>
>
> On Sat, Feb 8, 2014 at 11:25 PM, Michael Snoyman <michael at snoyman.com>wrote:
>
>> It means "throws an *ex*ception."
>>
>>
>> On Sun, Feb 9, 2014 at 5:04 AM, Antoine Latter <aslatter at gmail.com>wrote:
>>
>>> What does "Ex" mean?
>>>
>>>
>>> On Thu, Feb 6, 2014 at 8:59 PM, Michael Snoyman <michael at snoyman.com>wrote:
>>>
>>>> Thanks for the input. We ended up going with an `Ex` suffix, e.g.
>>>> headEx, lastEx.
>>>>
>>>>
>>>> On Fri, Feb 7, 2014 at 4:53 AM, Tikhon Jelvis <tikhon at jelv.is> wrote:
>>>>
>>>>> For what it's worth, OCaml's Core library does this with _exn, so they
>>>>> would call a partial last "last_exn". I would actually prefer an
>>>>> abbreviation of some sort (like exn) as long as it's a consistent
>>>>> convention. Using a full word like "exception" or "partial" adds to much
>>>>> noise in my opinion, especially if the base name (like "last") is shorter
>>>>> than the suffix!
>>>>>
>>>>> Also, I think a suffix would be better than a prefix, if only to group
>>>>> things conveniently when sorted alphabetically.
>>>>>
>>>>>
>>>>> On Thu, Jan 30, 2014 at 9:36 AM, Atze van der Ploeg <atzeus at gmail.com>wrote:
>>>>>
>>>>>> unprovenLast ?
>>>>>> On Jan 30, 2014 6:33 PM, "Michael Snoyman" <michael at snoyman.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Greg Weber and I have been discussing some changes to
>>>>>>> mono-traversable[1]. One of the modules we provide is Data.NonNull, which
>>>>>>> provides total versions of functions like `last`. A change we're looking at
>>>>>>> would require having a partial version of `last` defined in a separate
>>>>>>> typeclass (IsSequence), which would allowing for more optimized
>>>>>>> implementations of the total `last` function for datatypes which support it
>>>>>>> (e.g., strict ByteStrings).
>>>>>>>
>>>>>>> But what should we name it? I'm sure everyone's familiar with the
>>>>>>> `unsafe` naming convention, but that's not appropriate here: standard usage
>>>>>>> shows `unsafe` meaning a function which can cause a segfault.
>>>>>>>
>>>>>>> I initially named it `partialLast`, but partial can also imply
>>>>>>> partial function application. Greg brought up the idea of suffixing the
>>>>>>> function with something like `Throws` or `Errors`, which I think I'm a bit
>>>>>>> partial to myself[2].
>>>>>>>
>>>>>>> So my questions are:
>>>>>>>
>>>>>>> * Is there some already used naming scheme out there for partial
>>>>>>> functions which I've missed?
>>>>>>> * Do people have any ideas to throw into the mix?
>>>>>>>
>>>>>>> Michael
>>>>>>>
>>>>>>> [1] https://github.com/snoyberg/mono-traversable/pull/21
>>>>>>> [2] Pardon the pun.
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Haskell-Cafe mailing list
>>>>>>> Haskell-Cafe at haskell.org
>>>>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> Haskell-Cafe mailing list
>>>>>> Haskell-Cafe at haskell.org
>>>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Haskell-Cafe mailing list
>>>> Haskell-Cafe at haskell.org
>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140210/c1db7c77/attachment.html>


More information about the Haskell-Cafe mailing list