[from now] 2014/04/11 00:23:23

[36mdiff --git a/src/Book.hs b/src/Book.hs[m
[36mindex 6e2bd0b..b563d65 100644[m
[36m--- a/src/Book.hs[m
[36m+++ b/src/Book.hs[m
[34m@@ -7,13 +7,16 @@[m
[32m [m
[32m type BookInfo = Maybe String[m
[32m [m
[4m+[m[4mdata Host = Oreilly | Manning | PragmaticBookshelf | Apress | InformIt deriving (Show, Eq)[m
[4m+[m
[32m data Book = Book{title :: String[m
[32m                 , author :: BookInfo[m
[32m                 , publisher :: BookInfo[m
[32m                 , url :: BookInfo[m
[1m-                , hosting :: BookInfo[m
[4m+[m[4m                , hosting :: Maybe Host[m
[32m                 } deriving (Show, Eq)[m
[32m [m
[4m+[m
[32m defaultBook :: String -> Book[m
[32m defaultBook s = Book{title = s[m
[32m                     , author = Nothing[m
[34m@@ -22,125 +25,8 @@[m[32m [m[33mdefaultBook s = Book{title = s[m
[32m                     , hosting = Nothing}[m
[32m [m
[32m [m
[4m+[m[4mmain :: IO ()[m
[32m main = do[m
[1m-    putStrLn . show $ (defaultBook "ABC") {author = Just "Jhon"}[m
[1m-    Geometric Algebra for Computer Science[m
[1m-    Mar 15, 2014[m
[1m-    Sep 26, 2013[m
[1m-    Head First Algebra[m
[1m-    Mar 15, 2014[m
[1m-    Sep 17, 2013[m
[1m-    Functional JavaScript[m
[1m-    Mar 11, 2014[m
[1m-    Sep 19, 2013[m
[1m-    JavaScript: The Good Parts[m
[1m-    Mar 11, 2014[m
[1m-    Jan 15, 2014[m
[1m-    Learning JavaScript Design Patterns[m
[1m-    Mar 11, 2014[m
[1m-    May 16, 2013[m
[1m-    Speaking JavaScript[m
[1m-    Mar 11, 2014[m
[1m-    Mar 12, 2014[m
[1m-    Clojure Cookbook[m
[1m-    Mar 5, 2014[m
[1m-    Mar 5, 2014[m
[1m-    An Introduction to the Mathematics of Finance, 2nd Edition[m
[1m-    Dec 2, 2013[m
[1m-    Jul 19, 2013[m
[1m-    Head First Statistics[m
[1m-    Dec 2, 2013[m
[1m-    May 16, 2013[m
[1m-    Physics for Game Developers, 2nd Edition[m
[1m-    Dec 2, 2013[m
[1m-    Jun 11, 2013[m
[1m-    Ruby Under a Microscope[m
[1m-    Dec 2, 2013[m
[1m-    Mar 5, 2014[m
[1m-    Real World OCaml[m
[1m-    Sep 10, 2013[m
[1m-    Dec 12, 2013[m
[1m-    Lean UX[m
[1m-    Oct 6, 2013[m
[1m-    Mar 14, 2014[m
[1m-    The Myths of Innovation[m
[1m-    Oct 6, 2013[m
[1m-    May 1, 2013[m
[1m-    Running Lean, 2nd Edition[m
[1m-    Oct 6, 2013[m
[1m-    Oct 23, 2013[m
[1m-    Team Geek[m
[1m-    Oct 6, 2013[m
[1m-    May 1, 2013[m
[1m-    Clojure Programming[m
[1m-    Sep 8, 2013[m
[1m-    May 1, 2013[m
[1m-    Introducing Elixir[m
[1m-    Sep 8, 2013[m
[1m-    Feb 13, 2014[m
[1m-    Introducing Erlang[m
[1m-    Sep 8, 2013[m
[1m-    Jun 11, 2013[m
[1m-    Software Requirements 3, 3rd Edition[m
[1m-    Sep 8, 2013[m
[1m-    Mar 12, 2014[m
[1m-    HTML5 and CSS3 Responsive Web Design Cookbook[m
[1m-    Aug 12, 2013[m
[1m-    Aug 27, 2013[m
[1m-    Responsive Web Design with HTML5 and CSS3[m
[1m-    Aug 12, 2013[m
[1m-    Aug 27, 2013[m
[1m-    Scala Cookbook[m
[1m-    Aug 12, 2013[m
[1m-    Feb 14, 2014[m
[1m-    Land of Lisp[m
[1m-    May 3, 2013[m
[1m-    May 3, 2013[m
[1m-    Ruby Best Practices[m
[1m-    May 3, 2013[m
[1m-    May 2, 2013[m
[1m-    Ruby Cookbook[m
[1m-    May 3, 2013[m
[1m-    May 2, 2013[m
[1m-    Steampunking Our Future: An Embedded Historian$B!G(Bs Notebook[m
[1m-    Feb 13, 2013[m
[1m-    Feb 8, 2013[m
[1m-    Mind Performance Hacks[m
[1m-    Jan 2, 2013[m
[1m-    May 2, 2013[m
[1m-    97 Things Every Programmer Should Know[m
[1m-    Dec 19, 2012[m
[1m-    May 22, 2013[m
[1m-    Version Control with Git, 2nd Edition[m
[1m-    Dec 19, 2012[m
[1m-    Jul 1, 2013[m
[1m-    Code Complete, 2nd Edition[m
[1m-    Dec 18, 2012[m
[1m-    Feb 5, 2014[m
[1m-    LINQ Pocket Reference[m
[1m-    Dec 13, 2012[m
[1m-    May 22, 2013[m
[1m-    Regular Expression Pocket Reference, 2nd Edition[m
[1m-    Dec 12, 2012[m
[1m-    May 2, 2013[m
[1m-    SQL Pocket Guide, 3rd Edition[m
[1m-    Dec 12, 2012[m
[1m-    May 1, 2013[m
[1m-    Programming Perl, 4th Edition[m
[1m-    Nov 27, 2012[m
[1m-    Jan 6, 2014[m
[1m-    Programming C# 5.0[m
[1m-    Nov 26, 2012[m
[1m-    May 2, 2013[m
[1m-    SAS For Dummies, 2nd Edition[m
[1m-    Nov 26, 2012[m
[1m-    May 9, 2013[m
[1m-    Vintage Tomorrows[m
[1m-    Nov 26, 2012[m
[1m-    May 16, 2013[m
[1m-    Statistics in a Nutshell, 2nd Edition[m
[1m-    Nov 14, 2012[m
[1m-    May 2, 2013[m
[1m-    Network Warrior, 2nd Edition[m
[1m-    Nov 10, 2012[m
[1m-    May 1, 2013[m
[4m+[m[4m    oreilly <- fmap lines $ readFile "/Users/theatrical/learning_haskell/booklist/list/Oreilly.txt"[m
[4m+[m[4m    let oreilly_s s = (defaultBook s) {hosting = Just Oreilly}[m
[4m+[m[4m    mapM_ (putStrLn . show . oreilly_s) oreilly[m