Ich habe einige Probleme beim Implementieren einer Funktion, die sich selbst mehrere Male aufrufen soll. Jedes Mal aktualisiert es seine Werte und verbessert seine Genauigkeit. Im Prozess ruft es auf andere Funktionen, aber ich weiß, es funktioniert up ‚bis:Haskell, rekursiver Aufruf, viele Argumente
Type = [Double]
*All lists; including type: Same, but not predetermined length.
f0 :: Double -> [[Double]] -> [Double] -> Type -> Type
Typisches Beispiel für Funktionsaufruf:
f0 1.0 [[1.0, 0.5, 1.0], [1.0, -1.0, 1.0]] [1.0, 0.0] (initTypeLength 2)
Was ich tun möchte:
f1 :: Int -> Double -> [[Double]] -> [Double] -> Type -> Type
... wobei "Int" (i) eine Anzahl von Iterationen aufruft, wobei f0 rekursiv verwendet wird, wobei alle Parameter gleich bleiben, mit Ausnahme des Typs, der aktualisiert wird.
Unsicher, ob f0 relevant ist, aber im Falle:
f0 a (x:xs) (y:ys) type = f_other a xs ys
$ f_yet_another a x y type
Was mich verwirrt ist, wo und wie die Argumente angegeben werden.
Also zusammenfassend: Alles hier ist statisch, außer der einen Liste; "Type", der bei jeder Iteration aktualisiert wird. Wie nenne ich das? Ich habe das Gefühl, dass es offensichtlich ist, aber ich kann es einfach nicht so verstehen, wie Haskell es versteht.