This tutorial takes a different tack. You’ll start off with
command-line arguments and parsing, and progress to writing a
fully-functional Scheme interpreter that implements a good-sized subset
of R5RS Scheme. Along the way, you’ll learn Haskell’s I/O, mutable
state, dynamic typing, error handling, and parsing features. By the
time you finish, you should be fairly fluent in both Haskell and Scheme.