cabal init

Set up the project and create the framework to work in.
read file from command line argument

Accept a filename as the single argument on the command line and read
(and, for the moment, print) it.

This is derived from an example given on argument handling[1], which was
released under a simple permissive license[2] that allows "any person...
to deal in the Work without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Work".

[1] Tutorials/Programming Haskell/Argument handling, available at
http://www.haskell.org/haskellwiki/index.php?title=Tutorials/Programming_Haskell/Argument_handling&oldid=54615

[2] HaskellWiki:Copyrights, available at
http://www.haskell.org/haskellwiki/index.php?title=HaskellWiki:Copyrights&oldid=1590

Issue #1 parse downloaded song list
get a list of parsed HTML song nodes

Load a file containing the kind of HTML fragments the Beatles: Rock Band
website uses, and get a list of cursors pointing to each `tr` row.

Issue #1 parse downloaded song list
parse song list

Parse the HTML fragment containing the list of songs to extract the data
it contains for each song into a data structure.

Close #1 parse downloaded song list
disambiguate field names

Haskell has the rather annoying property that two types cannot have the
same field names. The commonly accepted practice, as far as I can tell,
is to add a prefix or a suffix to the field names to disambiguate them.
The structure containing data from the song list is not the final song
data structure, so prevent overlap by prefixing its field names.

See also http://stackoverflow.com/q/3277840/25637

Issue #2 parse downloaded json song detail
add documentation to song list parsing

Issue #1 parse downloaded html song list
parse downloaded song detail

Given a downloaded copy of the song detail data, extract the data we
care about into its own data structure. This can then be combined with
the data from the song list into a final Song data structure and printed
out.

Close #3 parse downloaded json song detail