I've been thinking about the best approach to implement pure function verification in the Scala compiler. An approach similar to the one in D would fit a lot better than the one used in Haskell (which would break all existing code and cause some problems due to strict evaluation). A solution using annotations would be quite simple to implement:
Students can draw graphs in a coordinate system. This program is good for especially high school students. The program makes it very easy to visualize a function and paste it into another program. Students can do calculations on the functions.