Execute Brain****/Haskell: Difference between revisions
Content deleted Content added
mNo edit summary |
m Fixed syntax highlighting. |
||
(8 intermediate revisions by 8 users not shown) | |||
Line 1:
{{implementation|Brainf***}}{{collection|RCBF}}
Quick implementation of a [[Brainfuck]] interpreter in [[Haskell]].
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.
<syntaxhighlight lang="haskell">module BF where
</syntaxhighlight>(This version compiles with GHC and will run if loaded into ghci using ':load BF')
Example session:
<pre>
: *Main> dialog ",[>+<-].>."
: ''5''
: 0
: 5
</pre>
|