[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GH replacement proposal (includes a bit of Unicode)
From: |
Dirk Herrmann |
Subject: |
Re: GH replacement proposal (includes a bit of Unicode) |
Date: |
Wed, 26 May 2004 23:27:04 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.2) Gecko/20040220 |
Marius Vollmer wrote:
Dirk Herrmann <address@hidden> writes:
> Marius Vollmer wrote:
>
>> Hmm, yes, that might make sense. However, the -1 idiom is pretty
>> much standard for this kind of interface, no?
>
> I personally don't like this kind of 'one value, several meanings'
> paradigm:
>
> - What, if instead of -1, you pass -2? [...] - Readability suffers.
> [...]
Yes, I agree that the -1 idiom is not self explaining, but it is well
established and people will instantly recognize it. I'd even argue
What about the -2 and so on?
You are trying to explain why the -1 idiom is not too bad. But, why
do you think it is better? Do you want to save an identifier? This
can't really be the reason. Especially when looking at Paul's suggestion
to introduce a macro scm_from_locale_0string, which also introduces
a new identifier (and, Paul, I like your name better than my suggestion).
established and people will instantly recognize it. I'd even argue
that they will expect to be able to pass -1 for a 'len' parameter and
will be annoyed when they find out that Guile doesn't allow it.
That's a guess. Maybe you should ask the people what they would prefer?
Considering me as part of them, I would not prefer having the -1 idiom.
> SCM s = scm_from_locale_memory (str, len);
This can be had with scm_from_locale_string as well, of course. When
you write
SCM s = scm_from_locale_string (str, len);
thats just as readable, I'd say.
I agree that the function name scm_from_local_string when called with
arguments str and len is not less readable (even better, I would say) than
scm_from_locale_memory when called with arguments str and len. My point,
however, was rather in the direction of saying that if the len argument is
required since the application really knows the length, then passing it will
always be readable. This is in contrast to passing the magic number -1
if the
application does not know the length.
However, I think you oversimplify my concerns if you only boild it down to
the readability issue. There is also the aspect of type checking support
by the
compiler, the fact that code that works mostly with 0strings always has to
pass an unnecessary parameter, the fact that the scm_from_locale_string
function always has to handle the special -1 case, and probably more.
Summarized, I would just claim that it is not a good API design, since I
have
not yet seen a convincing argument in favor of it.
Considering your and Paul's answer, I would like to change my suggestion
to the following pair of functions:
SCM scm_from_locale_string (const unsigned char *str, size_t len);
SCM scm_from_locale_0string (const unsigned char *str);
Best regards,
Dirk
- Re: GH replacement proposal (includes a bit of Unicode), Marius Vollmer, 2004/05/12
- Re: GH replacement proposal (includes a bit of Unicode), Marius Vollmer, 2004/05/17
- Re: GH replacement proposal (includes a bit of Unicode), Marius Vollmer, 2004/05/17
- Re: GH replacement proposal (includes a bit of Unicode), Marius Vollmer, 2004/05/17
- Re: GH replacement proposal (includes a bit of Unicode), Marius Vollmer, 2004/05/17
- Re: GH replacement proposal (includes a bit of Unicode), Marius Vollmer, 2004/05/17