summaryrefslogtreecommitdiff
path: root/src/Data/Paper.hs
diff options
context:
space:
mode:
authorChris Wells <chris@mathematicaster.org>2024-12-19 11:46:31 -0600
committerChris Wells <chris@mathematicaster.org>2024-12-19 11:46:31 -0600
commitcbdb612f85355930ea7a6fbc453edbdf76715f69 (patch)
treec71441d654c6727a49719c51e8ce16c9e9f0bb54 /src/Data/Paper.hs
parent23c9c4e32d2f54aae627c1cff7bc7fc91e771e3d (diff)
downloadcv-cbdb612f85355930ea7a6fbc453edbdf76715f69.tar
cv-cbdb612f85355930ea7a6fbc453edbdf76715f69.tar.gz
cv-cbdb612f85355930ea7a6fbc453edbdf76715f69.tar.bz2
cv-cbdb612f85355930ea7a6fbc453edbdf76715f69.tar.lz
cv-cbdb612f85355930ea7a6fbc453edbdf76715f69.tar.xz
cv-cbdb612f85355930ea7a6fbc453edbdf76715f69.tar.zst
cv-cbdb612f85355930ea7a6fbc453edbdf76715f69.zip
Thinking about doing this in haskell
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)