Die scheinbar unterschiedlichen Ergebnisse ergeben sich aus der Tatsache, dass `\token_if_eq_meaning:NNTF` ein Makro ist und daraus, wie Makros ihre Argumente lesen.
Du hast recht: `\ifx` vergleicht die zwei als nächstes folgenden **Token**, das heißt im Fall von
\ifx{\ss}\ss ...\else...\fi
dass `{` mit `\ss` verglichen wird. Das sind zwei Token mit verschiedenem „Meaning“, also ist das Ergebnis falsch. Hier siehst du's auch nochmal:
1: \ifx{\ss}\ss gleich\else ungleich\fi % ungleich
2: \ifx\ss\ss gleich\else ungleich\fi % gleich
\end
Warum funktioniert's dann mit `\token_if_eq_meaning:NNTF`? Antwort: weil es ein Makro ist und ein Makro als Argument entweder *ein* *entweder* ein Token nimmt oder *oder* eine „braced group“ und dabei das äußere Paar „Braces“ entfernt. Darum gibt hier alles „gleich“
„gleich“:
\long\def\firstoftwo#1#2{#1}
\long\def\secondoftwo#1#2{#2}
\def\tokenifeqmeaning#1#2{%
\ifx#1#2\expandafter\firstoftwo\else\expandafter\secondoftwo\fi
}
1: \tokenifeqmeaning{\ss}\ss{gleich}{ungleich} % gleich
2: \tokenifeqmeaning\ss\ss{gleich}{ungleich} % gleich
2: \tokenifeqmeaning{\ss}{\ss}{gleich}{ungleich} % gleich
\end
----
Noch was zu expl3: ein `N` als Argument Specifier bedeutet immer *nimm ein Token* und *keine* braced group, im Gegensatz zu `n`, das genau das Gegenteil bedeutet. Als Code-Schreiber sollte man da drauf achten und User-Input ggf vorab „bearbeiten“, damit man der Funktion das richtige zu essen gibt. Man **Man darf sich nicht auf die Implementierung einer „Funktion“ verlassen, sondern nur auf ihre dokumentierte Funktionsweise.
Funktionsweise.**
Man könnte nun zwar mit einigem Recht behaupten, dass `\token_if_eq_meaning:NNTF {\ss}` das falsche Ergebnis liefert, da `.{` und `\ss` nun mal nicht gleich sind, aber es ist dokumentiert, dass das nicht geht:
> Note that an explicit begin group token cannot be tested in this way, as it is not a valid `N`-type argument.
Das heißt nichts anderes als, dass `\token_if_eq_meaning:NNTF {\ss}` falsche Anwendung ist.
ist. Das gleiche gilt für `\meinbefehl:N {ab}`. Das ist ebenfalls eine falsche Anwendung. Dass dann was anderes herauskommt als erwartet, sollte nicht überraschen.