function individu=etat_civil(prenom,date_naissance,enfants)
[lhs,rhs]=argn()
if rhs==2 then 
enfants=list()
end 
endfunction
individu=tlist(['etat','prenom','date','enfants'],prenom,date_naissance,enfants)

	   
	   
function l=nouveau(l,individu,ascendant) 
if l.prenom==ascendant then // L'ascendant designe a ete trouve
  l.enfants($+1)=individu // Extension de la liste des enfants
else
  for k=1:size(l.enfants) // Parcours de l'arbre des descendants
    l.enfants(k)=nouveau(l.enfants(k),individu,ascendant)
  end 
end
	   
	   
arbre=etat_civil('Jean-Pierre',1908);// l'ancetre
   // et sa descendance ...
arbre=nouveau(arbre,etat_civil('Maurice',1928),'Jean-Pierre');
arbre=nouveau(arbre,etat_civil('Francois',1930),'Jean-Pierre');
arbre=nouveau(arbre,etat_civil('Marianne',1953),'Francois');
arbre=nouveau(arbre,etat_civil('Claude',1960),'Maurice');
arbre=nouveau(arbre,etat_civil('Serge',1965),'Maurice');
arbre=nouveau(arbre,etat_civil('Jean-Philippe',1985),'Marianne'); 