I was taught the very basics of Haskell as part of a module covering the Functional programming paradigm. After working with C++ and Java for a little over a year the change was a little jarring but as I practised I grew comfortable enough with the major differences to pass the module with a good grade.
After the module, I decided to attempt one more project using Haskell to give myself the opportunity to learn some of the more complex features such as Monads.
I decided the project would be to implement a turning machine utilising the infinite lists feature of Haskell and various IO Monads for file handling and display.

The final program uses underscores to denote empty space on the tape and otherwise uses state symbols defined within the script and tape.
The scripting language is designed to be one line per transition in the transition table for a standard Turing machine. Each line should be structured as such:
[State ID] The State this transition starts from
[Transition Inputs] The read characters that use this transition
[Destination State ID] The State to transition to
[Write Character] The character to write in the input’s place (# doesn’t write anything)
[Tape Move Direction] The direction the tape moves after the transition
Here is a link to a download for the Project. Due to my lack of knowledge with Haskell this is simply the source and an example program for sorting any given list of a’s and b’s.
I used GHCI to compile and run the programs with the method call as such:
runScript “ABSort.txt” [0] (“”, 1, “aaabababbaba”)