aoc2016

Safe HaskellSafe
LanguageHaskell2010

Common

Description

 

Synopsis

Documentation

readDataFile :: String -> IO String #

The readDataFile function reads the contents of a file in the data directory as a string.

unfold #

Arguments

:: (a -> b -> ([a], b))

A function from an element and accumulator to a tuple of list of children elements and updated accumulator

-> b

The initial accumulator

-> [a]

The initial set of elements

-> [a]

The results

The unfold function is like unfoldr generalized to a tree, or like an accumulating breadth-first traversal of unfoldTree.

In the special case where each node of the tree has at most one child, unfold will build the same list that unfoldr would.

unfoldr f b0 == unfold (\_ b -> maybe ([], b) (\(a, b') -> ([a], b')) (f b)) b0 [undefined]

In the special case where there is no accumulator being passed through every level built, unfold will produce the same list that a breadth-first traversal of unfoldTree would.

concat (levels (foldTree f b0)) == map fst (unfold (\(_, bs) _ -> (map f bs, ())) () [f b0])