demo_monoid2 = do
  -- here each function is a monoid. So we concat the function monoid to
--  generate another function and apply it to 3.
--  This example is quite meaningful...
  print (mconcat [genList1, genList2, genList3] 3)
demo_monoid2 = do
  -- here each function is a monoid. So we concat the function monoid to
--  generate another function and apply it to 3.
--  This example is quite meaningful...
  print (mconcat [genList1, genList2, genList3] 3)
demo_monoid2 = do
  -- here each function is a monoid. So we concat the function monoid to
--  generate another function and apply it to 3.
--  This example is quite meaningful...
  print (mconcat [genList1, genList2, genList3] 3)