No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Funciones totales y parciales

16/36
Recursos

Aportes 6

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Consideran que primero deber铆a hacer el curso de Java? Es que me estoy perdiendo un mont贸n en la sintaxis y lo resumidos que resultan los programas con Scala.

En el codigo en un momento colocaste a. head ( con espacio) y las dem谩s veces colocaste por ejm b.tail 贸 b.take(1), prob茅 con el espacio y funciona, suena algo raro de scala no?

Me surgi贸 la pregunta de: Si existen las funciones totales que nunca fallan 驴Cual es la raz贸n por la que existen funciones parciales que pueden generar errores?

Navegando por internet encontr茅 que las funciones parciales suelen tener nombres m谩s expl铆citos como en los casos del manejo de listas en este video, por ejemplo, es m谩s f谩cil identificar el primer elemento de la lista como el head o la cabeza de la lista. Pero esto de los nombres no me parece suficiente raz贸n.

Entonces segu铆 buscando y tambi茅n encontr茅 que las funciones parciales sirve para representar funciones matem谩ticas que no son inyectivas (entradas diferentes pueden generar una misma salida) o el ejemplo m谩s claro es para las funciones matem谩ticas que no son continuas. Por ejemplo, si quisieramos definir o modelar la funci贸n de arcoseno deberiamos usar una funcion parcial porque el arcoseno no esta definido en valores fuera de [-1, 1] y no tendr铆a sentido dar una respuesta fuera de ese dominio.

Imagino que si por ejemplo estuvieramos programando una calculadora y modelaramos el arcoseno como una funcion total, al hacer una cuenta con el arcoseno de 2 y retornar un valor cualquiera har铆a que al final de todas las operaciones retornaramos un valor erroneo, mi conclusi贸n es que algunas veces es mejor que el programa no de respuesta en vez de dar respuestas incorrectas xd. Es m谩s, como las funciones parciales retornan errores y excepciones podr铆amos capturarlas y ser m谩s precisos controlando en que contextos, para que datos de entrada funciona nuestro programa y que deber铆a hacer si recibe un dato de entrada no v谩lido para por ejemplo retroalimentar al usuario.

Funci贸n total

Es una funci贸n que puede dar respuesta a todos los elementos de su dominio. Es decir, que sin importar la entrada, la funci贸n ser谩 capaz de responder apropiadamente.

Funci贸n parcial

Una funci贸n que puede dar respuesta a s贸lo algunos elementos de su dominio y a otros no. Hay que tener cuidado con funciones que no est谩n bien definidas, o que son inseguras de usar por no ser totales

  • .get()
  • .head()
  • .tail()
  • .last()
val a = List(1,2,3)
//a: List[Int] = List(1,2,3)

a.head
//res: Int = 1

a.tail
//res: List[Int] = List(2,3)

val b = Nil

b.head //error, es parcial porque no responde satisfactoriamente a todos los datos
b.tail //mismo error

b.take(1)
//res: List[Nothing] = List()

b.drop(1)
//res: List[Int] = List(2,3)

Para saber si una funcion es parcial, podemos llamar el .head y si nos da una exception y esto quiere decir que es una funcion parcial ya que nos da una respuesta no satisfactoria

Funcion total, da respuesta a todo los elementos de su dominio o alcance, es diferente a una funcion parcial