Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Makros #26

Open
bafto opened this issue Nov 14, 2023 · 0 comments
Open

Makros #26

bafto opened this issue Nov 14, 2023 · 0 comments
Labels
Vorschlag: Feature Neuer Feature

Comments

@bafto
Copy link
Member

bafto commented Nov 14, 2023

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.

@bafto bafto added the Vorschlag: Feature Neuer Feature label Nov 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Vorschlag: Feature Neuer Feature
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant