• Inicio
  • Buscar
  • Ingresar
  • Registrarse

    Google Discover va a implantar vídeos de anuncios como ya está haciendo en Youtube Shorts

    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • Otros »
    • [Haskell] Duda con función que devuelve una dupla de una lista de duplas
    • Imprimir
    Páginas: [1]   Ir Abajo

    Autor Tema: [Haskell] Duda con función que devuelve una dupla de una lista de duplas  (Leído 2464 veces)

    Desconectado adri92

    • { L3 } Über
    • ***
    • Mensajes: 193
      • Ver Perfil
      • Tu web de magia e ilusionismo
    [Haskell] Duda con función que devuelve una dupla de una lista de duplas
    « en: Diciembre 09, 2012, 05:51:51 pm »
    Muy buenas chicos!

    Os comento, tengo un ejercicio por aquí que me está dando algunos problemitas.
    Os comento... Tengo un tipo Empleado que se define como sigue:

    type Empleado = (Edad, Nombre) , donde Edad es un tipo Integer y nombre un String.

    Hasta ahí perfecto.
    Además de esto, me he creado una "Db", tal que así:

    Db = [Empleado], para tener una "base de datos" con una lista de empleados.

    Tengo que hacer una función, masJoven, que me devuelva el empleado más joven de todo el listado.

    De momento tengo esto:

    Código: [Seleccionar]
    type Edad = Integer
    type Nombre = String
    type Empleado = (Edad, Nombre)
    type Db = [Empleado]

    masJoven :: Db -> Empleado
    masJoven (x:[]) = x
    masJoven (x:y:[]) = if (fst x) < (fst y) then x
                            else y
    masJoven (x:y:xs) = ¿?¿?¿¿??¿¿?¿?¿¿ =(

    Pero no tengo ni idea de hacer el caso para cuando la lista tiene más de dos elementos (esto es, más de dos duplas) =(

    A ver si me podéis echar una mano chicos.

    gracias!
    En línea

    Desconectado kenkeiras

    • { L2 } Nativo Digital
    • **
    • Mensajes: 140
      • Ver Perfil
      • Código para llevar
    Re:[Haskell] Duda con función que devuelve una dupla de una lista de duplas
    « Respuesta #1 en: Diciembre 14, 2012, 07:56:28 pm »
    En programación funcional para esas cosas se usa recursividad [ http://learnyouahaskell.com/recursion ]
    Cuesta un poco verlo al principio pero una vez se enciende la bombilla se toma rápidamente la costumbre ;).

    Suerte
    « Última modificación: Diciembre 14, 2012, 07:59:20 pm por kenkeiras »
    En línea
    Un mundo lleno de ordenadores que no puedes entender, no puedes arreglar y no puedes usar es un mundo controlado por las máquinas. -- Eben Moglen

    Desconectado cipos

    • { L0 } Ñuub
    • Mensajes: 20
      • Ver Perfil
    Re:[Haskell] Duda con función que devuelve una dupla de una lista de duplas
    « Respuesta #2 en: Diciembre 24, 2012, 02:56:13 am »
     El código de la función sería el siguiente:
    Código: [Seleccionar]
    masJoven :: Db -> Empleado
    masJoven (x:[]) = x
    masJoven (x:y:xs) = if (fst x) < (fst y) then masJoven (x:xs) else masJoven (y:xs)

     Si se da que dos personas tienen la misma edad, dejo que mantenga la clave que había elegido. El tema es que entiendas lo que hace el algoritmo. Si necesitas que lo expliqué avisa e intento aclararte cómo se encaran este tipo de ejercicios de recursividad.

     Es un ejercicio bastante simple de recursividad, yo te diría que leas un poco sobre el tema por que si sigues avanzando en programación funcional sin entender recursión, no vas a entender nada.

     Si te interesa entender el tema puedo recomendarte libros (no se si están en internet), o algunas páginas sobre el tema. Si sólo querías que te hagan los deberes pues, ahí lo tienes.

     Una página como para empezar es http://aprendehaskell.es. Lo mejor, creo yo, es estudiar de libros, no de apuntes sueltos de internet, estos sirven para leer sobre algún punto que no queda muy claro en el libro. Pero para arrancar creo que es mejor estudiar de un libro. Yo aprendí Haskell con el libro de Richard Bird "Introducción a la programación funcional con Haskell", creo que esta en internet para descargar el PDF. Mi consejo es que consigas ese libro (u otro que te recomienden) y lo estudies de ahí.

     Había un libro que creo no esta en internet que se llama "Razonando con Haskell, un curso de programación funcional" o algo así era el título, no recuerdo el/la autora, pero me dijeron que era muy bueno para aprender. Prueba de encontrarlo en internet (yo no lo tengo ni en papel, no lo conseguí en su momento y luego abandone mis intentos de conseguirlo).

    Saludos!.
    En línea

    • Imprimir
    Páginas: [1]   Ir Arriba
    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • Otros »
    • [Haskell] Duda con función que devuelve una dupla de una lista de duplas
     

    • SMF | SMF © 2013, Simple Machines
    • XHTML
    • RSS
    • WAP2
    Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso... Learn more