@@ -54,19 +54,21 @@ abstract class FuncInstances1 {
5454
5555sealed trait FuncFunctor [F [_], C ] extends Functor [Lambda [X => Func [F , C , X ]]] {
5656 def F : Functor [F ]
57- override def map [A , B ](fa : Func [F , C , A ])(f : A => B ): Func [F , C , B ] =
57+ def map [A , B ](fa : Func [F , C , A ])(f : A => B ): Func [F , C , B ] =
5858 fa.map(f)(F )
5959}
6060
6161sealed trait FuncApply [F [_], C ] extends Apply [Lambda [X => Func [F , C , X ]]] with FuncFunctor [F , C ] {
6262 def F : Apply [F ]
63- override def ap [A , B ](fa : Func [F , C , A ])(f : Func [F , C , A => B ]): Func [F , C , B ] =
63+ def ap [A , B ](fa : Func [F , C , A ])(f : Func [F , C , A => B ]): Func [F , C , B ] =
6464 Func .func(c => F .ap(fa.run(c))(f.run(c)))
65+ def product [A , B ](fa : Func [F , C , A ], fb : Func [F , C , B ]): Func [F , C , (A , B )] =
66+ Func .func(c => F .product(fa.run(c), fb.run(c)))
6567}
6668
6769sealed trait FuncApplicative [F [_], C ] extends Applicative [Lambda [X => Func [F , C , X ]]] with FuncApply [F , C ] {
6870 def F : Applicative [F ]
69- override def pure [A ](a : A ): Func [F , C , A ] =
71+ def pure [A ](a : A ): Func [F , C , A ] =
7072 Func .func(c => F .pure(a))
7173}
7274
@@ -119,10 +121,12 @@ abstract class AppFuncInstances {
119121
120122sealed trait AppFuncApplicative [F [_], C ] extends Applicative [Lambda [X => AppFunc [F , C , X ]]] {
121123 def F : Applicative [F ]
122- override def map [A , B ](fa : AppFunc [F , C , A ])(f : A => B ): AppFunc [F , C , B ] =
124+ def map [A , B ](fa : AppFunc [F , C , A ])(f : A => B ): AppFunc [F , C , B ] =
123125 fa.map(f)
124- override def ap [A , B ](fa : AppFunc [F , C , A ])(f : AppFunc [F , C , A => B ]): AppFunc [F , C , B ] =
126+ def ap [A , B ](fa : AppFunc [F , C , A ])(f : AppFunc [F , C , A => B ]): AppFunc [F , C , B ] =
125127 Func .appFunc[F , C , B ](c => F .ap(fa.run(c))(f.run(c)))(F )
126- override def pure [A ](a : A ): AppFunc [F , C , A ] =
128+ def product [A , B ](fa : AppFunc [F , C , A ], fb : AppFunc [F , C , B ]): AppFunc [F , C , (A , B )] =
129+ Func .appFunc[F , C , (A , B )](c => F .product(fa.run(c), fb.run(c)))(F )
130+ def pure [A ](a : A ): AppFunc [F , C , A ] =
127131 Func .appFunc[F , C , A ](c => F .pure(a))(F )
128132}
0 commit comments