module Taskell.Types where

import ClassyPrelude

newtype ListIndex = ListIndex
    { ListIndex -> Int
showListIndex :: Int
    } deriving (Int -> ListIndex -> ShowS
[ListIndex] -> ShowS
ListIndex -> String
(Int -> ListIndex -> ShowS)
-> (ListIndex -> String)
-> ([ListIndex] -> ShowS)
-> Show ListIndex
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListIndex] -> ShowS
$cshowList :: [ListIndex] -> ShowS
show :: ListIndex -> String
$cshow :: ListIndex -> String
showsPrec :: Int -> ListIndex -> ShowS
$cshowsPrec :: Int -> ListIndex -> ShowS
Show, ListIndex -> ListIndex -> Bool
(ListIndex -> ListIndex -> Bool)
-> (ListIndex -> ListIndex -> Bool) -> Eq ListIndex
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListIndex -> ListIndex -> Bool
$c/= :: ListIndex -> ListIndex -> Bool
== :: ListIndex -> ListIndex -> Bool
$c== :: ListIndex -> ListIndex -> Bool
Eq, Eq ListIndex
Eq ListIndex
-> (ListIndex -> ListIndex -> Ordering)
-> (ListIndex -> ListIndex -> Bool)
-> (ListIndex -> ListIndex -> Bool)
-> (ListIndex -> ListIndex -> Bool)
-> (ListIndex -> ListIndex -> Bool)
-> (ListIndex -> ListIndex -> ListIndex)
-> (ListIndex -> ListIndex -> ListIndex)
-> Ord ListIndex
ListIndex -> ListIndex -> Bool
ListIndex -> ListIndex -> Ordering
ListIndex -> ListIndex -> ListIndex
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ListIndex -> ListIndex -> ListIndex
$cmin :: ListIndex -> ListIndex -> ListIndex
max :: ListIndex -> ListIndex -> ListIndex
$cmax :: ListIndex -> ListIndex -> ListIndex
>= :: ListIndex -> ListIndex -> Bool
$c>= :: ListIndex -> ListIndex -> Bool
> :: ListIndex -> ListIndex -> Bool
$c> :: ListIndex -> ListIndex -> Bool
<= :: ListIndex -> ListIndex -> Bool
$c<= :: ListIndex -> ListIndex -> Bool
< :: ListIndex -> ListIndex -> Bool
$c< :: ListIndex -> ListIndex -> Bool
compare :: ListIndex -> ListIndex -> Ordering
$ccompare :: ListIndex -> ListIndex -> Ordering
$cp1Ord :: Eq ListIndex
Ord)

newtype TaskIndex = TaskIndex
    { TaskIndex -> Int
showTaskIndex :: Int
    } deriving (Int -> TaskIndex -> ShowS
[TaskIndex] -> ShowS
TaskIndex -> String
(Int -> TaskIndex -> ShowS)
-> (TaskIndex -> String)
-> ([TaskIndex] -> ShowS)
-> Show TaskIndex
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TaskIndex] -> ShowS
$cshowList :: [TaskIndex] -> ShowS
show :: TaskIndex -> String
$cshow :: TaskIndex -> String
showsPrec :: Int -> TaskIndex -> ShowS
$cshowsPrec :: Int -> TaskIndex -> ShowS
Show, TaskIndex -> TaskIndex -> Bool
(TaskIndex -> TaskIndex -> Bool)
-> (TaskIndex -> TaskIndex -> Bool) -> Eq TaskIndex
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TaskIndex -> TaskIndex -> Bool
$c/= :: TaskIndex -> TaskIndex -> Bool
== :: TaskIndex -> TaskIndex -> Bool
$c== :: TaskIndex -> TaskIndex -> Bool
Eq, Eq TaskIndex
Eq TaskIndex
-> (TaskIndex -> TaskIndex -> Ordering)
-> (TaskIndex -> TaskIndex -> Bool)
-> (TaskIndex -> TaskIndex -> Bool)
-> (TaskIndex -> TaskIndex -> Bool)
-> (TaskIndex -> TaskIndex -> Bool)
-> (TaskIndex -> TaskIndex -> TaskIndex)
-> (TaskIndex -> TaskIndex -> TaskIndex)
-> Ord TaskIndex
TaskIndex -> TaskIndex -> Bool
TaskIndex -> TaskIndex -> Ordering
TaskIndex -> TaskIndex -> TaskIndex
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: TaskIndex -> TaskIndex -> TaskIndex
$cmin :: TaskIndex -> TaskIndex -> TaskIndex
max :: TaskIndex -> TaskIndex -> TaskIndex
$cmax :: TaskIndex -> TaskIndex -> TaskIndex
>= :: TaskIndex -> TaskIndex -> Bool
$c>= :: TaskIndex -> TaskIndex -> Bool
> :: TaskIndex -> TaskIndex -> Bool
$c> :: TaskIndex -> TaskIndex -> Bool
<= :: TaskIndex -> TaskIndex -> Bool
$c<= :: TaskIndex -> TaskIndex -> Bool
< :: TaskIndex -> TaskIndex -> Bool
$c< :: TaskIndex -> TaskIndex -> Bool
compare :: TaskIndex -> TaskIndex -> Ordering
$ccompare :: TaskIndex -> TaskIndex -> Ordering
$cp1Ord :: Eq TaskIndex
Ord)

type Pointer = (ListIndex, TaskIndex)

startPointer :: Pointer
startPointer :: Pointer
startPointer = (Int -> ListIndex
ListIndex Int
0, Int -> TaskIndex
TaskIndex Int
0)