Yay! Today I submitted my first GHC patch, and not only that, a patch to Cabal too! The GHC patch removed a dependency on Cabal which caused the head build to fail today when Cabal changed its API. I first made a simplistic fix but then Igloo suggested I remove the dependency on Cabal completely from that particular piece of code so I revised my patch and he accepted it. I'm happy to say the GHC sources are now
The Cabal patch fixed some erroneous parsing of the output of "ghc --supported-languages". Cabal is changing the way it detects compiler language extensions and they happened to make a silly mistake in the new code.
If I keep going like this I'm going to learn a lot about GHC and the Haskell infrastructure I'm sure. The people on #ghc have been very helpful and receptive.
In my undergrad research I've been using Haskell to parse, transform and pretty-print Fortran code. In the beginning I used Open64, a Fortran compiler and source2source transformer written in C++ for the work, but one day I couldn't take it anymore and started writing a Fortran parser and pretty printer in Haskell instead. Things have been a bit more fun since then but I'd be happy to get rid of Fortran too. Unfortunately transforming Fortran is the whole point of the research so I guess I can't do that :)
I've also been toying with an own programming language. I aim to explore what a programming language based on use-once variables may look like and how it can be made more convenient to work with. Hopefully such a language could combine the benefits of functional programming with the straight-forwardness of imperative languages. Maybe I will write more about it at some point.