Very Disapointed about these views, Lonkero ...
First of all my poor english probably prevented me to fully understand the very substance of your first post ... (20020608 04:35), but I guess it's largely discussing about the duty of a programmer to check the values of variables used in order to prevent a lot of confusing things. If it is so, I of course agree with that ... Be sure I check the numeric variable $X before evaluatin' 1/$X !
Concerning the second post, I think, you certainly noticed that in my first post, I suggested too that "nothing was in everything". Well, but I don't agree with your statement "with nothing everychar matches".
the term "matches" is to vague to be USEFUL in a programming language (Thanx to Richard Howarth to have remind me this premacy of 'useful' coding against 'beauty of mathematical concepts' ! [Wink] ).
I realized that if I accept an Empty String matches a "A", tomorrow, one programming language developper will furbish me with the super tricky function SuperTrickyGraphicalInstr(), which will return 1 when I evaluate SuperTrickyGraphicalInstr(";","."), just simply it found a dot in ";".
Unless very much documented, a fine and consistent function should only evaluate Strict Identity, not 'belonging'.
You also state "it start counting from 1", unless you are the developper of KiXtart, that's only one point of view.
I personnally have to suggest would someone want to reflect the "theorical fact" that empty is in everything, in my example with string "ABCD", it should check the empty space before the A and shout : "Match !" and return 0 (suggested also and again by Richard Howarth).

In terms of consistency, reliability and efficiency, you didn't convince me, but did you ever tried ?

Nevertheless, this debate could be opened for other programming languages (or self proclammed Prog. Lang. !) :
I have tried equivalent functions with Turbo Pascal 7 [Pos() function] and MS Excel [localized Cherche() function] ...
With my example, the first returns 0, the second returns 1 ...