summaryrefslogtreecommitdiff
path: root/src/Data/Paper.hs
blob: 40ac91a319510e55b2ccb7b3bce5be2b640ece69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
module Data.Paper
    ( Paper (..)
    , ArXiv (..)
    , DOI (..)
    ) where

import Data.Name

data Paper a = Paper
    { date :: !Day
    , authors :: ![Name a]
    , title :: !a
    , doi :: !(Maybe (DOI a))
    , arXiv :: !(Maybe (ArXiv a))
    , pubStatus :: !(PubStatus a)
    , abstract :: !a
    }

data ArXiv a = ArXiv
    { arxivDate :: !Day
    , arxivID :: !a
    , arxivClasses :: !(NonEmpty (ArXivClass a))
    } deriving (Eq, Foldable, Functor, Generic, Ord, Show, Traversable)

data ArXivClass a = ArXiv
    { archive :: !a
    , subjectClass :: !a
    } deriving (Eq, Foldable, Functor, Generic, Ord, Show, Traversable)

newtype DOI a = DOI a
    deriving stock (Eq, Foldable, Functor, Generic, Ord, Show, Traversable)


data PubStatus a
    = Submitted
        { journal :: !a
        }
    | Accepted
        { journal :: !a
        }
    | Published
        { journal :: !a
        , volume :: !(Maybe a)
        , number :: !(Maybe a)
        , pages :: !(Maybe a)
        }
    | UnPublished
    deriving (Eq, Foldable, Functor, Generic, Ord, Show, Traversable)