Pourquoi l'accumulateur AccIn
n'est pas le paramètre gauche pour Fun
? http://erlang.org/doc/man/lists.html#foldl-3Erlang: paramètres de fonction Foldl échangés
foldl(Fun, Acc0, List) -> Acc1
Fun = fun((Elem :: T, AccIn) -> AccOut)
Acc0 = Acc1 = AccIn = AccOut = term()
List = [T]
T = term()
Je demande cela parce que presque tous les autres langages fonctionnels (par exemple haskell
, scala
) a fait le l'inverse. Vous êtes censé visualiser un pli gauche en accumulant de la gauche comme
foldl f z [x1, x2, ..] = ((z f x1) f x2) ..
Non. Je pense que vous avez manqué la spécification pour le foldl d'erlang. Essayez de comparer cela avec la version haskell. –
Je l'ai copié à partir du manuel –
Ce que vous avez copié est la spécification haskell. '(a -> b -> a)' a 'a' comme le même type que l'accumulateur. Comparez maintenant cela à erlang's qui est plus du genre '(b -> a -> a)' et vous obtiendriez de quoi je parle. –