Lambda Expression Compatibility Checking via Function Descriptor

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Object-oriented programming languages like Java face challenges in supporting lightweight code modeling due to heavyweight objects, and existing compilation methods struggle with compatibility checking of lambda expressions, leading to excessive syntactic overhead and potential errors.

Innovation Solution

The system and method for supporting compatibility checking in a programming language environment involve deriving a function descriptor from a target type and type-checking lambda expressions, ensuring compatibility by verifying parameter, return, and exception types against the target type, allowing for context-dependent typing and reducing syntactic overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If lambda expressions are supported in object-oriented programming languages, then code modeling becomes lightweight and flexible, but compatibility checking becomes complex and error-prone

Engineering Contradiction:
Improvecode modeling flexibilityVSAvoidcompatibility checking complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces a function descriptor as an intermediary structure that mediates between the lambda expression and the target type. The function descriptor captures the essential functional signature (parameter types, return type, and method criteria) of the target type, allowing the compiler to perform compatibility checking by comparing the lambda expression against this simplified intermediary representation rather than directly against the complex target type structure.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the compatibility checking process into distinct phases: first deriving the function descriptor from the target type by identifying relevant methods and their criteria, then separately type-checking the lambda expression parameters and return type against the function descriptor. This segmentation breaks down the complex compatibility checking into manageable, independent steps.

Inventive Principle:
Principle #1Segmentation

2Reliability

If strict type-checking is performed on lambda expressions, then compatibility and correctness are ensured, but syntactic overhead increases

Engineering Contradiction:
Improvecompatibility assuranceVSAvoidsyntactic overhead
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent creates a simplified copy of the target type's functional interface through the function descriptor, which contains only the essential elements needed for type-checking (parameter types, return type, and method criteria). This copying approach allows the compiler to perform rigorous type-checking against the function descriptor without requiring the full complexity of the original target type structure, thereby reducing syntactic overhead while maintaining reliability.

Inventive Principle:
Principle #26Copying

3Measurement precision

If context-dependent function descriptors are derived, then type-checking accuracy improves, but compilation time increases

Engineering Contradiction:
Improvetype-checking accuracyVSAvoidcompilation time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent performs preliminary action by deriving the function descriptor from the target type before type-checking the lambda expression. This preliminary derivation captures all context-dependent information about the target type's functional interface in advance, allowing the subsequent type-checking to proceed efficiently against this pre-computed descriptor rather than repeatedly analyzing the target type structure during type-checking.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10528330B2System and method for supporting compatibility checking for lambda expression
Publication Date: 2020.01.07 ORACLE INT CORP
  • US10528330B2 patent drawing
  • US10528330B2 patent drawing
  • US10528330B2 patent drawing

AI summary

A system and method can support compatibility checking in a programming language environment. The programming language environment can check whether a target type associated with an expression in the programming language environment is functional, wherein the target type is functional when it has exactly one method meeting one or more criteria that define that method as relevant in a counting system. Then, the programming language environment can derive a function descriptor from the target type, which is context-dependent. Furthermore, the programming language environment can type-check the expression with the function descriptor associated with the target type.