Erlang standard library quirks

Håkan Stenholm hokan.stenholm@REDACTED
Sun Jan 29 23:10:26 CET 2006


Richard Cameron wrote:

>
> On 29 Jan 2006, at 03:05, James Hague wrote:
>
>> What standard library quirks bug you?
>
>
> to_upper/1 and to_lower/1 are defined in the httpd_util module rather  
> than in string.
>
> I invariably end up re-implementing these functions every time I want  
> to use them, just because I find it criminally perverse to have the  
> words httpd_util:to_upper(Str) in an application which doesn't do  
> anything involving the http protocol.
>
> Richard.
>
Worse is that it only works properly for the ASCII subset of latin-1 
(the char encoding used by erlang), so å, ä, ö, é and similar chars 
won't be case converted at all. See:

===========================================================

otp_src_R10B-8/lib/inets/src/http_server/httpd_util.erl:

%% to_upper

to_upper(Str) ->
    http_util:to_upper(Str).

%% to_lower

to_lower(Str) ->
    http_util:to_lower(Str).

===========================================================


otp_src_R10B-8/lib/inets/src/http_lib/http_util.erl:


to_upper(Str) ->
    to_upper(Str, []).

to_upper([C|Cs], Acc) when C >= $a, C =< $z ->
    to_upper(Cs, [C-($a-$A)| Acc]);
to_upper([C|Cs], Acc) ->
    to_upper(Cs, [C | Acc]);
to_upper([], Acc) ->
    lists:reverse(Acc).

to_lower(Str) ->
    to_lower(Str, []).
to_lower([C|Cs], Acc) when C >= $A, C =< $Z ->
    to_lower(Cs, [C+($a-$A)| Acc]);
to_lower([C|Cs], Acc) ->
    to_lower(Cs, [C| Acc]);
to_lower([], Acc) ->
    lists:reverse(Acc).



More information about the erlang-questions mailing list