|
64 | 64 | * An Op is an algorithm adhering to the following traits: |
65 | 65 | * </p> |
66 | 66 | * <ol> |
67 | | - * <li>Ops are stateless and deterministic - with no internal state, calling an |
68 | | - * Op two times on the same inputs will produce the same output.</li> |
69 | 67 | * <li>Ops are named - this name conveys an Op's purpose, and allows us to find |
70 | 68 | * all Ops implementing a particular operation</li> |
| 69 | + * <li>Ops have a number of input and output parameters, each defined by a |
| 70 | + * type</li> |
| 71 | + * <li>Ops adhere to a {@link java.lang.FunctionalInterface}, defining how it |
| 72 | + * operates</li> |
71 | 73 | * </ol> |
72 | 74 | * <p> |
73 | 75 | * Using the name and the combination of input and output parameters, we can |
|
151 | 153 | * and SciJava Ops will take care to call the correct Op based on the concrete |
152 | 154 | * inputs provided.</li> |
153 | 155 | * <li>Result-equivalence, and therefore reproducibility, in Ops, is guaranteed |
154 | | - * within an OpEnvironment and a set of input objects, but not just for Op |
155 | | - * calls. This allows us to ensure reproducible pipelines, but also allows us to |
156 | | - * introduce new Ops into the pipeline or to run pipelines on different inputs |
157 | | - * without changing the pipeline itself.</li> |
| 156 | + * within an OpEnvironment and a set of input objects, when <b>deterministic</b> |
| 157 | + * algorithms are used. Cognizance of algorithm determinism allows users to |
| 158 | + * create reproducible pipelines, however determinism is <b>not</b> a |
| 159 | + * requirement for Ops, as it would preclude many valuable algorithms from |
| 160 | + * becoming an Op. </li> |
158 | 161 | * </ol> |
159 | 162 | */ |
160 | 163 |
|
|
0 commit comments