-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Interface to the Online Encyclopedia of Integer Sequences -- -- Haskell interface to the Online Encyclopedia of Integer Sequences. @package oeis @version 0.2 -- | A Haskell interface to the Online Encyclopedia of Integer Sequences -- (OEIS), http://www.research.att.com/~njas/sequences/. Comments, -- suggestions, or bug reports should be sent to Brent Yorgey, byorgey -- at gmail dot com. module Math.OEIS -- | Look up a sequence in the OEIS by its catalog number. Generally this -- would be its A-number, but M-numbers (from the /Encyclopedia of -- Integer Sequences) and N-numbers (from the Handbook of Integer -- Sequences/) can be used as well. -- -- Note that the result is not in the IO monad, even though the -- implementation requires looking up information via the Internet. There -- are no side effects to speak of, and from a practical point of view -- the function is referentially transparent (OEIS A-numbers could change -- in theory, but it's extremely unlikely). If you're a nitpicky purist, -- feel free to use the provided getSequenceByID_IO instead. -- -- Examples: -- --
-- Prelude Math.OEIS> getSequenceByID "A000040" -- the prime numbers -- Just [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47... -- -- Prelude Math.OEIS> getSequenceByID "A-1" -- no such sequence! -- Nothing --getSequenceByID :: String -> Maybe SequenceData -- | Look up a sequence by ID number, returning a data structure containing -- the entirety of the information the OEIS has on the sequence. -- -- The standard disclaimer about not being in the IO monad -- applies. -- -- Examples: -- --
-- Prelude Math.OEIS> description `fmap` lookupSequenceByID "A000040" -- Just "The prime numbers." -- -- Prelude Math.OEIS> keywords `fmap` lookupSequenceByID "A000105" -- Just [Nonn,Hard,Nice,Core] --lookupSequenceByID :: String -> Maybe OEISSequence -- | Extend a sequence by using it as a lookup to the OEIS, taking the -- first sequence returned as a result, and using it to augment the -- original sequence. -- -- Note that xs is guaranteed to be a prefix of -- extendSequence xs. If the matched OEIS sequence contains any -- elements prior to those matching xs, they will be dropped. In -- addition, if no matching sequences are found, xs will be -- returned unchanged. -- -- The result is not in the IO monad even though the -- implementation requires looking up information via the Internet. There -- are no side effects, and practically speaking this function is -- referentially transparent (technically, results may change from time -- to time when the OEIS database is updated; this is slightly more -- likely than the results of getSequenceByID changing, but still -- unlikely enough to be essentially a non-issue. Again, purists may use -- extendSequence_IO). -- -- Examples: -- --
-- Prelude Math.OEIS> extendSequence [5,7,11,13,17] -- [5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71... ---- --
-- Prelude Math.OEIS> extendSequence [2,4,8,16,32] -- [2,4,8,16,32,64,128,256,512,1024,2048,4096,8192... ---- --
-- Prelude Math.OEIS> extendSequence [9,8,7,41,562] -- nothing matches -- [9,8,7,41,562] --extendSequence :: SequenceData -> SequenceData -- | Find a matching sequence in the OEIS database, returning a data -- structure containing the entirety of the information the OEIS has on -- the sequence. -- -- The standard disclaimer about not being in the IO monad -- applies. lookupSequence :: SequenceData -> Maybe OEISSequence -- | The same as getSequenceByID, but with a result in the IO -- monad. getSequenceByID_IO :: String -> IO (Maybe SequenceData) -- | The same as lookupSequenceByID, but in the IO monad. lookupSequenceByID_IO :: String -> IO (Maybe OEISSequence) -- | The same as extendSequence, but in the IO monad. extendSequence_IO :: [Integer] -> IO [Integer] -- | The same as lookupSequence, but in the IO monad. lookupSequence_IO :: SequenceData -> IO (Maybe OEISSequence) -- | Look up a sequence in the OEIS using its search function searchSequence_IO :: String -> IO (Maybe OEISSequence) -- | Interpret a string as a OEIS request, and return the results as -- Strings lookupOEIS :: String -> IO [String] type SequenceData = [Integer] -- | Programming language that some code to generate the sequence is -- written in. The only languages indicated natively by the OEIS database -- are Mathematica and Maple; any other languages will be listed (usually -- in parentheses) at the beginning of the actual code snippet. data Language Mathematica :: Language Maple :: Language Other :: Language -- | OEIS keywords. For more information on the meaning of each keyword, -- see -- http://www.research.att.com/~njas/sequences/eishelp2.html#RK. data Keyword Base :: Keyword Bref :: Keyword Cofr :: Keyword Cons :: Keyword Core :: Keyword Dead :: Keyword Dumb :: Keyword Dupe :: Keyword Easy :: Keyword Eigen :: Keyword Fini :: Keyword Frac :: Keyword Full :: Keyword Hard :: Keyword More :: Keyword Mult :: Keyword New :: Keyword Nice :: Keyword Nonn :: Keyword Obsc :: Keyword Sign :: Keyword Tabf :: Keyword Tabl :: Keyword Uned :: Keyword Unkn :: Keyword Walk :: Keyword Word :: Keyword -- | Data structure for storing an OEIS entry. For more information on the -- various components, see -- http://www.research.att.com/~njas/sequences/eishelp2.html. data OEISSequence OEIS :: [String] -> SequenceData -> SequenceData -> String -> [String] -> [String] -> [String] -> [String] -> String -> Int -> Int -> [(Language, String)] -> [String] -> [String] -> [Keyword] -> [String] -> OEISSequence -- | Catalog number(s), e.g. A000040, N1425. (%I) catalogNums :: OEISSequence -> [String] -- | The actual sequence data (or absolute values of the sequence data in -- the case of signed sequences). (%S,T,U) sequenceData :: OEISSequence -> SequenceData -- | Signed sequence data (empty for sequences with all positive entries). -- (%V,W,X) signedData :: OEISSequence -> SequenceData -- | Short description of the sequence. (%N) description :: OEISSequence -> String -- | List of academic references. (%D) references :: OEISSequence -> [String] -- | List of links to more information on the web. (%H) links :: OEISSequence -> [String] -- | Formulas or equations involving the sequence. (%F) formulas :: OEISSequence -> [String] -- | Cross-references to other sequences. (%Y) xrefs :: OEISSequence -> [String] -- | Author who input the sequence into the database. (%A) author :: OEISSequence -> String -- | Subscript/index of the first term. (%O) offset :: OEISSequence -> Int -- | Index of the first term > 1. (%O) firstGT1 :: OEISSequence -> Int -- | Code that can be used to generate the sequence. (%p,t,o) programs :: OEISSequence -> [(Language, String)] -- | Corrections, extensions, or edits. (%E) extensions :: OEISSequence -> [String] -- | Examples. (%e) examples :: OEISSequence -> [String] -- | Keywords. (%K) keywords :: OEISSequence -> [Keyword] -- | Comments. (%C) comments :: OEISSequence -> [String] instance Show OEISSequence instance Eq Keyword instance Show Keyword instance Read Keyword instance Show Language instance Show LookupError