First buildable code after refactoring
Use ByteString instead of String to avoid improve performance
(assuming ID are ascii)
Let cabal to use >= 1.16 and switch on ghc warning options.
The default standard to use Haskell2010
Fix ghc warnings
add log string to show what the current params are
Fix several bugs

1. (logic error) using zipWith but not list comprehension
2. output element without any recommendation
Add a bash script to run simple test cases
Make function import explicit