@@ -25,16 +25,31 @@ package syntax
25
25
trait ApplicativeSyntax {
26
26
implicit final def catsSyntaxApplicativeId [A ](a : A ): ApplicativeIdOps [A ] =
27
27
new ApplicativeIdOps [A ](a)
28
- implicit final def catsSyntaxApplicative [F [_], A ](fa : F [A ]): ApplicativeOps [F , A ] =
28
+ implicit final def catsSyntaxApplicativeByName [F [_], A ](fa : => F [A ]): ApplicativeByNameOps [F , A ] =
29
+ new ApplicativeByNameOps [F , A ](() => fa)
30
+ implicit final def catsSyntaxApplicativeByValue [F [_], A ](fa : F [A ]): ApplicativeByValueOps [F , A ] =
31
+ new ApplicativeByValueOps [F , A ](fa)
32
+ @ deprecated(" Use by-value or by-name version" , " 2.8.0" )
33
+ final def catsSyntaxApplicative [F [_], A ](fa : F [A ]): ApplicativeOps [F , A ] =
29
34
new ApplicativeOps [F , A ](fa)
30
35
}
31
36
32
37
final class ApplicativeIdOps [A ](private val a : A ) extends AnyVal {
33
38
def pure [F [_]](implicit F : Applicative [F ]): F [A ] = F .pure(a)
34
39
}
35
40
41
+ @ deprecated(" Use by-value or by-name version" , " 2.8.0" )
36
42
final class ApplicativeOps [F [_], A ](private val fa : F [A ]) extends AnyVal {
37
43
def replicateA (n : Int )(implicit F : Applicative [F ]): F [List [A ]] = F .replicateA(n, fa)
38
44
def unlessA (cond : Boolean )(implicit F : Applicative [F ]): F [Unit ] = F .unlessA(cond)(fa)
39
45
def whenA (cond : Boolean )(implicit F : Applicative [F ]): F [Unit ] = F .whenA(cond)(fa)
40
46
}
47
+
48
+ final class ApplicativeByValueOps [F [_], A ](private val fa : F [A ]) extends AnyVal {
49
+ def replicateA (n : Int )(implicit F : Applicative [F ]): F [List [A ]] = F .replicateA(n, fa)
50
+ }
51
+
52
+ final class ApplicativeByNameOps [F [_], A ](private val fa : () => F [A ]) extends AnyVal {
53
+ def unlessA (cond : Boolean )(implicit F : Applicative [F ]): F [Unit ] = F .unlessA(cond)(fa())
54
+ def whenA (cond : Boolean )(implicit F : Applicative [F ]): F [Unit ] = F .whenA(cond)(fa())
55
+ }
0 commit comments