GOOGLE ADS

miércoles, 20 de abril de 2022

Cómo la recursividad en la clase de caso Scala (funciones lógicas)

cuando estudiaba programacion y la tarea en scala se me coloco el problema

el código de error es el tipo de clase requerido pero Bool encontró la clase de caso TrueBool extiende Bool

Intento de muchas maneras pero no puedo hacer coincidir el tipo

 sealed trait Bool
case class True[Bool]() extends Bool
case class False[Bool]() extends Bool
case class And[Bool](elem1: Bool,elem2: Bool) extends Bool
case class Or[Bool](elem1: Bool, elem2: Bool) extends Bool
case class Neg[Bool](elem1: Bool) extends Bool
case class Imply[Bool](elem1: Bool, elem2: Bool) extends Bool
def formula(fma: Bool): Boolean = fma match {
// use recursion function and make consist of logical operation Neg, Or, And, Imply
case True() => true
case False() => false
case And(elem1, elem2) => if(formula(elem1) && formula(elem2)){
return true
}else{
return false
}
case Or(elem1, elem2) => if(formula(elem1) || formula(elem2)){
return true
}else{
return false
}
case Neg(elem1) => if( formula(elem1) ){
return false
}else{
return true
}
case Imply(elem1, elem2) => if(formula(elem1)){
if(formula(elem2)){
return true
}else{
return false
}
}else{
return false
}
}
println("** p10 **")
val fma = Imply(And(True, Or(True, False)), False)
println(formula(fma))

}


Solución del problema

case class True[Bool]() extends Bool

No creo que esto haga lo que quieres. Introduce un parámetro de tipo Bool, que no tiene ninguna relación con su Boolrasgo.

No puede extender un parámetro de tipo (genérico). Esto es lo mismo que:

case class True[B]() extends B

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...