[Haskell-cafe] Naming scheme for partial functions

Antoine Latter aslatter at gmail.com
Sun Feb 9 16:41:25 UTC 2014


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/20140209/8fbdd146/attachment.html>


More information about the Haskell-Cafe mailing list