[erlang-questions] string:substr/2 gives confusing error message

Valentin Micic <>
Fri Dec 5 17:12:43 CET 2008


Not for high enough value of 0 ;-))).

V.
----- Original Message ----- 
From: "Bengt Kleberg" <>
Cc: "''erlang-questions'" <>
Sent: Friday, December 05, 2008 4:51 PM
Subject: Re: [erlang-questions] string:substr/2 gives confusing error 
message


> Greetings,
>
> Is not ``0 div N = 0'' an error for N equal to 0?
>
>
> bengt
>
> On Fri, 2008-12-05 at 16:36 +0200, Valentin Micic wrote:
>> The way I see it, you’re doing a right thing – returning an empty
>> string. It is just a matter of covering another pattern: substr( [],
>> N ) -> []. Unless you want to argue that 0 div N = 0 is an error? J
>>
>>
>>
>> V.
>>
>>
>>
>>
>> ______________________________________________________________________
>> From: Robert Virding [mailto:]
>> Sent: 05 December 2008 03:51 PM
>> To: Valentin Micic
>> Cc: Vlad Dumitrescu; erlang-questions
>> Subject: Re: [erlang-questions] string:substr/2 gives confusing error
>> message
>>
>>
>>
>>
>> I think in cases like this you will find that the person who wrote the
>> module (me most likely) was just trying to be kind and return
>> something "sensible" if the arguments are of the right type and not
>> too crazy. Like asking for more characters from a list than exists.
>>
>> I have now thought this over and come to the conclusion that you
>> probably shouldn't be kind but generate an error in these situations.
>> Being kind will often come back and bite you later in an unpleasant
>> way.
>>
>> I personally don't see any problem with a function_clause error as
>> these means that there was a bad argument. It could be helpful if the
>> error came from the function which is called, but as long as it comes
>> from a function which is cleary related to the call, as in this case,
>> I don't worry about it.
>>
>> How to return errors is a difficult problem. If you catch them at a
>> higher level how do you then return a helpful error? And helpful fo
>> whom?
>>
>> Robert
>>
>> 2008/12/5 Valentin Micic <>
>>
>> I think that depends how you want to look at it...
>> One may argue that
>>        string:substr([], 2 )
>> does not make much sense as a statement, but then, I'd say that:
>>        string:substr("1", 2 )
>> does not make to much sense either, and yet it returns [].
>> IMO, both functions should behave the same way, and to be pragmatic,
>> return
>> an empty list (not a badarg exception).
>>
>> V.
>>
>>
>>
>> -----Original Message-----
>> From: 
>> [mailto:] On Behalf Of Vlad
>> Dumitrescu
>> Sent: 05 December 2008 12:12 PM
>> To: erlang-questions
>> Subject: [erlang-questions] string:substr/2 gives confusing error
>> message
>>
>> Hi!
>>
>> Calling string:substr/2 with erroneous arguments gives a
>> non-informative error message
>>
>> ()1> string:substr([], 2).
>> ** exception error: no function clause matching string:substr2([],2)
>>
>> Shouldn't it be badarg instead, or something similar?
>>
>> Also, the strings module documentation doesn't mention what are the
>> cases when the function will fail. (A quick glance shows that there
>> are other functions in the same situation).
>>
>> best regards,
>> Vlad
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://www.erlang.org/mailman/listinfo/erlang-questions
>>
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://www.erlang.org/mailman/listinfo/erlang-questions
>>
>>
>>
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://www.erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions 




More information about the erlang-questions mailing list