public interface FunList<T>
{
/**
* Renvoie le premier élément de la liste (ou null si la liste est vide).
*/
public T getHead();
/**
* Renvoie la suite de la liste (ou null si la liste est vide).
*/
public FunList<T> getTail();
/**
* Renvoie une liste rallongée d'un élément
*/
public FunList<T> putHead(T head);
}
public interface FunMap<K,T>
{
/**
* Cherche un élément associé à une clé
*/
public T get(K key);
/**
* Ajoute ou remplace un élément
*
* @return une nouvelle FunMap, identique en tout point sauf pour la clé key qui est maintenant
* associée à la valeur value.
*/
public FunMap<K,T> put(K key, T value);
}