-
Notifications
You must be signed in to change notification settings - Fork 0
/
FunctionalList.java
35 lines (34 loc) · 1.29 KB
/
FunctionalList.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* A functional list is a list with a few additional methods that are
* common in functional languages (such as Lisp, Clojure, or Haskell)
* to work with lists in a recursive way.
*
* Not all operations on a recursive list will always be
* successful. For example, a programmer may try to extract the head
* from an empty list. Since we hace not covered exceptions yet, we
* need another mechanism to report errors. In order to do that,
* methods of this list will return a {@see ReturnObject} that will
* contain either an object or an error value of the right kind (as
* defined in {@see ErrorMessage}).
*
* @author PiJ
*/
public interface FunctionalList extends List {
/**
* Returns the element at the beginning of the list.
*
* If the list is empty, an appropriate error is returned.
*
* @return a copy of the element at the beginning of the list or
* an error if the list is empty.
*/
public ReturnObject head();
/**
* Returns a list with the elements in this list except the
* head. The elements must be in the same order. The original list
* must not change or be affected by changes in the new list.
*
* If the list is empty, another empty list is returned.
*/
public FunctionalList rest();
}