diff options
| author | Chris Wells <chris@mathematicaster.org> | 2024-12-19 11:46:31 -0600 |
|---|---|---|
| committer | Chris Wells <chris@mathematicaster.org> | 2024-12-19 11:46:31 -0600 |
| commit | cbdb612f85355930ea7a6fbc453edbdf76715f69 (patch) | |
| tree | c71441d654c6727a49719c51e8ce16c9e9f0bb54 /src/Data/Paper.hs | |
| parent | 23c9c4e32d2f54aae627c1cff7bc7fc91e771e3d (diff) | |
| download | cv-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.hs | 48 |
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) |
