Anonymous user
Execute Brain****/Haskell: Difference between revisions
unsafePerformIO sounds scary
mNo edit summary |
(unsafePerformIO sounds scary) |
||
Line 4:
Pairs of lists are used to implement both the two-side infinite band of cells, and the program storage. This means that it can also work on infinite Brainfuck programs (which could be generated lazily).
In functional style, ''run'' interprets a Brainfuck program as a function from an Integer list (inputs) to an Integer list (outputs).
A more efficient implementation could for example only admit well-bracketed brainfuck programs, and parse bracket blocks first, to replace the ''matchLeft'' and ''matchRight'' which need linear time.
moveLeft (x:l,r) = (l,x:r)
moveRight (l,x:r) = (x:l,r)
Line 45 ⟶ 43:
dialog :: String -> IO ()
dialog s = mapM_ print
Example session:
|