# Advent of Code - 2021 - 2 ## Haskell ```hs splitLines "" = [] splitLines ('\n':ls) = splitLines ls splitLines ls = l : splitLines ls' where (l, ls') = break (== '\n') ls parse [] = [] parse (c:cs) | l == "forward" = (v, 0) : parse cs | l == "down" = (0, v) : parse cs | l == "up" = (0, -v) : parse cs where (l, _:s) = break (== ' ') c v = read s points = parse . splitLines final = foldr (\ (x, y) (x', y') -> (x + x', y + y')) (0, 0) aim a [] = [] aim a ((x, y):l) = (x, x * a) : aim (y + a) l part1 x = points x part2 x = aim 0 $ points x main = readFile "input.txt" >>= print . (\(x, y) -> x * y) . final . part2 ```