Copyright | (c) Justin Le 2018 |
---|---|
License | BSD3 |
Maintainer | justin@jle.im |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
AOC.Discover
Description
Template Haskell for discovering all named challenges in a given directory.
Synopsis
- mkChallengeMap :: [(Day, (Part, SomeSolution))] -> ChallengeMap
- solutionList :: FilePath -> Code Q [(Day, (Part, SomeSolution))]
- type ChallengeMap = Map Day (Map Part SomeSolution)
- data ChallengeSpec = CS {}
- solSpec :: Name -> ChallengeSpec
- solSpecStr :: String -> Either (ParseErrorBundle String Void) ChallengeSpec
- solSpecStr_ :: String -> ChallengeSpec
- charPart :: Char -> Maybe Part
- challengeName :: Parser ChallengeSpec
- solverNFData :: Name -> Q Bool
- deepInstance :: Name -> Type -> Q Bool
Documentation
mkChallengeMap :: [(Day, (Part, SomeSolution))] -> ChallengeMap Source #
Meant to be called like:
mkChallengeMap $$(solutionList "src/AOC/Challenge")
solutionList :: FilePath -> Code Q [(Day, (Part, SomeSolution))] Source #
Template Haskell splice to produce a list of all named solutions in
a directory. Expects solutions as function names following the format
dayDDp
, where DD
is a two-digit zero-added day, and p
is
a lower-case letter corresponding to the part of the challenge.
See mkChallengeMap
for a description of usage.
type ChallengeMap = Map Day (Map Part SomeSolution) Source #
A map of days to parts to solutions.
data ChallengeSpec Source #
A specification for a specific challenge. Should consist of a day and a lowercase character.
Instances
Eq ChallengeSpec Source # | |
Defined in AOC.Discover Methods (==) :: ChallengeSpec -> ChallengeSpec -> Bool # (/=) :: ChallengeSpec -> ChallengeSpec -> Bool # | |
Ord ChallengeSpec Source # | |
Defined in AOC.Discover Methods compare :: ChallengeSpec -> ChallengeSpec -> Ordering # (<) :: ChallengeSpec -> ChallengeSpec -> Bool # (<=) :: ChallengeSpec -> ChallengeSpec -> Bool # (>) :: ChallengeSpec -> ChallengeSpec -> Bool # (>=) :: ChallengeSpec -> ChallengeSpec -> Bool # max :: ChallengeSpec -> ChallengeSpec -> ChallengeSpec # min :: ChallengeSpec -> ChallengeSpec -> ChallengeSpec # | |
Show ChallengeSpec Source # | |
Defined in AOC.Discover Methods showsPrec :: Int -> ChallengeSpec -> ShowS # show :: ChallengeSpec -> String # showList :: [ChallengeSpec] -> ShowS # | |
IsString ChallengeSpec Source # | |
Defined in AOC.Discover Methods fromString :: String -> ChallengeSpec # |
solSpec :: Name -> ChallengeSpec Source #
Get a ChallengeSpec
from a given reified solution (name).
solSpec 'day02a == CS { _csDay = 1, _csPart = a
}
solSpecStr :: String -> Either (ParseErrorBundle String Void) ChallengeSpec Source #
solSpecStr_ :: String -> ChallengeSpec Source #
challengeName :: Parser ChallengeSpec Source #