[ 
https://issues.apache.org/jira/browse/JENA-1083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15103952#comment-15103952
 ] 

ASF GitHub Bot commented on JENA-1083:
--------------------------------------

Github user afs commented on the pull request:

    https://github.com/apache/jena/pull/120#issuecomment-172391107
  
    This is now quite inconsistent.  There too many names and both locations 
and naming are mixed up.
    
    Let's simplify for jena-base.  What you call things in the "mem" package is 
your choice.
    
    In tuple(t) and function(f) we now have: 
    
    TetraConsumer (f), TetraFunction (f), Consumer4 (t), TetraOperator(t), 
TriConsumer(t), TriFunction(t), TriFunction.TriOperator(t). 
TriConsumer.Consumer3(t)
    
    The common naming from other systems like fj (Functional Java), scala is 
numbering "F" and "Function4" etc - it's also aligned to the naming of Tuple 
implementations. Let's use that style and so we do not have concept clashes 
with RDF. Java has got itself into a bit of a hole on naming and from the 
consequences of erasure - no need to be restricted by that.
    
    **Proposal 1:**
    
    In package tuple:
    ```
    @FunctionalInterface
    interface TFunction4<X> { void apply(X x1, X x2, X x3, X x4) ; }
    ```
    and 
    ```
    @FunctionalInterface
    interface TConsumer4<X,Z> { void accept(X x1, X x2, X x3, X x4) ; }
    ```
    same for `TFunction3` and `TConsumer3` and only these.
    
    It's not a function on a tuple so not `TupleFunctionN`.  `T` keeps away 
from any future clash with `Function4`, `Consumer4`. We can put discussion of 
those elsewhere - not needed for this PR.
    
    **Proposal 2:**
    
    Have `function/Function4`, `function/Consumer4`.
    
    These are the only ones. No Tuple-related all same X forms.
    If package core/mem wants alias/specializations (and it does not really 
save very much) it can have them locally, maybe even short names like `F4<X,Z>` 
for `Function4<X,X,X,X,Z>`.
    
    
    I much prefer proposal 1 and want leave "function" for a different 
discussion.
    
    **Other**
    If you want to add lots of `final` in core/mem, so be it. It's almost 
clutter and the compiler does calculate effectively final nowadays.
    
    In particular, no final on interface parameters. The word is ignored, it 
does not take part in signature matching and it is not enforced in 
implementations.



> MInor refactoring in TupleTables
> --------------------------------
>
>                 Key: JENA-1083
>                 URL: https://issues.apache.org/jira/browse/JENA-1083
>             Project: Apache Jena
>          Issue Type: Improvement
>          Components: ARQ
>            Reporter: A. Soroka
>            Priority: Minor
>
> There are some minor refactorings available for TupleTable and its subtypes, 
> particularly PMapTripleTable and PMapQuadTable that will clarify their use. 
> Specifically, current impls of those abstract types have to override several 
> methods for adding, removing, and finding tuples. In fact, the only 
> information being added when those methods are overridden is conversion 
> between canonical and internal tuple ordering. This refactoring is to provide 
> methods that do that conversion and nothing else, which will make two methods 
> the most that any implementation of those abstract classes will have to 
> provide.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to