Wirth has published compiler books based on Pascal and Oberon, quite simple single pass implementations.
The language proposed by the Tiger book variants (a ML like language) is also quite simple to implement.
Why write a self-hosting compiler? Use Haskell to write a C compiler, if you must.
(If you want the identity there, use a Scheme to write a Scheme compiler.)