diff options
Diffstat (limited to 'TuringMachines.icl')
-rw-r--r-- | TuringMachines.icl | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/TuringMachines.icl b/TuringMachines.icl index b37233c..f13ca7d 100644 --- a/TuringMachines.icl +++ b/TuringMachines.icl @@ -30,7 +30,10 @@ where instance toString (TuringMachineState a) | toString a where toString st=:{state,tapeHead,tape,running} - = toString running +++ " turing machine in state " +++ toString state +++ ", tape head at " +++ toString tapeHead +++ ".\nTape: " +++ toString tape + = toString (take tapeHead tape) +++ + "[q" +++ toString state +++ "]" +++ + toString (drop tapeHead tape) +++ + " (" +++ toString running +++ ")" instance == Direction where @@ -55,6 +58,7 @@ instance step (TuringMachineState a) | == a where step st=:{machine,state,tapeHead,tape,running} | running <> Running = st + # tape = if (length tape < tapeHead + 1) (tape ++ [Nothing]) tape # move = machine.transition state (tape!!tapeHead) | move == Halt = {st & running = Normal} # (Step state write dir) = move |