Skip to content
Snippets Groups Projects
Commit 29933c50 authored by joel.vonderwe's avatar joel.vonderwe
Browse files

Changed Predicate type

parent bd334772
No related branches found
No related tags found
No related merge requests found
...@@ -12,7 +12,7 @@ object Predicates { ...@@ -12,7 +12,7 @@ object Predicates {
* La méthode 'not' retourne un nouveau prédicat dont le résultat * La méthode 'not' retourne un nouveau prédicat dont le résultat
* est toujours la négation du résultat de l'argument. * est toujours la négation du résultat de l'argument.
*/ */
def not[A]( p: (A)=>Boolean ): (A)=>Boolean = { (a:A) => def not[A]( p: P[A] ): P[A] = { (a:A) =>
!p(a) !p(a)
} }
...@@ -20,7 +20,7 @@ object Predicates { ...@@ -20,7 +20,7 @@ object Predicates {
* La méthode 'and' retourne un nouveau prédicat dont le résultat * La méthode 'and' retourne un nouveau prédicat dont le résultat
* est toujours la conjonction des résultats des deux arguments. * est toujours la conjonction des résultats des deux arguments.
*/ */
def and[A]( p1: (A)=>Boolean, p2: (A)=>Boolean ): (A)=>Boolean = { (a:A) => def and[A]( p1: P[A], p2: P[A] ): P[A] = { (a:A) =>
p1(a) && p2(a) p1(a) && p2(a)
} }
...@@ -28,7 +28,7 @@ object Predicates { ...@@ -28,7 +28,7 @@ object Predicates {
* La fonction 'or' retourne un nouveau prédicat dont le résultat * La fonction 'or' retourne un nouveau prédicat dont le résultat
* est toujours la disjonction des résultats des deux arguments. * est toujours la disjonction des résultats des deux arguments.
*/ */
def or[A]( p1: (A)=>Boolean, p2: (A)=>Boolean ): (A)=>Boolean = { (a:A) => def or[A]( p1: P[A], p2: P[A] ): P[A] = { (a:A) =>
p1(a) || p2(a) p1(a) || p2(a)
} }
...@@ -37,7 +37,7 @@ object Predicates { ...@@ -37,7 +37,7 @@ object Predicates {
* résultat est vrai si au moins un des prédicat de l'argument est * résultat est vrai si au moins un des prédicat de l'argument est
* vrai. * vrai.
*/ */
def exists[A]( ps: List[(A)=>Boolean] ): (A)=>Boolean = { (a:A) => def exists[A]( ps: List[P[A]] ): P[A] = { (a:A) =>
ps match { ps match {
case p :: Nil => p(a) case p :: Nil => p(a)
case p :: _ if p(a) => true case p :: _ if p(a) => true
...@@ -50,7 +50,7 @@ object Predicates { ...@@ -50,7 +50,7 @@ object Predicates {
* résultat est vrai si et seulement si tous les prédicats de * résultat est vrai si et seulement si tous les prédicats de
* l'argument sont vrais. * l'argument sont vrais.
*/ */
def forall[A]( ps: List[(A)=>Boolean] ): (A)=>Boolean = { (a:A) => def forall[A]( ps: List[P[A]] ): P[A] = { (a:A) =>
ps match { ps match {
case p :: Nil => p(a) case p :: Nil => p(a)
case p :: _ if !p(a) => false case p :: _ if !p(a) => false
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment