From 6e99d20972bec95d3502ef7549d74f67b4cf0001 Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Sat, 27 Sep 2014 15:34:15 +0200 Subject: Initial commit (using Yesod's scaffolding) --- Turing/Examples.hs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Turing/Examples.hs (limited to 'Turing/Examples.hs') diff --git a/Turing/Examples.hs b/Turing/Examples.hs new file mode 100644 index 0000000..410abb4 --- /dev/null +++ b/Turing/Examples.hs @@ -0,0 +1,46 @@ +module Turing.Examples where + +import Import + +import Data.List (intersperse) + +import Turing.Machine + +mR1, mL1, mInit :: Machine +mR1 = mkMachine [(0, SymWild, R, 1)] +mL1 = mkMachine [(0, SymWild, L, 1)] +mInit = mL SymInit <> mR1 + +mR, mL, mR', mL', mW :: Symbol -> Machine +mR sy = mkMachine [(0, sy, W sy, 1), (0, SymWild, R, 0)] +mL sy = mkMachine [(0, sy, W sy, 1), (0, SymWild, L, 0)] +mR' sy = mkMachine [(0, sy, R, 0), (0, SymWild, W SymWild, 1)] +mL' sy = mkMachine [(0, sy, L, 0), (0, SymWild, W SymWild, 1)] +mW sy = mkMachine [(0, SymWild, W sy, 1)] + +mWriteStr :: String -> Machine +mWriteStr = mconcat . intersperse mR1 . map (mW . charToSym) + +mSub :: Machine +mSub = mkMachine [ (0, SymSpace, R , 1) + , (1, Symbol 'a', R , 1) + , (1, SymSpace, R , 2) + , (2, SymSpace, R , 2) + , (2, Symbol 'a', R , 3) + , (3, SymSpace, L , 9) + , (3, Symbol 'a', R , 5) + , (9, Symbol 'a', W SymSpace , 9) + , (9, SymSpace, L , 4) + , (4, SymInit, R , 10) + , (4, SymWild, L , 4) + , (5, Symbol 'a', R , 5) + , (5, SymSpace, L , 6) + , (6, Symbol 'a', W SymSpace , 6) + , (6, SymSpace, L , 7) + , (7, Symbol 'a', L , 7) + , (7, SymSpace, L , 8) + , (8, SymSpace, L , 8) + , (8, Symbol 'a', W SymSpace , 2) ] + +mDecr :: Machine +mDecr = mconcat [mR1, mR SymSpace, mL1, mW SymSpace, mL1, mL SymSpace] -- cgit v1.2.3