Proposal: rename Data.Map.fromAscList to
Data.Map.unsafeFromAscList
Chris Eidhof
chris at eidhof.nl
Fri Apr 24 09:21:20 EDT 2009
Hi,
On 24 apr 2009, at 14:51, Neil Mitchell wrote:
> I totally disagree. unsafe/unchecked means nothing other than "beware
> of the bogey monster", or for most Haskell users, "just another
> function that might launch missiles". fromAscList has the specific
> precondition for this function in the name. Should we call unsafeHead?
> uncheckedHead? mightCrashIfNotConsHead?
No, but the functions you mentioned do fail immediately. If I use a
head on an empty list I get an error immediately. If I use fromAscList
incorrectly I get an error only when I try to lookup elements. This
makes it hard to debug if you didn't make this error before. I don't
mind a runtime error in this case, but I very much want to know where
my bug is.
Thanks,
-chris
>
>
> Thanks
>
> Neil
>
> On Fri, Apr 24, 2009 at 1:36 PM, Christian Maeder
> <Christian.Maeder at dfki.de> wrote:
>>
>> There is an old thread about this, where Daan suggested "unchecked"
>> instead of "unsafe".
>> http://www.haskell.org/pipermail/haskell/2004-March/013787.html
>>
>> "unsafe" reminds to "IO" stuff.
>>
>> Didn't you read the comment about fromAscList? Isn't the name long
>> enough to scare you?
>>
>> Would you have not taken "unsafeFromAscList" under the same
>> circumstances you've chosen "fromAscList"?
>>
>> Cheers Christian
>>
>> Chris Eidhof wrote:
>>> Hey all,
>>>
>>> I had some code where the function elems said a certain key was
>>> present,
>>> but looking it up returned a Nothing. After some debugging I found
>>> out
>>> that it did work if I used Prelude's lookup in combination with
>>> toList.
>>> After even more debugging it turned out there was a fromAscList
>>> somewhere deep down in my code where it should have been a fromList.
>>>
>>> Now, I know that I shouldn't have used fromAscList and that it was
>>> totally my fault. I also realize this is something that can't
>>> easily be
>>> checked using the type system, so I propose we do the next best
>>> thing:
>>> prefix the name with 'unsafe'.
>>>
>>> -chris
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://www.haskell.org/mailman/listinfo/libraries
>>
More information about the Libraries
mailing list