Currently, FoldWhile requires the same type in Continue and Done, but it doesn't seem obvious why it shouldn't be able to use two different types.
It might be possible to add in a backwards compatible way, for example by adding the second type as a type parameter defaulting to the first type parameter.