--- /dev/null
+module one
+
+import StdEnv
+import Data.Either
+import Data.Func
+import Data.Functor
+import Control.Applicative
+import Control.Monad
+import Text.Parsers.Simple.ParserCombinators
+
+read :: *File -> [[Char]]
+read f
+ # (l, f) = freadline f
+ | l.[size l - 1] <> '\n' = []
+ = [[c\\c<-:l | c <> '\n']:read f]
+
+Start w
+ # (io, w) = stdio w
+ # ls = read io
+ = (one ls, two ls)
+
+one = fmap sum o sequence o map (parse pExpr)
+two = fmap sum o sequence o map (parse pExpr`)
+
+pExpr :: Parser Char Int
+pExpr = flip pChainl1 (pOp (+) '+' <|> pOp (*) '*') $ pInt <|> (pPOpen *> pExpr <* pPClose)
+
+pExpr` :: Parser Char Int
+pExpr`
+ = flip pChainl1 (pOp (*) '*')
+ $ flip pChainl1 (pOp (+) '+')
+ $ pInt <|> (pPOpen *> pExpr` <* pPClose)
+
+pOp :: (Int Int -> Int) Char -> Parser Char (Int Int -> Int)
+pOp op c = op <$ pSpace <* pToken c <* pSpace
+
+pInt :: Parser Char Int
+pInt = toInt o toString <$> some pDigit