summaryrefslogtreecommitdiffstats
path: root/Main.hs
blob: 20413f7399568da4a14aa8c8906c824b7237cdb0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module Main where

import qualified BrainFuck
import System.Environment (getArgs)
import qualified Evolve
import qualified Control.Concurrent.Chan as Chan
import Control.Concurrent (forkIO)
import Data.List (intercalate)

type BF = [BrainFuck.BF]

main :: IO ()
main = do a <- getArgs
          s <- readFile (head a)
          let bf = BrainFuck.strToBF s
          c <- Chan.newChan
          _ <- forkIO $ Evolve.evolve c bf
          generations <- Chan.getChanContents c
          mapM_ display generations
  where display e = putStrLn $ BrainFuck.runBF e ++ "\ncode: (" ++ intercalate "" (map show e) ++ ")"