# Brainfuck: A Toy Implementation This project exists to show what a [Brainfuck](http://en.wikipedia.org/wiki/Brainfuck) evaluator might look like in Haskell. The implementation is fairly well documented. I endeavored to make it readable. ## Terms Below is the abstract syntax tree for the BF language as implemented: ```haskell data Term = IncDP -- > | DecDP -- < | IncByte -- + | DecByte -- - | OutByte -- . | InByte -- , | JumpForward -- [ | JumpBackward -- ] deriving (Show, Eq) ``` ## Evaluation Semantics I followed the summary given on the wikipedia page closely. A few particulars to this implementation: * "Jump not found" errors abort evaluation and return the state of the tape * Out of bound errors are not detected * Evaluation proceeds until the instruction stream runs out ## Executable An executable is provided: ``` $ cabal build bfh $ cabal run bfh usage: bfh $ cabal run bfh 10 ',.' a a ```