You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sehr oft schreibt man in DDP ganze Funktionen nur um einen Alias für einen kurzen Ausdruck zu haben.
Beispiel: Duden/Mathe - Ist_Teilbar
Die öffentliche Funktion Ist_Teilbar mit den Parametern dividend und divisor vom Typ Zahl und Zahl, gibt einen Boolean zurück, macht:
Gib dividend modulo divisor gleich 0 ist zurück.
Und kann so benutzt werden:
"<dividend> durch <divisor> teilbar ist"
Der Ausdruck ist ein one-liner, aber man muss eine ganze Funktionsdeklaration ausschreiben um den Alias benutzen zu können.
Dafür schlage ich Makros als neues Feature vor.
Ein Makro sähe so aus:
Der Alias "<dividend> durch <divisor> teilbar ist" steht für den Ausdruck dividend modulo divisor gleich 0 ist.
Hier wird der Ausdruck dividend modulo divisor gleich 0 ist dem Alias auf der linken Seite zugewiesen.
Die Argumente können dabei aus dem Alias abgeleitet werden. Hier wären es <dividend> und <divisor>.
Ein Makro sollte sich wie ein Funktionsaufruf verhalten. Jedes Argument sollte also bloß einmal ausgewertet werden, auch wenn es mehrmals benutzt wird.
Im Gegensatz zu einer Funktion wäre ein Makro allerdings generisch. DDP hat keine Typ-Inferenz und somit ist es nicht möglich den Typ der Argumente bloß aus der Makrodeklaration abzuleiten.
Deshalb würde der Makro erst typechecked wenn er auch aufgerufen wird, und Typ-Fehler würden erst dann gemeldet werden (ähnlich wie bei C++ templates).
Makros würden Funktionen auch nicht nutzlos machen, da ein Makro nur für einen einzelnen Ausdruck stehen kann.
Man könnte noch überlegen ob man nur Ausdrücke oder auch Statements erlaubt.
The text was updated successfully, but these errors were encountered:
Sehr oft schreibt man in DDP ganze Funktionen nur um einen Alias für einen kurzen Ausdruck zu haben.
Beispiel: Duden/Mathe - Ist_Teilbar
Der Ausdruck ist ein one-liner, aber man muss eine ganze Funktionsdeklaration ausschreiben um den Alias benutzen zu können.
Dafür schlage ich Makros als neues Feature vor.
Ein Makro sähe so aus:
Hier wird der Ausdruck
dividend modulo divisor gleich 0 ist
dem Alias auf der linken Seite zugewiesen.Die Argumente können dabei aus dem Alias abgeleitet werden. Hier wären es
<dividend>
und<divisor>
.Ein Makro sollte sich wie ein Funktionsaufruf verhalten. Jedes Argument sollte also bloß einmal ausgewertet werden, auch wenn es mehrmals benutzt wird.
Im Gegensatz zu einer Funktion wäre ein Makro allerdings generisch. DDP hat keine Typ-Inferenz und somit ist es nicht möglich den Typ der Argumente bloß aus der Makrodeklaration abzuleiten.
Deshalb würde der Makro erst typechecked wenn er auch aufgerufen wird, und Typ-Fehler würden erst dann gemeldet werden (ähnlich wie bei C++ templates).
Makros würden Funktionen auch nicht nutzlos machen, da ein Makro nur für einen einzelnen Ausdruck stehen kann.
Man könnte noch überlegen ob man nur Ausdrücke oder auch Statements erlaubt.
The text was updated successfully, but these errors were encountered: