turingMachine-0.1.1.2: src/Data/Sigma.hs
{-# OPTIONS_HADDOCK show-extensions #-}
{-# OPTIONS_GHC -fno-warn-tabs #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-|
Module : Sigma
Description : Alphabet and symbols
Copyright : (c) Jorge Santiago Alvarez Cuadros, 2016
License : GPL-3
Maintainer : sanjorgek@ciencias.unam.mx
Stability : experimental
Portability : portable
Alphabet and symbols of languaje
-}
module Data.Sigma
(
Symbol(..)
,blank
,z0
,Wd(..)
) where
import Data.Monoid
import Data.Char
{-|
Symbols are character, and with Unicode CharSet we have a big amount of them.
-}
type Symbol = Char
{-|
Symbol type are forced to be a monoid
-}
instance Monoid Symbol where
mempty = blank
mappend x y = chr (mod ((ord x)+(ord y)) (ord maxBound))
-- |Blank symbol
blank::Symbol
blank = '\164'
-- |Initial symbol for stack
z0::Symbol
z0 = '\248'
{-|
List symbol alias, Word are defined in Prelude
-}
type Wd = [Symbol]