Elixier-Makro: Power ** -Funktion

8

Wenn ich durch die Elixir-Quelle schaue, sehe ich, dass Multiplikation wie folgt definiert ist:

%Vor%

Ich wollte eine ** Funktion machen, um Macht als Übung zu machen. Wenn ich es jedoch versuche, bekomme ich eine Ausnahme und ich kann nicht herausfinden, wie es richtig gemacht wird.

%Vor%

Gibt immer einen Fehler aus wie:

%Vor%

Ich habe versucht, es zu einem Makro zu machen, indem ich unquote benutze: "**" anstelle von **. Nicht sicher, warum das nicht funktioniert ...

Irgendwelche Ideen?

    
mgwidmann 02.05.2015, 21:23
quelle

2 Antworten

11

Binäre Operatoren sind in Elixir vordefiniert, was bedeutet, dass der Elixier-Parser nur eine Menge von Operatoren analysiert (die natürlich * enthalten). Sie können die Liste der Operatoren ungefähr in diesem Abschnitt des Parsers. Es gibt einige "freie" Operatoren, dh Operatoren, die Elixir analysieren kann, die aber nicht von der Sprache selbst verwendet werden (z. B. <~> ), aber ** gehört nicht zu ihnen.

Nur um zu zeigen, dass Parseable-Operatoren tun können, was Sie wollen:

%Vor%     
whatyouhide 02.05.2015, 22:00
quelle
3

Elixir hat keinen Operator ** . Sie können keinen neuen Infix-Operator definieren, ohne mindestens der Elixir-Parser und the Macro Modul .

    
Patrick Oscity 02.05.2015 22:01
quelle

Tags und Links