+instance
+ ( forall sem. Syntaxes syns sem => Constantable c sem
+ ) => Constantable c (Forall syns) where
+ constant c = Forall (constant c)
+instance
+ ( forall sem. Syntaxes syns sem => Eitherable sem
+ ) => Eitherable (Forall syns) where
+ either = Forall either
+ left = Forall left
+ right = Forall right
+instance
+ ( forall sem. Syntaxes syns sem => Equalable sem
+ ) => Equalable (Forall syns) where
+ equal = Forall equal
+instance
+ ( forall sem. Syntaxes syns sem => IfThenElseable sem
+ ) => IfThenElseable (Forall syns) where
+ ifThenElse = forall3 ifThenElse
+instance
+ ( forall sem. Syntaxes syns sem => Inferable c sem
+ ) => Inferable c (Forall syns) where
+ infer = Forall infer
+instance
+ ( forall sem. Syntaxes syns sem => Listable sem
+ ) => Listable (Forall syns) where
+ cons = Forall cons
+ nil = Forall nil
+instance
+ ( forall sem. Syntaxes syns sem => Maybeable sem
+ ) => Maybeable (Forall syns) where
+ just = Forall just
+ nothing = Forall nothing
+instance
+ ( forall sem. Syntaxes syns sem => IsoFunctor sem
+ ) => IsoFunctor (Forall syns) where
+ (<%>) iso = forall1 (iso <%>)
+instance
+ ( forall sem. Syntaxes syns sem => ProductFunctor sem
+ , forall sem. Syntaxes syns sem => IsoFunctor sem
+ , Syntaxes syns (Forall syns)
+ ) => ProductFunctor (Forall syns) where
+ (<.>) = forall2 (<.>)
+ ra <. rb = Iso Tuple.fst (,()) <%> (ra <.> rb)
+ ra .> rb = Iso Tuple.snd ((),) <%> (ra <.> rb)
+instance
+ ( forall sem. Syntaxes syns sem => SumFunctor sem
+ ) => SumFunctor (Forall syns) where
+ (<+>) = forall2 (<+>)
+instance
+ ( forall sem. Syntaxes syns sem => AlternativeFunctor sem
+ ) => AlternativeFunctor (Forall syns) where
+ (<|>) = forall2 (<|>)
+instance
+ ( forall sem. Syntaxes syns sem => Dicurryable sem
+ ) => Dicurryable (Forall syns) where
+ dicurry args constr destr = forall1 (dicurry args constr destr)
+instance
+ ( forall sem. Syntaxes syns sem => Emptyable sem
+ ) => Emptyable (Forall syns) where
+ empty = Forall empty
+instance
+ ( forall sem. Syntaxes syns sem => Semigroupable sem
+ ) => Semigroupable (Forall syns) where
+ concat = Forall concat
+instance
+ ( forall sem. Syntaxes syns sem => Optionable sem
+ ) => Optionable (Forall syns) where
+ optional = forall1 optional
+instance
+ ( forall sem. Syntaxes syns sem => Repeatable sem
+ ) => Repeatable (Forall syns) where
+ many0 = forall1 many0
+ many1 = forall1 many1
+instance
+ ( forall sem. Syntaxes syns sem => Substractable sem
+ ) => Substractable (Forall syns) where
+ (<->) = forall2 (<->)
+instance
+ ( forall sem. Syntaxes syns sem => Voidable sem
+ ) => Voidable (Forall syns) where
+ void a = forall1 (void a)