
Yeah, that's a good point.Text and Bytestring (and other similar packages)
have been pushing the boundaries of 'unsafe' and are in wide use.
On Sun, Feb 9, 2014 at 11:38 PM, Michael Snoyman
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
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
wrote: It means "throws an *ex*ception."
On Sun, Feb 9, 2014 at 5:04 AM, Antoine Latter
wrote: What does "Ex" mean?
On Thu, Feb 6, 2014 at 8:59 PM, Michael Snoyman
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
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
wrote: > unprovenLast ? > On Jan 30, 2014 6:33 PM, "Michael Snoyman"
> 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@haskell.org >> http://www.haskell.org/mailman/listinfo/haskell-cafe >> >> > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe