iota
Safe HaskellNone
LanguageGHC2021

Data.Dir

Synopsis

Documentation

data Dir Source #

Constructors

L 
R 
U 
D 

Instances

Instances details
Bounded Dir Source # 
Instance details

Defined in Data.Dir

Methods

minBound :: Dir #

maxBound :: Dir #

Enum Dir Source # 
Instance details

Defined in Data.Dir

Methods

succ :: Dir -> Dir #

pred :: Dir -> Dir #

toEnum :: Int -> Dir #

fromEnum :: Dir -> Int #

enumFrom :: Dir -> [Dir] #

enumFromThen :: Dir -> Dir -> [Dir] #

enumFromTo :: Dir -> Dir -> [Dir] #

enumFromThenTo :: Dir -> Dir -> Dir -> [Dir] #

Read Dir Source # 
Instance details

Defined in Data.Dir

Show Dir Source # 
Instance details

Defined in Data.Dir

Methods

showsPrec :: Int -> Dir -> ShowS #

show :: Dir -> String #

showList :: [Dir] -> ShowS #

Eq Dir Source # 
Instance details

Defined in Data.Dir

Methods

(==) :: Dir -> Dir -> Bool #

(/=) :: Dir -> Dir -> Bool #

Ord Dir Source # 
Instance details

Defined in Data.Dir

Methods

compare :: Dir -> Dir -> Ordering #

(<) :: Dir -> Dir -> Bool #

(<=) :: Dir -> Dir -> Bool #

(>) :: Dir -> Dir -> Bool #

(>=) :: Dir -> Dir -> Bool #

max :: Dir -> Dir -> Dir #

min :: Dir -> Dir -> Dir #

Unbox Dir Source # 
Instance details

Defined in Data.Dir

Vector Vector Dir Source # 
Instance details

Defined in Data.Dir

Methods

basicUnsafeFreeze :: Mutable Vector s Dir -> ST s (Vector Dir)

basicUnsafeThaw :: Vector Dir -> ST s (Mutable Vector s Dir)

basicLength :: Vector Dir -> Int

basicUnsafeSlice :: Int -> Int -> Vector Dir -> Vector Dir

basicUnsafeIndexM :: Vector Dir -> Int -> Box Dir

basicUnsafeCopy :: Mutable Vector s Dir -> Vector Dir -> ST s ()

elemseq :: Vector Dir -> Dir -> b -> b

MVector MVector Dir Source # 
Instance details

Defined in Data.Dir

Methods

basicLength :: MVector s Dir -> Int

basicUnsafeSlice :: Int -> Int -> MVector s Dir -> MVector s Dir

basicOverlaps :: MVector s Dir -> MVector s Dir -> Bool

basicUnsafeNew :: Int -> ST s (MVector s Dir)

basicInitialize :: MVector s Dir -> ST s ()

basicUnsafeReplicate :: Int -> Dir -> ST s (MVector s Dir)

basicUnsafeRead :: MVector s Dir -> Int -> ST s Dir

basicUnsafeWrite :: MVector s Dir -> Int -> Dir -> ST s ()

basicClear :: MVector s Dir -> ST s ()

basicSet :: MVector s Dir -> Dir -> ST s ()

basicUnsafeCopy :: MVector s Dir -> MVector s Dir -> ST s ()

basicUnsafeMove :: MVector s Dir -> MVector s Dir -> ST s ()

basicUnsafeGrow :: MVector s Dir -> Int -> ST s (MVector s Dir)

IsoUnbox Dir Word8 Source # 
Instance details

Defined in Data.Dir

Methods

toURepr :: Dir -> Word8

fromURepr :: Word8 -> Dir

newtype Vector Dir Source # 
Instance details

Defined in Data.Dir

newtype Vector Dir = V_Dir (Vector Word8)
newtype MVector s Dir Source # 
Instance details

Defined in Data.Dir

newtype MVector s Dir = MV_Dir (MVector s Word8)

enumerateDir :: [Dir] Source #

>>> enumerateDir
[L,R,U,D]

opposite :: Dir -> Dir Source #

>>> opposite L
R
>>> opposite R
L
>>> opposite U
D
>>> opposite D
U

dirMove :: (Int, Int) -> Dir -> (Int, Int) Source #

>>> dirMove (2, 3) U
(1,3)
>>> dirMove (0, 0) U
(-1,0)
>>> dirMove (0, 0) R
(0,1)
>>> map (dirMove (2, 3)) enumerateDir
[(2,2),(2,4),(1,3),(3,3)]

dir4Moves :: (Int, Int) -> [(Int, Int)] Source #

>>> dir4Moves (2, 3)
[(2,2),(2,4),(1,3),(3,3)]
>>> dir4Moves (0, 1)
[(0,0),(0,2),(-1,1),(1,1)]

dirDiff :: Dir -> (Int, Int) Source #

>>> dirDiff U
(-1,0)
>>> dirDiff R
(0,1)

moveToDir :: (Int, Int) -> (Int, Int) -> Dir Source #

>>> moveToDir (0, 1) (0, 2)
R
>>> moveToDir (1, 2) (0, 2)
U
>>> moveToDir (0, 0) (1, 1)
*** Exception: invalid move: (1,1)