One thing about finger trees is that we often want to argument a few different data. For example, I might want to know the number of elements in a finger tree, while still able to do something else.

Certainly this is not hard easy, since we can just create a pair of two measurable types, add a sum type of integers. Just let the finger tree to measure both of them.

In order to do that, we should write a function that takes the product of measures.

productMeasure:: (Measured v a, Measured u b) => (a -> v)->(b -> u)->((a,b)->(v,u)) .