Ah, that’s interesting. My best guess is that the cryptic error message is trying to say that TreeReducable expects its type parameter to be higher-order – a type that itself takes a type parameter. But Range doesn’t – it’s a first-order type.
That said – do you need this? Range is a descendant of TraversableOnce, and it looks to me like you can simply call doReduce on it using that…