import Turing student :: Turing Char Integer student = Turing { eingabealphabet = mkSet "I" , leerzeichen = '#' , arbeitsalphabet = mkSet "#abI" , zustandsmenge = mkSet [ 0, 1, 2, 3, 4, 5, 6, 7] , tafel = t , startzustand = 0 , endzustandsmenge = mkSet [ 7 ] } t = listToFM [ ( ('I', 0), mkSet [ ( 'a', 1, R ) ] ) , ( ('I', 1), mkSet [ ( 'a', 2, R ) ] ) , ( ('I', 2), mkSet [ ( 'a', 2, R ), ('I', 3, L) ] ) ]
data Turing y z = Turing { eingabealphabet :: Set y , arbeitsalphabet :: Set y , leerzeichen :: y , zustandsmenge :: Set z , tafel :: FiniteMap (y, z) (Set (y, z, Bewegung)) , startzustand :: z , endzustandsmenge :: Set z } data Bewegung = L | O | R deriving (Eq, Show, Ord)wir verwenden meistens die spezielle Instanz Turing Char Integer.
Set y ist der Typ der Mengen mit Elementen aus y, und FiniteMap a b sind endliche Abbildungen (stellen Sie sich Hashtabellen oder Suchbäume vor) mit Schlüsseln aus a und Werten aus b.