Advanced functional programming 5th International School, AFP 2004, Tartu, Estonia, August 14 - 21, 2004 ; revised lectures (Springer, 2005)