Execute Brain****/OCaml: Difference between revisions

m
Categorization now in master page
m (<lang>)
m (Categorization now in master page)
Line 1:
{{implementation|Brainf***}}{{collection|RCBF}}[[Category:OCaml]]
Quick implementation of a [[Brainfuck]] interpreter in [[OCaml]].
 
Like the [[Haskell]] [[RCBF/Haskell|version]] but without the lazy lists:
 
Pairs of lists are used to implement both the two-side infinite band of cells, and the program storage.
Line 10:
A more efficient implementation could for example only admit well-bracketed brainfuck programs, and parse bracket blocks first, to replace the ''match_left'' and ''match_right'' which need linear time.
 
<lang ocaml>let move_left (x::l, r) = (l, x::r)
let move_left (x::l, r) = (l, x::r)
let move_right (l, x::r) = (x::l, r)
 
Line 67 ⟶ 66:
exec (match_left (move_left p)) d
 
let run s = exec ([], s) ([0], [0])</lang>
</lang>
 
Example output:
Anonymous user