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.
Introducción a Scala y configuración del entorno de desarrollo
Introducción al curso y presentación de los objetivos
Scala en la historia
Instalando JVM, SBT y editores
Instalación de las herramientas
¡Hola, Mundo!
Fundamentos de Programación Funcional
Tipos de datos básicos
Inmutabilidad
Expresiones
Funciones
Colecciones: Secuencias, Conjuntos y Mapas
Tuplas y Objetos
La función de copy y el concepto de Lences
Conceptos básicos de Programación Funcional
Pattern Matching
Tail recursion
Agregación
Fundamentos teoricos
Funciones totales y parciales
Razonamiento inductivo
Razonamiento con tipos
Traits
Tipos genéricos
Tipos de datos algebraicos
Evaluación peresoza (Lazy)
Disyunciones: Option
Disyunciones: Either, try
Proyecto de Backend
Introducción e iniciación del proyecto
Modelo por Actores
Modelo de datos
Configuración de Slick
Controladores: Cómo obtener información de la base de datos
Controladores: Crear, actualizar y eliminar información de la base de datos
Computación paralela, asÃncrona y concurrente
Serialización
Validación
Manejo de errores en el proyecto
Exportación del proyecto
Conclusiones
Clase final
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Carlos Daniel Sanchez
Aportes 6
Preguntas 0
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.
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.
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?
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.
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
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?