I have:
type Person = String
type Book = String
type Database = [(Person,[Book])]
I’m trying to define a function:
books :: Database -> Person -> [Book]
that takes in
1) a list of tuples (which contain a string and a list of strings
2) a String name
and returns a list of strings (namely the books from the database)
I want to use list comprehension, but I don’t know how to access elements within a list that is in the tuple inside of the database list.
Thoughts?
Example database would look like:
db = [("Bob", ["Red Riding Hood", "Alice in Wonderland"]), ("Carol", ["Game of Thrones"])]
And if I ask for say “Carol”, it should return [“Game of Thrones”].
Since you have an association list you can use the
lookupfunction. It pretty much works exactly like you want:The only difference is that it returns a
Maybebut IMHO that is the right behavior, consider what would happen if you didn’t have a value in your database when you looked it up?Since you want to use pattern matching here is the source of
lookupOr in your case