/// <summary> /// Find the product of the Somes. If either of the options are None then the result is None /// For numeric values the behaviour is to multiply the Somes (lhs * rhs) /// For Lst values the behaviour is to multiply all combinations of values in both lists /// to produce a new list /// Otherwise if the R type derives from IMultiplicable then the behaviour /// is to call lhs.Multiply(rhs); /// </summary> /// <param name="lhs">Left-hand side of the operation</param> /// <param name="rhs">Right-hand side of the operation</param> /// <returns>lhs * rhs</returns> public static Option <T> multiply <T>(Option <T> lhs, Option <T> rhs) => lhs.Multiply(rhs);