. , , , , Java, Java.
Java :
- :, ,
java.lang.Object - :, ,
List<T>.
Haskell (2). Haskell (1).
- ( , ++ ): , , , . , , List<T> , List<String>, List<List<String>> .., , , T .
, " ", , . , Java , "", :
List<String> myList = new ArrayList<String>();
, :
class MyFunction implements Function<Integer, String> {
public String apply(Integer i) { ... }
}
- , , :
interface Expression {
<R> accept(Expression.Visitor<R> visitor);
static interface Visitor<R> {
R constant(int i);
R add(Expression a, Expression b);
R multiply(Expression a, Expression b);
}
}
Haskell . , gen :: a -> b, , a b, , gen. , " " , , gen, , a b; gen [()], a [()]. , , gen [()] , gen 2 = "test" , .