-- | Look up sequences in the Online Encyclopedia of Integer Sequences -- Based on the Math.OEIS library module Lambdabot.Plugin.Reference.OEIS (oeisPlugin) where import Lambdabot.Plugin import Math.OEIS import Data.Char oeisPlugin :: Module () oeisPlugin = newModule { moduleCmds = return [ (command "oeis") { aliases = ["sequence"] , help = say "oeis . Look up a sequence in the Online Encyclopedia of Integer Sequences" , process = ios80 . lookupOEIS' } ] } lookupOEIS' :: String -> IO String lookupOEIS' a = do let a' = commas . reverse . dropWhile isSpace . reverse . dropWhile isSpace $ a x <- searchSequence_IO a' case x of Nothing -> return "Sequence not found." Just s -> return $ unlines [ concat ("https://oeis.org/" : take 1 (catalogNums s)) ++ ' ' : description s, show $ sequenceData s] where commas [] = [] commas (x:' ':xs) | isDigit x = x : ',' : commas xs commas (x:xs) = x : commas xs