Working with parameterised derived type containing array of parameterised derived type

The “plus” and “times” are any user defined functions (not bound).