diff --git a/haskell/.gitignore b/haskell/.gitignore
new file mode 100644
index 0000000..dd6d73c
--- /dev/null
+++ b/haskell/.gitignore
@@ -0,0 +1,3 @@
+problem
+problem.hi
+problem.o
\ No newline at end of file
diff --git a/haskell/2015/1/problem.hs b/haskell/2015/1/problem.hs
new file mode 100644
index 0000000..87477dd
--- /dev/null
+++ b/haskell/2015/1/problem.hs
@@ -0,0 +1,25 @@
+import System.IO  
+import Control.Monad
+
+main = do  
+        let list = []
+        inputHandle <- openFile "../data/2015/1/input.txt" ReadMode
+        input <- hGetContents inputHandle
+        putStr "Part 1: "
+        putStrLn $ finalFloor input 0
+
+        putStr "Part 2: "
+        putStrLn $ basementSteps input 0 0
+        hClose inputHandle   
+
+finalFloor :: String -> Int -> String
+
+finalFloor ('(' : rest) floor = finalFloor rest (floor + 1)
+finalFloor (')' : rest) floor = finalFloor rest (floor - 1)
+finalFloor _ floor = show floor
+
+basementSteps :: String -> Int -> Int -> String
+basementSteps _ (-1) steps = show steps
+basementSteps ('(' : rest) floor steps = basementSteps rest (floor + 1) (steps + 1)
+basementSteps (')' : rest) floor steps = basementSteps rest (floor - 1) (steps + 1)
+basementSteps _ _ steps = show steps
\ No newline at end of file
diff --git a/haskell/bin/run b/haskell/bin/run
new file mode 100755
index 0000000..020d3d8
--- /dev/null
+++ b/haskell/bin/run
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+year=$1
+day=$2
+
+ghc -o $year/$day/problem $year/$day/problem.hs && time ./$year/$day/problem