Available under Creative Commons-ShareAlike 4.0 International License. Download for free at http://cnx.org/contents/402b20ad-c01f-45f1-9743-05eadb1f710e@37.6
The concrete empty list and non-empty list implemented as MTList and NEList are now expressed as interfaces as follow.
package listFW;/** * Represents the abstract behavior of the immutable list structure. * A list intrinsically "knows" how to execute an algorithm on itself. */ interface IList { Object execute(IListAlgo algo, Object... inp); } |
|
package listFW; /** * Represents the immutable empty list. * The empty list has no well-defined structural behavior: * it has no first and no rest. */ interface IMTList extends IList { } |
package listFW; /** * Represents the immutable non-empty list. * An immutable non-empty list has a data object called first, and an * isomorphic subcomponent called rest. Its structural behavior * provides access to its internal data (first) and substructure (rest). */ interface INEList extends IList { /** * "Gettor" method for the list's first. * @return this INElist's first element. */ Object getFirst(); /** * "Gettor" method for the list's rest. * @return this INElist's rest. */ IList getRest(); } |
- 瀏覽次數:1300