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

m
<code>
(- doesn't stop at 0 per specification)
m (<code>)
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.
 
<code ocaml>
let move_left (x::l, r) = (l, x::r)
let move_right (l, x::r) = (x::l, r)
Line 68:
 
let run s = exec ([], s) ([0], [0])
</ocamlcode>
 
Example output:
 
<pre># let char_list_of_string s =
let result = ref [] in
String.iter (fun c -> result := c :: !result) s;
List.rev !result;;
val char_list_of_string : string -> char list = <fun>
 
# run (char_list_of_string ",[>+<-].>.");;
''5''
0
5
- : unit = ()</pre>
Anonymous user