aoc/src/AoC/Util.hs

11 lines
493 B
Haskell

-- | Internal module in order to facilitate testability.
module AoC.Util (solveRiddle, readFileUtf8) where
readFileUtf8 :: (MonadIO m) => FilePath -> m Text
readFileUtf8 = fmap (decodeUtf8With lenientDecode) . readFileBS
solveRiddle :: (MonadIO m) => FilePath -> (Text -> [Text]) -> m ()
solveRiddle file solver = do
results <- solver <$> readFileUtf8 file
forM_ (results `zip` [1 :: Int ..]) $ \(solution, part) ->
putTextLn $ " solution to part-" <> show part <> ": " <> solution