Description
BrainFuck interpreter.
Description
BrainFuck language interpreter. Provides a library for evaluation and an executable to evaluate brainfuck files. Evaluation happens under an arbitrary monad so programn can be evaluated doing IO to stdinstdout or in memory using the State monad.
README.md
haskell-brainfuck
Interpreter for the brainfuck programming language
haskel-brainfuck is distributed as a library, but it also includes an executable to run brainfuck programs. You can find haskell-brainfuck in Hackage
Usage
Library
import HaskBF.Eval
import qualified Data.ByteString.Lazy as BS
import Control.Monad.State
main = do
-- The following will evaluate the file using stdin and stdout for I/O.
-- Evaluation results in an EvalResult
file <- BS.readFile "/path/to/file.bf"
(EvalSuccess _) <- evalBS defaultIOMachine file
print "ok"
-- The following will evaluate the file using the State monad and input
-- provided by input
let input = []
output = []
result = execState (evalStr simulatorMachine "+.>-.") (SimState input output)
print $ simStateOutput result == [1, -1]
Executable
brainfuck fib.bf
Tests
You can run the test suite with
cabal test
Documentation
http://paraseba.github.io/haskell-brainfuck/