Racket / HtDP is the best way to teach functional programming to beginners.
http://www.ccs.neu.edu/home/matthias/Thoughts/Growing_a_Prog...
Haskell obviously has its place, but it is much better used when looking at something like PL Theory at a 3000-400 level.