QuasiQuotation library for programmatic generation of Javascript code. (http://www.haskell.org/haskellwiki/Jmacro)

#5jmacro-rpc-0.3.2 build failure with ghc 8.4

Same story wrt semigroups. As seen on the Stackage build server:

[2 of 2] Compiling Network.JMacroRPC.Panels ( Network/JMacroRPC/Panels.hs, dist/
build/Network/JMacroRPC/Panels.o )

Network/JMacroRPC/Panels.hs:145:10: error:
    • No instance for (Semigroup Event)
        arising from the superclasses of an instance declaration
    • In the instance declaration for ‘Monoid Event’
    |
145 | instance Monoid Event where
    |          ^^^^^^^^^^^^

Network/JMacroRPC/Panels.hs:279:10: error:
    • No instance for (Semigroup PageSlice)
        arising from the superclasses of an instance declaration
    • In the instance declaration for ‘Monoid PageSlice’
    |
279 | instance Monoid PageSlice where
    |          ^^^^^^^^^^^^^^^^

Network/JMacroRPC/Panels.hs:292:10: error:
    • Could not deduce (Semigroup (Panel m))
        arising from the superclasses of an instance declaration
      from the context: Monad m
        bound by the instance declaration
        at Network/JMacroRPC/Panels.hs:292:10-36
    • In the instance declaration for ‘Monoid (Panel m)’
    |
292 | instance Monad m => Monoid (Panel m) where
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Network/JMacroRPC/Panels.hs:294:55: error:                             [26/2396]
    • Could not deduce (Semigroup PageSlice) arising from a use of ‘<>’
      from the context: Monad m
        bound by the instance declaration
        at Network/JMacroRPC/Panels.hs:292:10-36
    • In the first argument of ‘liftM2’, namely ‘(<>)’
      In the first argument of ‘Panel’, namely ‘(liftM2 (<>) d d&#39;)’
      In the expression: Panel (liftM2 (<>) d d&#39;) (liftM2 (<>) u u&#39;)
    |
294 |     mappend (Panel d u) (Panel d&#39; u&#39;) = Panel (liftM2 (<>) d d&#39;) (liftM2 (
<>) u u&#39;)
    |                                                       ^^^^

Network/JMacroRPC/Panels.hs:841:53: error:
    • Could not deduce (Semigroup (Panel m)) arising from a use of ‘<>’
      from the context: (Monad m, Functor m)
        bound by the type signature for:
                   calcPanel :: forall (m :: * -> *). (Monad m, Functor m) => Pa
nel m
        at Network/JMacroRPC/Panels.hs:823:1-44
    • In the expression:
        b <>
            onEvent
              e
              (withSample cmdstoresig
                 $ \ cmdstoreval
                     -> withSample displaysig
                          $ \ dispval -> withSample storesig $ \ storeval -> ...
)
      In the second argument of ‘($)’, namely
        ‘\ e b
           -> b <>
                  onEvent
                    e
                    (withSample cmdstoresig
                       $ \ cmdstoreval -> withSample displaysig $ \ dispval -> .
..)’
      In the expression:
        button "="
          $ \ e b
              -> b <>
                     onEvent
                       e
                       (withSample cmdstoresig
                          $ \ cmdstoreval -> withSample displaysig $ \ dispval -
> ...)
    |
841 |                 equalButton = button "=" $ \ e b -> b <> onEvent e
    |                                                     ^^^^^^^^^^^^^^^...