MapThread with non-rectangular lists
Perhaps something like this, as a more general alternative? However, without tweaking it forget about level specification
Function[Null, f[##], Listable] @@ A
Here's a way to do it by mapping MapThread
:
MapThread[f, #] & /@ Transpose[{{{a, b}, {c, d, e}}, {{1, 2}, {3, 4, 5}}}]
(* {{f[a, 1], f[b, 2]}, {f[c, 3], f[d, 4], f[e, 5]}} *)
It's probably bad form to answer your own question, but I did manage to get something to work while I was waiting:
myMapThread[f_, list1_, list2_, level_] :=
Module[{s}, Function[s,
Reap[MapIndexed[Sow[f[#1, s[[Sequence @@ #2]]]] &, list1, {level}]][[1]]]
[list2]];
Usage:
myMapThread[f, {{a, b}, {c, d, e}}, {{1, 2}, {3, 4, 5}}, 2]
{{f[a, 1], f[b, 2]}, {f[c, 3], f[d, 4], f[e, 5]}}
It's quite ugly though.