Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[PdeP] Aplicación Parcial
Autor Mensaje
bareel Sin conexión
Profesor del Modulo A
Moving Forward.
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 213
Agradecimientos dados: 45
Agradecimientos: 8 en 6 posts
Registro en: Oct 2011
Mensaje: #1
[PdeP] Aplicación Parcial Trabajo practico Paradigmas de Programación
Hola compañeros! cómo están?

Les quería consultar sobre un tema que no logro entender: aplicación parcial.
Tomé un ejercicio como para ponerlo en práctica pero no tengo idea de cómo implementarlo:

3.1. Resolver la función del ejercicio 1.2 de esta guía esMultiploDe/2, utilizando aplicación parcial y composición

La función implementada "normalmente" es:

esMultiploDe :: Integer -> Integer -> Bool
esMultiploDe numeroA numeroB = numeroB `mod` numeroA == 0

Ahora bien, cómo puedo implementar la función para aplicar los conceptos?

Desde ya, muchas gracias!!
27-11-2014 13:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.396
Agradecimientos dados: 202
Agradecimientos: 297 en 186 posts
Registro en: Jun 2008
Mensaje: #2
RE: [PdeP] Aplicación Parcial
http://uqbar-wiki.org/index.php?title=Ap...3n_Parcial


La idea de la aplicación parcial es generar una nueva función a partir de fijarle ciertos parámetros a una función previa.

No quiero darte ejemplos con números para que no sea trivial aplicar la solución en tu ejercicio, así que el ejemplo va a ser medio pedorro. Pero imaginate una función "concatenar" que recibe dos cadenas y devuelve la concatenación de ambas:


concatenar unaFrase otraFrase = unaFrase ++ otraFrase


Puedo hacer una función "saludar" que reciba una única cadena como parámetro, y salude a eso:


saludar alguien = concatenar "Hola, " ++ alguien


(OK, podría no acordarme cómo se declaraban los strings en haskell, sepan disculpar mi óxido =) - ¡y corregirme!)

Pero como concatenar es una función que espera dos parámetros puedo evitar declarar ese "alguien" en mi función saludar:


saludar = concatenar "Hola, "


Haskell sabe que concatenar recibe dos parámetros, entonces, como saludar ya le prefija uno de esos dos, sabe que el tipo de saludar es el mismo que concatenar pero sin el primer parámetro (porque ya no es más un parámetro, lo tiene fijo).

Entonces saludar termina siendo una función que va de un único String a un String resultado, en lugar de ir de dos Strings a uno como hacía concatenar.


No se si fui del todo claro, repreguntá at will =)

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
27-11-2014 13:53
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Desert69 recibio 1 Gracias por este post
bareel (01-12-2014)
.-Fede-. Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 254
Agradecimientos dados: 68
Agradecimientos: 41 en 39 posts
Registro en: Nov 2011
Facebook
Mensaje: #3
RE: [PdeP] Aplicación Parcial
Es lo que dijo desert...básicamente es cuando a un función no le pasas todos los parametros.

Por ejemplo si tenes la funcion suma que espera dos numeros A y B
y haces suma A
entonces tenes una nueva funcion "suma A" que espera recibir un numero B

No se si se entiende...yo lo entiendo así.
(Este mensaje fue modificado por última vez en: 30-11-2014 00:10 por .-Fede-..)
27-11-2014 15:44
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] .-Fede-. recibio 1 Gracias por este post
bareel (01-12-2014)
bareel Sin conexión
Profesor del Modulo A
Moving Forward.
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 213
Agradecimientos dados: 45
Agradecimientos: 8 en 6 posts
Registro en: Oct 2011
Mensaje: #4
RE: [PdeP] Aplicación Parcial
Compañeros, lo cierto es que leí 500 veces lo que me explicaron y no lo logro entender.
Quizá con un ejemplo particular lo pueda comprender.
Tengo el siguiente ejercicio:

4.6. Definir la función esMayorDeEdad, que dada una tupla de 2 elementos (persona, edad) me devuelva True si es mayor de 21 años y False en caso contrario. Por Ej:.
Main> esMayorDeEdad(juan,18)
False
Nota: Definir la función utilizando aplicación parcial y composición.


Yo la definí así:

esMayorDeEdad:: (String,Integer) -> Bool
esMayorDeEdad persona = snd(persona) > 21

O podría haberla defindio así:

esMayorDeEdad:: (String,Integer) -> Bool
esMayorDeEdad (nombre,edad) = edad > 21

Por último la defini así:

esMayorDeEdad:: (String,Integer) -> Bool
esMayorDeEdad persona = ((>21).snd)persona (Acá aplicando Composición)

Claramente en ninguno de los dos casos estos aplicando composición, y de más esta decir, aplicación parcial. No se me ocurre cómo podría implementarlo en este ejemplo.

Aplicación parcial es el único tema que me faltaría entender =(

Mil gracias por la ayuda!!!
(Este mensaje fue modificado por última vez en: 27-11-2014 20:47 por bareel.)
27-11-2014 20:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrong Sin conexión
Secretario de la SAE
...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 517
Agradecimientos dados: 135
Agradecimientos: 284 en 42 posts
Registro en: Sep 2008
Mensaje: #5
RE: [PdeP] Aplicación Parcial
Lee esto que explica bastante bien lo que es:

Utilizar la aplicación parcial de funciones (o llamar a las funciones con menos parámetros) es una forma sencilla de crear funciones al vuelo de forma que podamos pasarlas como parámetros a otras funciones o dotarlas con algunos datos

http://aprendehaskell.es/content/OrdenSuperior
29-11-2014 21:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] leandrong recibio 1 Gracias por este post
bareel (01-12-2014)
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.396
Agradecimientos dados: 202
Agradecimientos: 297 en 186 posts
Registro en: Jun 2008
Mensaje: #6
RE: [PdeP] Aplicación Parcial
Cuando la definís así:


esMayorDeEdad:: (String,Integer) -> Bool
esMayorDeEdad persona = ((>21).snd)persona


Estás aplicando parcialmente la función >.

> ("mayor") es una función que va de dos Ord a un Boolean. Por ejemplo, podríamos hacer "10 > 5" o "25 > 21" para obtener booleanos.

Cuando escribís "(>21)" lo que estás haciendo es aplicar parcialmente la función > : lo que obtenés no es un booleano, si no una función que recibe un único Ord (un número, por ejemplo) y te devuelve un booleano indicando si ese Ord es mayor a 21.

¿Se entiende?

El chiste es ese: tenías una función reee genérica, >, que te permitía comparar dos Ords. Y vos la aplicaste parcialmente, fijándole uno de sus dos parámetros, y entonces ahora tenés una nueva función (">21") que sabe decir si el único parámetro que recibe es mayor a 21 o no - o sea, es más específica que >.

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
01-12-2014 12:37
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Desert69 recibio 1 Gracias por este post
bareel (01-12-2014)
bareel Sin conexión
Profesor del Modulo A
Moving Forward.
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 213
Agradecimientos dados: 45
Agradecimientos: 8 en 6 posts
Registro en: Oct 2011
Mensaje: #7
RE: [PdeP] Aplicación Parcial
Aaaaaaah, creo que ahora lo estoy entendiendo un poco mejor.

Lo voy a revisar de nuevo!!!

Mil gracias compañeros por la buena onda!!
01-12-2014 20:28
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.396
Agradecimientos dados: 202
Agradecimientos: 297 en 186 posts
Registro en: Jun 2008
Mensaje: #8
RE: [PdeP] Aplicación Parcial
Creo que el mayor problema con la aplicación parcial es que es un concepto tan simple que cuesta entender que está pasando algo grosísimo ahí...

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
02-12-2014 01:30
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.