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. |
||
< |
<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 |
dialog s = mapM_ print . run s . map read . lines =<< getContents |
||
</lang> |
|||
Example session: |
Example session: |
||
<pre> |
|||
: *Main> dialog ",[>+<-].>." |
|||
: ''5'' |
: ''5'' |
||
: 0 |
: 0 |
||
: 5 |
: 5 |
||
</pre> |