Deforestation

Explicit deforestation is less important for ADT based vectors
since GHC is able to eliminate intermediate data structures. But it
cannot do so for array-based ones so intermediate vector have to be
removed with RULES. Following identity is used. Of course f must
be polymorphic in continuation result type.

inspect (f construct) g = f g

But construct function is located somewhere deep in function
application stack so it cannot be matched using rule. Function
create is needed to move construct to the top.

As a rule function which are subject to deforestation should be
written using create and inspectV functions.