packages feed

turingMachine 0.1.2.0 → 0.1.3.0

raw patch · 3 files changed

+72/−3 lines, 3 files

Files

+ src/Math/Model/Turing/FourWays.hs view
@@ -0,0 +1,66 @@+{-# OPTIONS_GHC -fno-warn-tabs #-}+{-# OPTIONS_HADDOCK show-extensions #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeSynonymInstances #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeFamilies #-}+{-|+Module      : Turing1T4W+Description : Four ways turing machine+Copyright   : (c) Jorge Santiago Alvarez Cuadros, 2016+License     : GPL-3+Maintainer  : sanjorgek@ciencias.unam.mx+Stability   : experimental+Portability : portable++Four ways turing machine+-}+module Math.Model.Turing.FourWays where+import Data.Delta+import Data.State+import Data.Sigma+import Math.Model.Turing+import Math.Model.Turing.TwoWays+import Data.List+import Data.Monoid+import qualified Data.Foldable as Fold++data Tracks a = Track [Tape a] (Tape a) [Tape a] deriving(Eq)++instance (Show a) => Show (Tracks a) where+	show (Track xts ts yts) = let +			f x = "--"++(show x)++"\n"+			g x = "->"++(show x)++"\n"+			h x y = (concat.(map x)) y+		in (h f xts)++(g ts)++(h f yts)++instance Functor Tracks where+	fmap f (Track xts ts yts) = let +			g = map (fmap f)+		in Track (g xts) (fmap f ts) (g yts)++instance Applicative Tracks where+	pure x = Track [] (pure x) []+	(<*>) (Track _ ft _) (Track _ t _) = Track [] (ft <*> t) []++instance (Eq s, Monoid s) => Monoid (Tracks s) where+	mempty = Track [] mempty []+	mappend (Track xts ts yts) (Track zts ss wts) = let +			f = zipWith mappend+		in Track (f xts zts) (mappend ts ss) (f yts wts)++instance Tapeable Tracks Symbol where+	getHead (Track _ ts _) = getHead ts+	liftTape ws = Track [] (liftTape ws) []++instance TuringM Tape Symbol FW where +	moveHead Rt (T xs a []) = T (xs++[a]) mempty []+	moveHead Rt (T xs a (y:ys)) = T (xs++[a]) y ys+	moveHead Lf (T [] a ys) = T [] mempty (a:ys)+	moveHead Lf (T xs a ys) = T (init xs) (last xs) (a:ys)++instance TuringM Tracks Symbol FW where+	moveHead Up (Track [] ts yts) = Track [] mempty (ts:yts)+	moveHead Up (Track xts ts yts) = Track (init xts) (last xts) (ts:yts)+	moveHead Dw (Track xts ts []) = Track (xts++[ts]) mempty []+	moveHead Dw (Track xts ts (ys:yts)) = Track (xts++[ts]) ys yts
src/Math/Model/Turing/TwoWays.hs view
@@ -7,14 +7,14 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-| Module      : Turing1T4W-Description : Maquina de turing de cinta infinita+Description : Two ways turing machine Copyright   : (c) Jorge Santiago Alvarez Cuadros, 2016 License     : GPL-3 Maintainer  : sanjorgek@ciencias.unam.mx Stability   : experimental Portability : portable -Maquina de turing de cinta infinita+Two ways turing machine -} module Math.Model.Turing.TwoWays where import Data.Delta
turingMachine.cabal view
@@ -5,7 +5,7 @@ -- PVP summary:      +-+------- breaking API changes --                   | | +----- non-breaking API additions --                   | | | +--- code changes with no API change-version:             0.1.2.0+version:             0.1.3.0 synopsis:            An implementation of Turing Machine and Automaton description:         An implementation of Turing Machine and Automaton for                       language theory@@ -33,12 +33,15 @@                        , Math.Model.Automaton.Stack                        , Math.Model.Turing                        , Math.Model.Turing.TwoWays+                       , Math.Model.Turing.FourWays   -- other-modules:          other-extensions:    TypeSynonymInstances                        , TypeOperators                        , MultiParamTypeClasses                        , GADTSyntax                        , ExistentialQuantification+                       , TypeFamilies+                       , FlexibleInstances   build-depends:       base >=4.8 && <4.9                        , containers >= 0.5.6.2   hs-source-dirs:      src