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

Content added Content deleted
m (<code>)
m (<lang>)
Line 8: Line 8:
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.
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.


<code haskell>moveLeft (x:l,r) = (l,x:r)
<lang haskell>moveLeft (x:l,r) = (l,x:r)
moveRight (l,x:r) = (x:l,r)
moveRight (l,x:r) = (x:l,r)


Line 43: Line 43:


dialog :: String -> IO ()
dialog :: String -> IO ()
dialog s = mapM_ print . run s . map read . lines =<< getContents</code>
dialog s = mapM_ print . run s . map read . lines =<< getContents
</lang>


Example session:
Example session:


<pre>
<pre>: *Main> dialog ",[>+<-].>."
: *Main> dialog ",[>+<-].>."
: ''5''
: ''5''
: 0
: 0
: 5</pre>
: 5
</pre>