Infront Portfolio Manager

Die Funktion "Fold"

In der Referenz finden Sie folgende Beschreibung für diese Funktion:

Fold

Liste.Fold[Funktion;Startwert]

Ergebnistyp

Parameter

Modul

Resultat

Objekt

Funktion

Startwert


Die <Funktion> wird nacheinander auf jedes Listenelement im zweiten Argument und dem vorherigen Funktionsergebnis (beim ersten Mal dem <Startwert>) im ersten Argument angewendet. Gesamtergebnis ist das Ergebnis der letzten Auswertung. Die Iteratorfunktion "Fold" ist sehr abstrakt und vielseitig, da die Zwischenergebnisse einen beliebigen Objekttyp haben können (z. B. Listen, Zeitreihen).


Beispiel 1


List(1;2;3).Fold[#Plus;0]

Dieses Beispiel liefert die Summe der Zahlen in der Liste, also (((0 + 1) + 2) + 3) = 6.


Beispiel 2


$Liste.Fold[#Append;EmptyList]

Dieses Beispiel fügt alle Listen zusammen, liefert also dasselbe wie "$Liste.Concatenate".

Neben diesen Beispielen lassen sich für die Funktion "Fold" auch Fälle konstruieren, in denen die Reihenfolge der Parameter eine Rolle spielt. Wenn man zwei Vektoren hat (in Form von zwei gleich langen Listen von Zahlen) kann man mit der Funktion "Fold" deren Euklidische Distanz errechnen (sozusagen den Abstand zweier Punkte). Als Beispiel kann die Korrelationsmatrix im Infront Portfolio Manager dienen:

$list1.length.makelist.fold[

#[$idx](object + ($list1.nth[$idx] - $list2.nth[$idx]).expX[2]);0].sqrt

Dabei wird praktisch eine For-Schleife realisiert.