Ich arbeite daran, einige grundlegende Funktionen der linearen Algebra von NumPy/SciPy in Elixir zu implementieren. Mach dir keine Sorgen, ich weiß, das ist ein etwas frivoles Unterfangen. Ich mache es nur zum Spaß.Angepasste Typespec für Elixir-Funktion, um die Dimensionalität von zwei Listen zu gewährleisten, die als Argumente für eine Funktion verwendet werden
Derzeit habe ich bereits eine Reihe von Arbeitsfunktionen, aber vor allem mit Vektoren möchte ich einige benutzerdefinierte Verhaltensweisen hinzufügen. Das einfachste Beispiel wäre dies. Sagen wir, ich habe eine Funktion add_vectors/2
:
@spec add_vectors(list(), list()) :: list()
Aber dies nur überprüft, ob der Typ einfach in der Tat ist eine Liste:
def add_vectors(vec_1, vec_2) do
for {el_1, el_2} <- Enum.zip(vec_1, vec_2), do: el_1 + el_2
end
ich es leicht mit schmücken könnte. Ich weiß, dass Sie benutzerdefinierte Typespecs in Elixier definieren können, aber ich möchte nicht ein Makro schreiben müssen, das durchgeht, um es für jede Dimensionalität N zu definieren. Gibt es eine einfache Möglichkeit, dies zu tun?