summaryrefslogtreecommitdiff
path: root/src/Data/Paper.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Paper.hs')
-rw-r--r--src/Data/Paper.hs48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/Data/Paper.hs b/src/Data/Paper.hs
new file mode 100644
index 0000000..40ac91a
--- /dev/null
+++ b/src/Data/Paper.hs
@@ -0,0 +1,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)