Skip to content

Instantly share code, notes, and snippets.

View moonmaster9000's full-sized avatar

moonmaster9000 moonmaster9000

View GitHub Profile
clarke.books.map {|b| b.title}
# ==> ["2001: A Space Odyssey", "Rama!"]
clarkeBooks = map title $ books clarke
-- ["2001: A Space Odyssey", "Rama!"]
addAuthor a (Book b as) = Book b ((createAuthor a [b]):as)
addBook b (Author a bs) = Author a ((createBook b [a]):bs)
c2 = addBook "Garden of Rama" clarke
clarke = createAuthor "Arthur C. Clarke" ["Garden of Rama"]
lee = createAuthor "Gentry Lee" ["Garden of Rama"]
gardenAuthorsAccordingToClarke = map name $ authors $ head $ books clarke
-- ["Arthur C. Clarke"]
gardenAuthorsAccordingToLee = map name $ authors $ head $ books lee
-- ["Gentry Lee"]
fac n = foldr (*) 1 $ take n $ [1..]
infixl 9 ==>
f ==> g = g $ f
fac n = [1..] ==> take n ==> foldr (*) 1
module Library
(Author,
Book,
AuthorIndex,
BookIndex,
Catalogued,
Catalog,
addAuthor,
addBook,
associate,
infixl 9 ==>
f ==> g = g $ f
lee = Author "Gentry Lee"
clarke = Author "Arthur C. Clarke"
heinlein= Author "Robert Heinlein"
rama = Book "Garden of Rama"
catalog =
Catalog Map.empty Map.empty ==>
associate lee rama ==>