blob: d97600a8126c95d343e887b3537ef7c1bdc2f8c8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
definition module TuringMachines
import StdMaybe
import IterableClass
from StdOverloaded import class ==, class toString
from StdClass import class Eq
:: TuringMachine a = { alphabet :: [a],
inputs :: [a],
transition :: Int (Maybe a) -> TuringMachineMove a }
:: TuringMachineState a = { machine :: TuringMachine a,
state :: Int,
tapeHead :: Int,
tape :: Tape a,
running :: TuringMachineTermination }
:: TuringMachineTermination = Running | Normal | Abnormal
:: TuringMachineMove a = Step Int (Maybe a) Direction | Halt
:: Direction = Left | Right
:: Tape a :== [Maybe a]
instance == Direction
instance == (TuringMachineMove a) | == a
instance == TuringMachineTermination
instance toString Direction
instance toString (TuringMachineMove a) | toString a
instance toString TuringMachineTermination
instance toString (Tape a) | toString a
instance toString (TuringMachineState a) | toString a
instance step (TuringMachineState a) | == a
initTuringMachine :: (TuringMachine a) (Tape a) -> TuringMachineState a | Eq a
run :: (TuringMachineState a) -> TuringMachineState a | == a
|