@@ -301,8 +301,20 @@ data RenderVerilog a
301301 (List (String , String ) -> List VDecl -> List TypeInfo ->
302302 (a , List (String , String ), List VDecl , List TypeInfo ))
303303
304+ instance Functor RenderVerilog where
305+ fmap f (RenderVerilog g) = RenderVerilog $ \ names decls infos ->
306+ case g names decls infos of
307+ (x, names', decls', infos') -> (f x, names', decls', infos')
308+
309+ instance Applicative RenderVerilog where
310+ pure x = RenderVerilog $ \ names decls infos -> (x, names, decls, infos)
311+ liftA2 f (RenderVerilog g) (RenderVerilog h) = RenderVerilog $ \ names decls infos ->
312+ case g names decls infos of
313+ (x, names', decls', infos') ->
314+ case h names' decls' infos' of
315+ (y, names'', decls'', infos'') -> (f x y, names'', decls'', infos'')
316+
304317instance Monad RenderVerilog where
305- return x = RenderVerilog $ \ names decls infos -> (x, names, decls, infos)
306318 bind (RenderVerilog f) g = RenderVerilog $ \ names decls infos ->
307319 case f names decls infos of
308320 (x, names', decls', infos') ->
@@ -541,7 +553,7 @@ instance VerilogRepr (Int n) where
541553
542554instance (VerilogRepr a , Bits a n , TypeId a ) => VerilogRepr (Maybe a ) where
543555 verilogType = mkStructType " Prelude" " value"
544- verilogFields _ base = liftM2 append
556+ verilogFields _ base = liftA2 append
545557 (mkField (prx :: Bool ) (" has_" +++ base))
546558 (mkField (prx :: a ) base)
547559
@@ -584,7 +596,7 @@ class VerilogTupleRepr a where
584596 RenderVerilog (List (VField , FieldInfo ))
585597
586598instance (VerilogRepr a , VerilogTupleRepr b ) => VerilogTupleRepr (a , b ) where
587- verilogTupleFields _ i name = liftM2 append
599+ verilogTupleFields _ i name = liftA2 append
588600 (verilogFields (prx :: a ) $ name +++ integerToString i)
589601 (verilogTupleFields (prx :: b ) (i + 1 ) name)
590602
@@ -782,7 +794,7 @@ class VerilogSummands a where
782794
783795instance (VerilogSummands a , VerilogSummands b ) =>
784796 VerilogSummands (Either a b ) where
785- verilogSummands _ polyBaseName baseName pkg maxWidth = liftM2 append
797+ verilogSummands _ polyBaseName baseName pkg maxWidth = liftA2 append
786798 (verilogSummands (prx :: a ) polyBaseName baseName pkg maxWidth)
787799 (verilogSummands (prx :: b ) polyBaseName baseName pkg maxWidth)
788800
@@ -848,7 +860,7 @@ instance VerilogFields () where
848860 verilogFields' _ _ = return nil
849861
850862instance (VerilogFields a , VerilogFields b ) => VerilogFields (a , b ) where
851- verilogFields' _ named = liftM2 append
863+ verilogFields' _ named = liftA2 append
852864 (verilogFields' (prx :: a ) named)
853865 (verilogFields' (prx :: b ) named)
854866
0 commit comments