demo_semigroup1 = do
  print (sconcat ((Sum (Complex 1 2)) :| [Sum (Complex 2 3)]))
  print (sconcat ((Product (Complex 1 2)) :| [Product (Complex 2 3)]))
  print (timeslp 10 (Product (Complex 1 2)))
demo_semigroup1 = do
  print (sconcat ((Sum (Complex 1 2)) :| [Sum (Complex 2 3)]))
  print (sconcat ((Product (Complex 1 2)) :| [Product (Complex 2 3)]))
  print (timeslp 10 (Product (Complex 1 2)))
demo_semigroup1 = do
  print (sconcat ((Sum (Complex 1 2)) :| [Sum (Complex 2 3)]))
  print (sconcat ((Product (Complex 1 2)) :| [Product (Complex 2 3)]))
  print (timeslp 10 (Product (Complex 1 2)))