DMUG-Archiv 2006

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Kurzform

Hallo zusammen,

Die Funktion einer Funktion benutze ich immer dann; wenn man mit der üblichen Syntax nicht mehr weiter kommt, also z.B. wenn eine BlankSequence auf eine BlankSequence folgt:

plustimes[x__][y__] := Plus @@ {x} + Times @@ {y}
plustimes[a, b, c][e, f, g]

ergibt

a + b + c + e*f*g


wenn BlankSequences typfrei aufeinander folgen, dann hat man die falsche Funktionssignatur gewählt: Eine Funktion badFct[a__, b__] ist wegen der Definition von BlankSequence unbrauchbar um "a" von "b" zu unterscheiden (da gleichranging mit badFct[a__]), wenn nicht wenigstens der Typ wechselt: aFct[a__Integer, b__Real]. Mathematica hat auch insofern mit Mathematik zu tun, dass nicht jeder Ausdruck, der notiert werden kann, nur darum ein mathematischer Ausdruck ist, weil er aus built-in Symbolen besteht.

Wenn man die Typen nicht kennt und die Längen auch nicht, dann benutzt man Listen:

In[6]:=
Clear[klamserUeblicheSyntax];
klamserUeblicheSyntax[a_List, b_List] :=
Which[Length[a] > 0 && Length[b] > 0, Plus @@ a + Times @@ b,
     Length[a] > 0 && Length[b] == 0, Plus @@ a,
     Length[a] == 0 && Length[b] > 0, Times @@ b,
     True, 0]

mit anderen Worten

In[19]:=
Clear[klamserSyntax];
klamserSyntax[a_List, b_List] := Sign[Length[a]] (Plus @@ a) + Sign[Length[b]] (Times @@ b)

und fort ist die Versuchung, etwas "unübliches" zu konstruieren.

Gruss
Udo.


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html