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
Loading
...@@ -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