// foldLeft's meaty bit
case Cons(h,t) => foldLeft(t, f(b, h))(f) 

// foldRight meaty bit
case Cons(x, xs) => f(x, foldRight(xs, b)(f))