bigben hat geschrieben: ↑Mi Aug 08, 2018 3:58 pm
jogo hat geschrieben: ↑Di Aug 07, 2018 3:50 pmDie Antwort von Roland ist auf meine Frage aber auch sehr erhellend.
Der hat auch mein Upvote bekommen, aber mal ehrlich, so richtig erhellt bin ich nicht:
both left and right assignment are parsed to the <- function
Warum? Wieso? Hat R jetzt einen Precompiler?
Wie wir alle wissen, arbeitet R interpretativ.
Aber egal ob Interpreter oder Compiler, muss die Eingabe überprüft werden, ob sie denn syntaktisch korrekt ist.
Dafür ist der Parser zuständig.
Was ersetzt dieser Parser sonst noch so?
Im Zuge der Sytaxprüfung baut der Parser auch gleich die passenden Strukturbäume.
Dies hat Roland in der Antwort sehr schön vorgeführt. Man könnte jetzt sogar diese Strukturbäume manipulieren. (Die Funktion D() müsste sowas machen.)
Ist das ein Sonderfall der in den Parser als Sonderfall fest einprogrammiert ist oder folgt das einer allgemeinen Regel
Im Fall von "->" halte ich es für einen Sonderfall im Sinne von:
Da gibt es einen Operator, der nicht auf eine namensgleiche Funktion abgebildet wird sondern auf eine andere Funktion bei Vertauschung der Operanden.
oder kann man das bei anderen Gelegenheiten selbst auch so implementieren?
Zumindest ist der Parser zugänglich, man kann ihn nutzen und seine Ergebnisse manipulieren, bevor man einen Ausdruck evaluiert.
Ich glaube ja schon lange, dass R einfach zu alt ist und dass zu viele Generationen da irgendwie dran 'rumgeschraubt haben und dass man da irgendwie mal durchwischen müsste, um das wieder elegant und durchschaubar zu machen.
Meiner Meinung nach trifft das hauptsächlich auf Funktionen zu, die bei ähnlicher Funktionalität verschiedenen Aufrufkonventionen/Parameternamen besitzen - dies wird üblicherweise durch verschiedene Zusatzpakete geheilt. (Das würde aber auch bedeuten, dass wenn man diese Heilung akzeptiert, schon Anfänger an entsprechende Zusatzpakete heranführen sollte.)
Was den syntaktischen Aufbau, die Geltungsbereiche der Bezeichner, die Kapselung der Funktionen angeht und noch so einige Sachen halte ich R für recht modern und gut gelungen. (Dass das S3-System nur ein Pseudoklassensystem darstellt - man könnte such sagen
sehr pragmatisch konstruiert ist, ist völlig klar ... hat aber auch gewisse Vorteile, die dann wieder in anderen Situationen zu Nachteilen werden.)
Gruß, Jörg