Różnica między redukcją a foldLeft / fold w programowaniu funkcjonalnym (szczególnie w interfejsach API Scala i Scala)?

Dlaczego Scala i frameworki takie jak Spark i Scalding mają zarówno reducei foldLeft? Więc jaka jest różnica między reducei fold?