I do understand your point, but purity is one of the defining characteristics of Haskell, and one of the features that differentiates it from most other languages, so I think it should be mentioned up front when introducing Haskell.
I don't know why anyone would use the Integral typeclass over just Int or Integer in a simple program like this, but you wouldn't need Num in addition to Integral, every instance of Integral must also be an instance of Real, and instances of Real must be instances of Num.
I'm not sure whether you would consider this paper systems-oriented, but it's fun and sort of practical. "A Play on Regular Expressions" is literally a 3 act play about efficiently implementing regular expressions with code in Haskell. I've been working through it and trying to adapt some of the code for a workshop I'm giving this summer, and it's been very readable and interesting.
I used to use GrubHub all the time when I lived in Chicago and always had a good experience with them. Since I've moved there aren't very many restaurants using these types of services where I live now, but I would definitely use a similar service if it had decent adoption locally.
I graduated from the University of Chicago, and they have a handful of undergrad classes using functional languages. The intro comp sci courses were using Haskell for the honors class, and Racket for the non-honors version when I took it. The compilers course there is taught using ML, though the fact that UChicago has several faculty who work on the development and maintenance of Standard ML may have something to do with this.
This is sort of interesting because the Math department at UChicago has had undergraduate TAs for a long time for at least the first year courses, and I believe a couple of the second year courses, but it seems only recently has the CS department done the same for its first year courses.
I teach RobotC to a FIRST robotics team, I really dislike it sometimes. The IDE is pretty bad, and only runs on Windows, and up until recently all variables in a RobotC program would implicitly be global. They fixed that with 3.5, and are aiming towards a more ANSI-C compliant implementation, but I still find it a pretty frustrating platform sometimes.