<div dir="ltr">I've got this<div><br></div><div>myFoldl f init [] = init<br>myFoldl f init (x:xs) = myFoldl f newInit xs<br>  where newInit = f init x<br></div><div><br></div><div>which when evaluated gives this for its type</div><div><br></div><div>> :t myFoldl</div><div>myFoldl :: (t -> a -> t) -> t -> [a] -> t<br></div><div><br></div><div>. . . not totally sure what that all means, e.g., how the t as a generic class is behaving is very mysterious. Obviously, the final result is of type t . . . and that must relate to the incoming argument init, correct? (BTW, does a type declaration like this one reflect in any way the recursion going on?)  But then with Prelude foldl I'm really clueless</div><div><br></div><div>> :t foldl</div><div>foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b<br></div><div><br></div><div>I'm guessing the t is again a generic type of the Foldable class, but then. . .  Can someone walk me through this?</div><div><br></div><div>LB</div></div>