Lazy For() Comprehension Generator #3085
                
     Open
            
            
          
      
        
          +3,800
        
        
          −0
        
        
          
        
      
    
  
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Introduces a generator for lazy for-comprehension variants that produce intermediate
ForLazyN<M>classes for supported monadic types (e.g., Option, Try, Either, etc.).This addition complements the existing eager for-comprehension generator by introducing a lazy variant.
ForLazyN<M> classes (arity 2 to N) that:For(...)factory methods for convenient construction.yield(...)method with proper indentation and block structure for readability.The generator handles mixed monadic/function parameter patterns such as:
expands for-comprehension with lazily-evaluated variants, so that the existing is possible:
The generator enforces that the first argument is always a monadic value, not a function. This is necessary because:
flatMapcalls.Function0<M<T1>>), Java’s generic type inference fails to resolve chained type variables properly.FunctionN<T1, ..., TN, M<T(N+1)>>), since their input types are already determined by previous monadic values.related: #3038